1. 程式人生 > 其它 >Unity接入ShareSDK實現QQ登入和QQ分享、微信分享

Unity接入ShareSDK實現QQ登入和QQ分享、微信分享

原文連結: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

第七步:建立一個新的指令碼掛載到相同的物體上,然後這樣...

  1. using cn.sharesdk.unity3d;
  2. //定義ShareSDK
  3. private ShareSDK shareSdk;
  4. void Start()
  5. {
  6. //獲取ShareSDK
  7. shareSdk = GetComponent<ShareSDK>();
  8. }
  9. /// <summary>
  10. /// 使用者授權 QQ
  11. /// </summary>
  12. public void QQLogin()
  13. {
  14. //設定回掉函式
  15. shareSdk.authHandler = AuthResultHandler;
  16. //請求授權
  17. shareSdk.Authorize(PlatformType.QQ);
  18. }
  19. /// <summary>
  20. /// 授權回掉
  21. /// </summary>
  22. /// <param name="reqID"></param>
  23. /// <param name="state"></param>
  24. /// <param name="type"></param>
  25. /// <param name="result"></param>
  26. void AuthResultHandler(int reqID, ResponseState state, PlatformType type, Hashtable result)
  27. {
  28. switch (state)
  29. {
  30. case ResponseState.Success:
  31. print("authorize success !");
  32. Hashtable user = shareSdk.GetAuthInfo(PlatformType.QQ);
  33. print(MiniJSON.jsonEncode(user));
  34. break;
  35. case ResponseState.Fail:
  36. print("fail! throwable stack = " + result["stack"] + "; error msg = " + result["msg"]);
  37. break;
  38. case ResponseState.Cancel:
  39. print("cancel !");
  40. break;
  41. }
  42. }

第八步:設定分享(可以顯示全平臺分享和指定平臺分享)

分享的時候需要傳遞很多的屬性進去:

詳解可以參考Demo.cs指令碼(SDK裡自帶的)裡面有常用的屬性寫法

還有一些不常用的屬性請看:ShareContent.cs指令碼

下面給一個示例程式碼:

  1. //在Start初始化的時候設定回撥
  2. void Start()
  3. {
  4. //獲取ShareSDK
  5. shareSdk = GetComponent<ShareSDK>();
  6. shareSdk.shareHandler = ShareResultHandler;
  7. }
  8. public void fenxiang__QQ() //QQ分享
  9. {
  10. ShareContent content = new ShareContent();
  11. content.SetTitle("測試");
  12. content.SetText("測試文字");
  13. content.SetTitleUrl(
  14. "https://www.gamersky.com/showimage/id_gamersky.shtml?http://img1.gamersky.com/image2019/07/20190725_ls_red_141_2/gamersky_042origin_083_2019725182972C.jpg");
  15. content.SetImageUrl(
  16. "https://www.gamersky.com/showimage/id_gamersky.shtml?http://img1.gamersky.com/image2019/07/20190725_ls_red_141_2/gamersky_042origin_083_2019725182972C.jpg");
  17. content.SetShareType(ContentType.Image);
  18. shareSdk.ShareContent(PlatformType.QQ, content);
  19. }
  20. public void fenxiang_WX()
  21. {
  22. ShareContent content = new ShareContent();
  23. content.SetTitle("標題");
  24. content.SetText("內容");
  25. 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");
  26. content.SetUrl("");
  27. content.SetShareType(ContentType.Image);
  28. shareSdk.ShareContent(PlatformType.WeChat, content);
  29. }
  30. //以下為回撥的定義:
  31. void ShareResultHandler(int reqID, ResponseState state, PlatformType type, Hashtable result)
  32. {
  33. myConsole.text += type.ToString();
  34. switch (state)
  35. {
  36. case ResponseState.Success:
  37. print("分享成功" + MiniJSON.jsonEncode(result));
  38. break;
  39. case ResponseState.Fail:
  40. print("分享失敗");
  41. break;
  42. case ResponseState.Cancel:
  43. print("分享取消");
  44. break;
  45. }
  46. }

上面的這種寫法是指定平臺分享:

如果將

 shareSdk.ShareContent(PlatformType.QQ, content);

替換成:

ssdk.ShowPlatformList(null, content, 100, 100);

即可以顯示全平臺分享

其中分享傳遞的引數大家需要根據分享的平臺來進行設定!

可以參考Demo.cs或者關注Mob的技術論壇:http://bbs.mob.com/forum.php