最近项目接了一下友盟分享的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 方法中进行初始化,具体逻辑根据项目来确定。

 @Override
public void onCreate() {
super.onCreate();
UMConfigure.init(this,"5a12384aa40fa3551f0001d1","umeng",UMConfigure.DEVICE_TYPE_PHONE,"");
PlatformConfig.setWeixin("wxdc1e388c3822c80b", "3baf1193c85774b3fd9d18447d76cab0");
//豆瓣RENREN平台目前只能在服务器端配置
PlatformConfig.setSinaWeibo("3921700954", "04b48b094faeb16683c32669824ebdad","http://sns.whalecloud.com");
PlatformConfig.setYixin("yxc0614e80c9304c11b0391514d09f13bf");
PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba");
PlatformConfig.setTwitter("3aIN7fuF685MuZ7jtXkQxalyi", "MK6FEYG63eWcpDFgRYw4w9puJhzDl0tyuqWjZ3M7XJuuG7mMbO");
PlatformConfig.setAlipay("2015111700822536");
PlatformConfig.setLaiwang("laiwangd497e70d4", "d497e70d4c3e4efeab1381476bac4c5e");
PlatformConfig.setPinterest("1439206");
PlatformConfig.setKakao("e4f60e065048eb031e235c806b31c70f");
PlatformConfig.setDing("dingoalmlnohc0wggfedpk");
PlatformConfig.setVKontakte("5764965","5My6SNliAaLxEm3Lyd9J");
PlatformConfig.setDropbox("oz8v5apet3arcdy","h7p2pjbzkkxt02a");
PlatformConfig.setYnote("9c82bf470cba7bd2f1819b0ee26f86c6ce670e9b");
}

初始化

  或许你在一切都准备好之后,兴致冲冲的打包,安装,点击分享,QQ好友,成功。QQ空间,成功。感觉完成了重要使命,hahaha。然后点击微信,没反应(或者闪一下),what??? 一顿调试之后,无果,fuck!!!   按下面步骤查一下吧:

    (1)  查看微信后台包名是否和应用包名一致(微信开放平台  ==》 管理中心   ==》 点击查看  ==》 开发信息  ),包括appid,AppSecret 等。

    (2)  下载工具 (传送门)安装到手机,查看一下打包到手机的apk签名是不是和后台一致,不一致就更换相应签名证书,或者更改后台信息。

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

  <activity
android:name=".wxapi.WXEntryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />

微信回调

苹果端:

  1、Unity3D导出到Xcode,打开 Info.plist 文件,或者 Info 里设置 URL Types 设置相应平台所需appid,具体设置规则查看官方文档。

  2、Info.plist 里设置SSO白名单,不然无法进行应用间跳转,同样规则看文档

 <key>LSApplicationQueriesSchemes</key>
<array>
<!-- 微信 URL Scheme 白名单-->
<string>wechat</string>
<string>weixin</string> <!-- 新浪微博 URL Scheme 白名单-->
<string>sinaweibohd</string>
<string>sinaweibo</string>
<string>sinaweibosso</string>
<string>weibosdk</string>
<string>weibosdk2.5</string> <!-- QQ、Qzone URL Scheme 白名单-->
<string>mqqapi</string>
<string>mqq</string>
<string>mqqOpensdkSSoLogin</string>
<string>mqqconnect</string>
<string>mqqopensdkdataline</string>
<string>mqqopensdkgrouptribeshare</string>
<string>mqqopensdkfriend</string>
<string>mqqopensdkapi</string>
<string>mqqopensdkapiV2</string>
<string>mqqopensdkapiV3</string>
<string>mqqopensdkapiV4</string>
<string>mqzoneopensdk</string>
<string>wtloginmqq</string>
<string>wtloginmqq2</string>
<string>mqqwpa</string>
<string>mqzone</string>
<string>mqzonev2</string>
<string>mqzoneshare</string>
<string>wtloginqzone</string>
<string>mqzonewx</string>
<string>mqzoneopensdkapiV2</string>
<string>mqzoneopensdkapi19</string>
<string>mqzoneopensdkapi</string>
<string>mqqbrowser</string>
<string>mttbrowser</string>
<string>tim</string>
<string>timapi</string>
<string>timopensdkfriend</string>
<string>timwpa</string>
<string>timgamebindinggroup</string>
<string>timapiwallet</string>
<string>timOpensdkSSoLogin</string>
<string>wtlogintim</string>
<string>timopensdkgrouptribeshare</string>
<string>timopensdkapiV4</string>
<string>timgamebindinggroup</string>
<string>timopensdkdataline</string>
<string>wtlogintimV1</string>
<string>timapiV1</string> <!-- 支付宝 URL Scheme 白名单-->
<string>alipay</string>
<string>alipayshare</string> <!-- 钉钉 URL Scheme 白名单-->
<string>dingtalk</string>
<string>dingtalk-open</string> <!--Linkedin URL Scheme 白名单-->
<string>linkedin</string>
<string>linkedin-sdk2</string>
<string>linkedin-sdk</string> <!-- 点点虫 URL Scheme 白名单-->
<string>laiwangsso</string> <!-- 易信 URL Scheme 白名单-->
<string>yixin</string>
<string>yixinopenapi</string> <!-- instagram URL Scheme 白名单-->
<string>instagram</string> <!-- whatsapp URL Scheme 白名单-->
<string>whatsapp</string> <!-- line URL Scheme 白名单-->
<string>line</string> <!-- Facebook URL Scheme 白名单-->
<string>fbapi</string>
<string>fb-messenger-api</string>
<string>fb-messenger-share-api</string>
<string>fbauth2</string>
<string>fbshareextension</string> <!-- Kakao URL Scheme 白名单-->
<!-- 注:以下第一个参数需替换为自己的kakao appkey-->
<!-- 格式为 kakao + "kakao appkey"-->
<string>kakaofa63a0b2356e923f3edd6512d531f546</string>
<string>kakaokompassauth</string>
<string>storykompassauth</string>
<string>kakaolink</string>
<string>kakaotalk-4.5.0</string>
<string>kakaostory-2.9.0</string> <!-- pinterest URL Scheme 白名单-->
<string>pinterestsdk.v1</string> <!-- Tumblr URL Scheme 白名单-->
<string>tumblr</string> <!-- 印象笔记 -->
<string>evernote</string>
<string>en</string>
<string>enx</string>
<string>evernotecid</string>
<string>evernotemsg</string> <!-- 有道云笔记-->
<string>youdaonote</string>
<string>ynotedictfav</string>
<string>com.youdao.note.todayViewNote</string>
<string>ynotesharesdk</string> <!-- Google+-->
<string>gplus</string> <!-- Pocket-->
<string>pocket</string>
<string>readitlater</string>
<string>pocket-oauth-v1</string>
<string>fb131450656879143</string>
<string>en-readitlater-5776</string>
<string>com.ideashower.ReadItLaterPro3</string>
<string>com.ideashower.ReadItLaterPro</string>
<string>com.ideashower.ReadItLaterProAlpha</string>
<string>com.ideashower.ReadItLaterProEnterprise</string> <!-- VKontakte-->
<string>vk</string>
<string>vk-share</string>
<string>vkauthorize</string> <!-- Twitter-->
<string>twitter</string>
<string>twitterauth</string>
</array>

SSO白名单

  3、其他权限,比如相册访问等,添加相应权限

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

  5、调用分享之前在代码中初始化平台appid,AppSecret 等参数,初始化位置根据项目要求调整

  6、在 UnityAppContriller 中设置回调

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

分享回调

  或者添加自定义脚本

#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 作为启动入口

  

 

最新文章

  1. 你真的会玩SQL吗?冷落的Top和Apply
  2. win7 远程桌面关机
  3. ajax案例源码
  4. mac 下tomcat启动报错 unknown host
  5. Objc中2维指针作为输出参数时由ARC及@autoreleasepool引发的血案
  6. Delphi 中的 procedure of object (类方法存在一个隐藏参数self),简单深刻 good
  7. 【windows核心编程】 第六章 线程基础
  8. Servlet工作原理
  9. codeforces 609E. Minimum spanning tree for each edge 树链剖分
  10. NOIP2016DAY1题解
  11. Vue.js 系列教程 ②
  12. SQL连接、合并、子查询
  13. linux中centros6.7安装php5.6,httpd-2.2.19(web产品化)遇到的问题总结
  14. PHP安装BCMath扩展
  15. php处理手机号中间的四位为星号****
  16. 【Spring】Spring中用到的设计模式
  17. C#5种方式生成缩略图
  18. UVa LA 3695 - Distant Galaxy 前缀和,状态拆分,动态规划 难度: 2
  19. .Net WebApi 支持跨域访问使用 Microsoft.AspNet.WebApi.Cors
  20. java 数据结构与算法---树

热门文章

  1. 14.移动端图片浏览组件 react-wx-images-viewer
  2. socket小计
  3. 三本毕业(非科班),四次阿里巴巴面试,终拿 offer(大厂面经)
  4. PHP中静态(static)调用非静态方法详解--调用!!!
  5. 前端日期时间处理建议使用Momen
  6. 2019-2020-1 20199325《Linux内核原理与分析》第二周作业
  7. Session服务器之Redis
  8. 标准SQL语句大全【持续更新】(navicat12版亲测有效)
  9. R 语言命令行参数处理
  10. MySQL升级-CentOS6.8