Unity接入ShareSDK實現QQ登入和QQ分享、微信分享
阿新 • • 發佈:2021-06-17
原文連結:Unity接入ShareSDK實現QQ登入和QQ分享、微信分享
由於微信登入需要企業稽核,我這裡就不說明了,有需要的可以去官網看一下文件,和QQ登入比多了一個打包的步驟。
第一步:到官網申請開發者賬號:MOB
第二步:到騰訊QQ開放平臺申請開發者賬號並建立應用:騰訊開放平臺
點選建立應用。然後會有一個:APPID和APPKEY 保留下來它
第三步:在Mob官網建立自己的應用:http://dashboard.mob.com/#!/index
保留下應用的APPID和KEY
第四步:在Mob官網下載Unity專用SDK包進行匯入到專案中去: 點選下載
第五步:在Unity工程中掛載上:ShareSDK.cs指令碼然後將Mob中你建立的應用的Key等資訊填寫進去
第六步:在ShareSDK指令碼中找到DevInfo定義的地方找到QQ類:修改其中的ID和KEY。
就修改成騰訊開放平臺中你建立的應用的ID和KEY
第七步:建立一個新的指令碼掛載到相同的物體上,然後這樣...
- using cn.sharesdk.unity3d;
-
- //定義ShareSDK
- private ShareSDK shareSdk;
-
- void Start()
- {
- //獲取ShareSDK
- shareSdk = GetComponent<ShareSDK>();
- }
-
-
- /// <summary>
- /// 使用者授權 QQ
- /// </summary>
- public void QQLogin()
- {
- //設定回掉函式
- shareSdk.authHandler = AuthResultHandler;
- //請求授權
- shareSdk.Authorize(PlatformType.QQ);
- }
-
- /// <summary>
- /// 授權回掉
- /// </summary>
- /// <param name="reqID"></param>
- /// <param name="state"></param>
- /// <param name="type"></param>
- /// <param name="result"></param>
- void AuthResultHandler(int reqID, ResponseState state, PlatformType type, Hashtable result)
- {
- switch (state)
- {
- case ResponseState.Success:
- print("authorize success !");
- Hashtable user = shareSdk.GetAuthInfo(PlatformType.QQ);
- print(MiniJSON.jsonEncode(user));
- break;
- case ResponseState.Fail:
- print("fail! throwable stack = " + result["stack"] + "; error msg = " + result["msg"]);
- break;
- case ResponseState.Cancel:
- print("cancel !");
- break;
- }
- }
第八步:設定分享(可以顯示全平臺分享和指定平臺分享)
分享的時候需要傳遞很多的屬性進去:
詳解可以參考Demo.cs指令碼(SDK裡自帶的)裡面有常用的屬性寫法
還有一些不常用的屬性請看:ShareContent.cs指令碼
下面給一個示例程式碼:
- //在Start初始化的時候設定回撥
- void Start()
- {
- //獲取ShareSDK
- shareSdk = GetComponent<ShareSDK>();
- shareSdk.shareHandler = ShareResultHandler;
- }
-
-
- public void fenxiang__QQ() //QQ分享
- {
- ShareContent content = new ShareContent();
- content.SetTitle("測試");
- content.SetText("測試文字");
- content.SetTitleUrl(
- "https://www.gamersky.com/showimage/id_gamersky.shtml?http://img1.gamersky.com/image2019/07/20190725_ls_red_141_2/gamersky_042origin_083_2019725182972C.jpg");
- content.SetImageUrl(
- "https://www.gamersky.com/showimage/id_gamersky.shtml?http://img1.gamersky.com/image2019/07/20190725_ls_red_141_2/gamersky_042origin_083_2019725182972C.jpg");
- content.SetShareType(ContentType.Image);
- shareSdk.ShareContent(PlatformType.QQ, content);
- }
-
- public void fenxiang_WX()
- {
- ShareContent content = new ShareContent();
- content.SetTitle("標題");
- content.SetText("內容");
- content.SetImageUrl("https://www.gamersky.com/showimage/id_gamersky.shtml?http://img1.gamersky.com/image2019/07/20190725_ls_red_141_2/gamersky_042origin_083_2019725182972C.jpg");
- content.SetUrl("");
- content.SetShareType(ContentType.Image);
- shareSdk.ShareContent(PlatformType.WeChat, content);
- }
-
- //以下為回撥的定義:
- void ShareResultHandler(int reqID, ResponseState state, PlatformType type, Hashtable result)
- {
- myConsole.text += type.ToString();
- switch (state)
- {
- case ResponseState.Success:
- print("分享成功" + MiniJSON.jsonEncode(result));
- break;
- case ResponseState.Fail:
- print("分享失敗");
- break;
- case ResponseState.Cancel:
- print("分享取消");
- break;
- }
- }
上面的這種寫法是指定平臺分享:
如果將
shareSdk.ShareContent(PlatformType.QQ, content);
替換成:
ssdk.ShowPlatformList(null, content, 100, 100);
即可以顯示全平臺分享
其中分享傳遞的引數大家需要根據分享的平臺來進行設定!
可以參考Demo.cs或者關注Mob的技術論壇:http://bbs.mob.com/forum.php