Unity接入友盟分享遇到的坑


  最近項目接了一下友盟分享的SDK,中間遇到了幾個坑,寫下幾條注意事項記錄一下。

  接入之前需要准備友盟開發者賬號,相應平台開發者賬號(微信、QQ、新浪微博)等...

 

安卓端:

  1、確保 AndroidManifest.xml 中聲名了相應權限(網絡權限、獲取已安裝應用等)一般平台官方文檔會寫明所需權限

  2、在 AndroidManifest.xml 內聲明相應Activity,例如微信分享(xxx.wxapi.WXEntryActivity,xxx為apk完整包名),QQ授權(com.tencent.tauth.AuthActivity)等,並確保聲明無誤

  3、在調用分享之前,必須初始化平台參數,友盟AppID,以及對於平台appid,AppSecret等參數,每個平台參數不一致,查看官方文檔確定,可以直接把參數放在 xml 的 meta-data 上 Application 啟動后的 onCreate 方法中進行初始化,具體邏輯根據項目來確定。 

 1 @Override
 2     public void onCreate() {
 3         super.onCreate();
 4         UMConfigure.init(this,"5a12384aa40fa3551f0001d1","umeng",UMConfigure.DEVICE_TYPE_PHONE,"");
 5         PlatformConfig.setWeixin("wxdc1e388c3822c80b", "3baf1193c85774b3fd9d18447d76cab0");
 6         //豆瓣RENREN平台目前只能在服務器端配置
 7         PlatformConfig.setSinaWeibo("3921700954", "04b48b094faeb16683c32669824ebdad","http://sns.whalecloud.com");
 8         PlatformConfig.setYixin("yxc0614e80c9304c11b0391514d09f13bf");
 9         PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba");
10         PlatformConfig.setTwitter("3aIN7fuF685MuZ7jtXkQxalyi", "MK6FEYG63eWcpDFgRYw4w9puJhzDl0tyuqWjZ3M7XJuuG7mMbO");
11         PlatformConfig.setAlipay("2015111700822536");
12         PlatformConfig.setLaiwang("laiwangd497e70d4", "d497e70d4c3e4efeab1381476bac4c5e");
13         PlatformConfig.setPinterest("1439206");
14         PlatformConfig.setKakao("e4f60e065048eb031e235c806b31c70f");
15         PlatformConfig.setDing("dingoalmlnohc0wggfedpk");
16         PlatformConfig.setVKontakte("5764965","5My6SNliAaLxEm3Lyd9J");
17         PlatformConfig.setDropbox("oz8v5apet3arcdy","h7p2pjbzkkxt02a");
18         PlatformConfig.setYnote("9c82bf470cba7bd2f1819b0ee26f86c6ce670e9b");
19     }
初始化

  或許你在一切都准備好之后,興致沖沖的打包,安裝,點擊分享,QQ好友,成功。QQ空間,成功。感覺完成了重要使命,hahaha。然后點擊微信,沒反應(或者閃一下),what??? 一頓調試之后,無果,fuck!!!   按下面步驟查一下吧:

    (1)  查看微信后台包名是否和應用包名一致(微信開放平台  ==》 管理中心   ==》 點擊查看  ==》 開發信息  ),包括appid,AppSecret 等。

    (2)  下載工具 (傳送門)安裝到手機,查看一下打包到手機的apk簽名是不是和后台一致,不一致就更換相應簽名證書,或者更改后台信息。

    (3)  如果只能正確分享,收不到回調,查看 WXEntryActivity 再三查看配置的是不是正確吧。

1  <activity
2             android:name=".wxapi.WXEntryActivity"
3             android:configChanges="keyboardHidden|orientation|screenSize"
4             android:exported="true"
5             android:theme="@android:style/Theme.Translucent.NoTitleBar" />
微信回調

 

蘋果端:

  1、Unity3D導出到Xcode,打開 Info.plist 文件,或者 Info 里設置 URL Types 設置相應平台所需appid,具體設置規則查看官方文檔。

  2、Info.plist 里設置SSO白名單,不然無法進行應用間跳轉,同樣規則看文檔

  1 <key>LSApplicationQueriesSchemes</key>
  2 <array>
  3     <!-- 微信 URL Scheme 白名單-->
  4     <string>wechat</string>
  5     <string>weixin</string>
  6 
  7     <!-- 新浪微博 URL Scheme 白名單-->
  8     <string>sinaweibohd</string>
  9     <string>sinaweibo</string>
 10     <string>sinaweibosso</string>
 11     <string>weibosdk</string>
 12     <string>weibosdk2.5</string>
 13 
 14     <!-- QQ、Qzone URL Scheme 白名單-->
 15     <string>mqqapi</string>
 16     <string>mqq</string>
 17     <string>mqqOpensdkSSoLogin</string>
 18     <string>mqqconnect</string>
 19     <string>mqqopensdkdataline</string>
 20     <string>mqqopensdkgrouptribeshare</string>
 21     <string>mqqopensdkfriend</string>
 22     <string>mqqopensdkapi</string>
 23     <string>mqqopensdkapiV2</string>
 24     <string>mqqopensdkapiV3</string>
 25     <string>mqqopensdkapiV4</string>
 26     <string>mqzoneopensdk</string>
 27     <string>wtloginmqq</string>
 28     <string>wtloginmqq2</string>
 29     <string>mqqwpa</string>
 30     <string>mqzone</string>
 31     <string>mqzonev2</string>
 32     <string>mqzoneshare</string>
 33     <string>wtloginqzone</string>
 34     <string>mqzonewx</string>
 35     <string>mqzoneopensdkapiV2</string>
 36     <string>mqzoneopensdkapi19</string>
 37     <string>mqzoneopensdkapi</string>
 38     <string>mqqbrowser</string>
 39     <string>mttbrowser</string>
 40     <string>tim</string>
 41     <string>timapi</string>
 42     <string>timopensdkfriend</string>
 43     <string>timwpa</string>
 44     <string>timgamebindinggroup</string>
 45     <string>timapiwallet</string>
 46     <string>timOpensdkSSoLogin</string>
 47     <string>wtlogintim</string>
 48     <string>timopensdkgrouptribeshare</string>
 49     <string>timopensdkapiV4</string>
 50     <string>timgamebindinggroup</string>
 51     <string>timopensdkdataline</string>
 52     <string>wtlogintimV1</string>
 53     <string>timapiV1</string>
 54 
 55     <!-- 支付寶 URL Scheme 白名單-->
 56     <string>alipay</string>
 57     <string>alipayshare</string>
 58 
 59     <!-- 釘釘 URL Scheme 白名單-->
 60       <string>dingtalk</string>
 61       <string>dingtalk-open</string>
 62 
 63     <!--Linkedin URL Scheme 白名單-->
 64     <string>linkedin</string>
 65     <string>linkedin-sdk2</string>
 66     <string>linkedin-sdk</string>
 67 
 68     <!-- 點點蟲 URL Scheme 白名單-->
 69     <string>laiwangsso</string>
 70 
 71     <!-- 易信 URL Scheme 白名單-->
 72     <string>yixin</string>
 73     <string>yixinopenapi</string>
 74 
 75     <!-- instagram URL Scheme 白名單-->
 76     <string>instagram</string>
 77 
 78     <!-- whatsapp URL Scheme 白名單-->
 79     <string>whatsapp</string>
 80 
 81     <!-- line URL Scheme 白名單-->
 82     <string>line</string>
 83 
 84     <!-- Facebook URL Scheme 白名單-->
 85     <string>fbapi</string>
 86     <string>fb-messenger-api</string>
 87     <string>fb-messenger-share-api</string>
 88     <string>fbauth2</string>
 89     <string>fbshareextension</string>
 90 
 91     <!-- Kakao URL Scheme 白名單-->  
 92     <!-- 注:以下第一個參數需替換為自己的kakao appkey--> 
 93     <!-- 格式為 kakao + "kakao appkey"-->    
 94     <string>kakaofa63a0b2356e923f3edd6512d531f546</string>
 95     <string>kakaokompassauth</string>
 96     <string>storykompassauth</string>
 97     <string>kakaolink</string>
 98     <string>kakaotalk-4.5.0</string>
 99     <string>kakaostory-2.9.0</string>
100 
101    <!-- pinterest URL Scheme 白名單-->  
102     <string>pinterestsdk.v1</string>
103 
104    <!-- Tumblr URL Scheme 白名單-->  
105     <string>tumblr</string>
106 
107    <!-- 印象筆記 -->
108     <string>evernote</string>
109     <string>en</string>
110     <string>enx</string>
111     <string>evernotecid</string>
112     <string>evernotemsg</string>
113 
114    <!-- 有道雲筆記-->
115     <string>youdaonote</string>
116     <string>ynotedictfav</string>
117     <string>com.youdao.note.todayViewNote</string>
118     <string>ynotesharesdk</string>
119 
120    <!-- Google+-->
121     <string>gplus</string>
122 
123    <!-- Pocket-->
124     <string>pocket</string>
125     <string>readitlater</string>
126     <string>pocket-oauth-v1</string>
127     <string>fb131450656879143</string>
128     <string>en-readitlater-5776</string>
129     <string>com.ideashower.ReadItLaterPro3</string>
130     <string>com.ideashower.ReadItLaterPro</string>
131     <string>com.ideashower.ReadItLaterProAlpha</string>
132     <string>com.ideashower.ReadItLaterProEnterprise</string>
133 
134    <!-- VKontakte-->
135     <string>vk</string>
136     <string>vk-share</string>
137     <string>vkauthorize</string>
138 
139    <!-- Twitter-->
140     <string>twitter</string>
141     <string>twitterauth</string>
142 </array>
SSO白名單

  3、其他權限,比如相冊訪問等,添加相應權限

  4、Build Settings 里設置 Other Linker Flags 添加 -ObjC (注意大小寫)

  5、調用分享之前在代碼中初始化平台appid,AppSecret 等參數,初始化位置根據項目要求調整

  6、在 UnityAppContriller 中設置回調

1 - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
2 {
3     BOOL result = [[UMSocialManager defaultManager] handleOpenURL:url];
4     if (!result) {
5         // 其他如支付等SDK的回調
6     }
7     return result;
8 }
分享回調

  或者添加自定義腳本

#import "UnityAppController.h"
#import <UMShare/UMShare.h>

@interface AppControllerWithShare : UnityAppController
    
@end

IMPL_APP_CONTROLLER_SUBCLASS (AppControllerWithShare)


@implementation AppControllerWithShare

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options
{
    //6.3的新的API調用,是為了兼容國外平台(例如:新版facebookSDK,VK等)的調用[如果用6.2的api調用會沒有回調],對國內平台沒有影響
    BOOL result = [[UMSocialManager defaultManager]  handleOpenURL:url options:options];
    if (!result) {
        // 其他如支付等SDK的回調
    }
    return result;
}


- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
    BOOL result = [[UMSocialManager defaultManager] handleOpenURL:url];
    if (!result) {
        // 其他如支付等SDK的回調
    }
    return result;
}

@end
自定義回調

  IMPL_APP_CONTROLLER_SUBCLASS (AppControllerWithShare)  

  此行作用就是把 AppControllerWithShare 作為啟動入口

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM