Unity 各種平臺(tái)SDK對(duì)接系列文章:Unity 各種平臺(tái)SDK對(duì)接目錄
官方文檔:MobTech ShareSDK文檔
ShareSDK可用于多個(gè)平臺(tái)登錄和分享再菊,無(wú)需再用服務(wù)端温算,本文主要介紹安卓端使用ShareSDK,進(jìn)行微信登錄和分享芝囤。
當(dāng)時(shí)使用的是Unity2019.4.5质和,gradle版本4.0.0队魏。
一限寞、創(chuàng)建應(yīng)用:
1、到微信開(kāi)發(fā)平臺(tái)申請(qǐng)創(chuàng)建應(yīng)用砰琢,申請(qǐng)通過(guò)后獲得appId蘸嘶,appSecret良瞧;
2、到MobTech平臺(tái)創(chuàng)建應(yīng)用亏较,獲得appKey莺褒,appSecret;
二雪情、對(duì)接ShareSDK:
按照官方文檔步驟對(duì)接即可遵岩;
三、一些注意事項(xiàng):
1巡通、launcherTemplate.gradle文件尘执,把需要的各平臺(tái)的appId和appSecret寫在里面,在ShareSDKDevInfo.cs里面更改是無(wú)效的宴凉。
以微信平臺(tái)為例:
// 添加ShareSDK相關(guān)
apply plugin: 'com.mob.sdk'
MobSDK {
// demo 密鑰密碼123456,包名:cn.sharesdk.demo
appKey "moba0b0c0d0"
appSecret "5713f0d88511f9f4cf100cade0610a34"
ShareSDK {
loopShare true
devInfo {
// 微信
Wechat {
// demo
appId "wx4868b35061f87885"
appSecret "64020361b8ec4c99936c0e3999a9f249"
userName "gh_afb25ac019c9"
path "pages/index/index.html?id=1"
withShareTicket true
miniprogramType 2
withShareTicket true
bypassApproval false
enable true
}
// 微信朋友圈
WechatMoments {
// demo
appId "wx4868b35061f87885"
appSecret "64020361b8ec4c99936c0e3999a9f249"
bypassApproval false
enable true
}
}
}
}
2誊锭、如果微信應(yīng)用正在申請(qǐng),測(cè)試可使用Mob官方demo進(jìn)行測(cè)試:
demo應(yīng)用包名:cn.sharesdk.demo弥锄;
demokey.keystore密鑰密碼和別名密碼丧靡,均為123456;
demo應(yīng)用籽暇,Mob的appKey:moba0b0c0d0温治,appSecret:5713f0d88511f9f4cf100cade0610a34;
demo應(yīng)用戒悠,微信的appId:wx4868b35061f87885熬荆,appSecret:64020361b8ec4c99936c0e3999a9f249;
3绸狐、不需要的平臺(tái)卤恳,可以在ShareSDKDevInfo.cs里的DevInfoSet中注釋掉;
四寒矿、使用ShareSDK:
1突琳、場(chǎng)景中掛載ShareSDK.cs和MobSDK.cs;
2符相、使用前拆融,必須要提交ShareSDK隱私協(xié)議的授權(quán)接口:
MobSdk.submitPolicyGrantResult(true);
3、微信登錄主巍,使用ShareSDK的獲取用戶信息接口即可(只會(huì)在第一次跳轉(zhuǎn)到第三方平臺(tái)進(jìn)行授權(quán))冠息,返回結(jié)果包含openId挪凑,unionId孕索,nickName等信息:
private void Start()
{
// 微信登錄,注冊(cè)獲取用戶信息回調(diào)
ShareSDK.showUserHandler = OnGetUserInfoResultHandler;
// 獲取微信用戶信息
ShareSDK.GetUserInfo(PlatformType.WeChat);
}
/// <summary>
/// 微信登錄躏碳,獲取用戶信息回調(diào)
/// </summary>
/// <param name="reqID"></param>
/// <param name="state"></param>
/// <param name="type"></param>
/// <param name="result"></param>
private void OnGetUserInfoResultHandler(int reqID, ResponseState state, PlatformType type, Hashtable result)
{
Debug.Log("微信登錄搞旭,用戶信息回調(diào)結(jié)果");
if (state == ResponseState.Success)
{
Debug.Log("獲取用戶信息成功");
if (result == null || result.Count <= 0)
{
return;
}
Debug.Log(MiniJSON.jsonEncode(result));
// MiniJSON.jsonEncode(result)內(nèi)容如下:
// {"privilege":[], "userTags":"", "sex":0, "openid":"xxx", "unionid":"xxx", "nickname":"xxx", "city":"", "province":"", "headimgurl":"xxx", "country":"", "language":""}
string openId = (string)result["openid"]; // openId
string unionId = (string)result["unionid"]; // unionId
string nickName = (string)result["nickname"]; // 昵稱
string headImgUrl = (string)result["headimgurl"]; // 頭像地址
return;
}
if (state == ResponseState.Fail)
{
// 失敗
Debug.Log("獲得用戶信息失敗");
if (result != null)
{
Debug.Log(MiniJSON.jsonEncode(result));
}
}
else if (state == ResponseState.Cancel)
{
// 取消
Debug.Log("獲得用戶信息取消");
if (result != null)
{
Debug.Log(MiniJSON.jsonEncode(result));
}
}
}
4、微信分享:
/// <summary>
/// 開(kāi)始分享
/// </summary>
/// <param name="platformType">WeChat:微信好友;WeChatMoments:朋友圈</param>
public static void StartShare(PlatformType platformType)
{
ShareContent content = new ShareContent();
content.SetTitle("測(cè)試標(biāo)題");
content.SetUrl("測(cè)試的url");
if (platformType == PlatformType.WeChat)
{
// 分享好友肄渗,設(shè)置文案
content.SetText("測(cè)試描述");
}
// 設(shè)置Icon縮略圖
content.SetImageUrl("測(cè)試Icon的url");
// 分享類型:鏈接
content.SetShareType(ContentType.Webpage);
//通過(guò)分享菜單分享
// ShareSDK.ShowPlatformList(null, content, 100, 100);
// 直接分享
ShareSDK.ShareContent(platformType, content);
}