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 方法中进行初始化,具体逻辑根据项目来确定。

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

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

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

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

扫描二维码关注公众号,回复: 3172113 查看本文章

苹果端:

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

  2、Info.plist 里设置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 作为启动入口

  

  

 

猜你喜欢

转载自www.cnblogs.com/starkay/p/9642417.html