最近項目接了一下友盟分享的SDK,中間遇到了幾個坑,寫下幾條注意事項記錄一下。html
接入以前須要準備友盟開發者帳號,相應平臺開發者帳號(微信、QQ、新浪微博)等...android
安卓端:api
一、確保 AndroidManifest.xml 中聲名了相應權限(網絡權限、獲取已安裝應用等)通常平臺官方文檔會寫明所需權限服務器
二、在 AndroidManifest.xml 內聲明相應Activity,例如微信分享(xxx.wxapi.WXEntryActivity,xxx爲apk完整包名),QQ受權(com.tencent.tauth.AuthActivity)等,並確保聲明無誤微信
三、在調用分享以前,必須初始化平臺參數,友盟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!!! 按下面步驟查一下吧:app
(1) 查看微信後臺包名是否和應用包名一致(微信開放平臺 ==》 管理中心 ==》 點擊查看 ==》 開發信息 ),包括appid,AppSecret 等。ide
(2) 下載工具 (傳送門)安裝到手機,查看一下打包到手機的apk簽名是否是和後臺一致,不一致就更換相應簽名證書,或者更改後臺信息。工具
(3) 若是隻能正確分享,收不到回調,查看 WXEntryActivity 再三查看配置的是否是正確吧。ui
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" />
蘋果端:
一、Unity3D導出到Xcode,打開 Info.plist 文件,或者 Info 裏設置 URL Types 設置相應平臺所需appid,具體設置規則查看官方文檔。
二、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>
三、其餘權限,好比相冊訪問等,添加相應權限
四、Build Settings 裏設置 Other Linker Flags 添加 -ObjC (注意大小寫)
五、調用分享以前在代碼中初始化平臺appid,AppSecret 等參數,初始化位置根據項目要求調整
六、在 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 做爲啓動入口