最近在更新友盟分享SDK,分享给QQ好友后,会显示“未识别应用”。所以就记录下这次更新中遇到的问题及需要注意的地方。(分享给微信好友后,会显示“未验证应用”的问题已修复)
版本要求:
iOS9之后
配置Universal Links
1,文件内容
{ "applinks": { "apps": [], "details": [ { "appID": "9JA89QQLNQ.com.apple.wwdc", "paths": [ "/wwdc/news/", "/videos/wwdc/2015*", "/qq_conn/222222/*" ] }, { "appID":"ABCD1234.com.apple.wwdc", "paths": [ "*", "/qq_conn/222222/*" ] } ] } }
{ "applinks": { "apps": [], "details": [ { "appID": "9JA89QQLNQ.com.apple.wwdc", "paths": [ "/wwdc/news/", "/videos/wwdc/2015*", "/qq_conn/222222/*" ] }] } }
- paths 中需添加"/qq_conn/{APPID} /* " ,{APPID}为互联当前应用的appid
2,文件路径,二选一(不带任何后缀),上传apple-app-site-association文件。
https:// {host} /apple-app-site-association
https:// {host} /.well-known/apple-app-site-association
根目录下即:https://www.ABCD.com/apple-app-site-association,
.well-known目录下即:https://www.ABCD.com/.well-known/apple-app-site-association。
3,填写Universal Link
QQ互联平台注册APP信息(注意,不是腾讯开放平台,两码事)
https://connect.qq.com/manage.html#/验证完成
AppDelegate配置
UniversalLink : https://www.abcd.com/qq_conn/xxxxxxxx8311
#import <UMShare/UMShare.h> - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // UMConfigure 通用设置,请参考SDKs集成做统一初始化。 // 以下仅列出U-Share初始化部分 // U-Share 平台设置 [self confitUShareSettings]; [self configUSharePlatforms]; // Custom code return YES; }
-(void)confitUShareSettings{ //配置微信平台的Universal Links //微信和QQ完整版会校验合法的universalLink,不设置会在初始化平台失败 [UMSocialGlobal shareInstance].universalLinkDic = @{ @(UMSocialPlatformType_WechatSession):TCUMUnivernalLink, @(UMSocialPlatformType_QQ):TCUMQQUnivernalLink}; } -(void)configUSharePlatforms{ /* 设置微信的appKey和appSecret */ [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_WechatSession appKey:TCUMShareAppID appSecret:TCUMShareAppSecret redirectURL:TCUMShareAppRedirectURL]; /* 设置QQ的appKey和appSecret */ /* 设置分享到QQ互联的appID * U-Share SDK为了兼容大部分平台命名,统一用appKey和appSecret进行参数设置,而QQ平台仅需将appID作为U-Share的appKey参数传进即可。 */ [[UMSocialManager defaultManager] setPlaform:UMSocialPlatformType_QQ appKey:TCUMShareQQAppID appSecret:nil redirectURL:TCUMShareAppRedirectURL]; }
设置系统回调
// 支持所有iOS系统 - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { //6.3的新的API调用,是为了兼容国外平台(例如:新版facebookSDK,VK等)的调用[如果用6.2的api调用会没有回调],对国内平台没有影响 BOOL result = [[UMSocialManager defaultManager] handleOpenURL:url sourceApplication:sourceApplication annotation:annotation]; if (!result) { // 其他如支付等SDK的回调 } return result; }
//1.仅支持iOS9以上系统,iOS8及以下系统不会回调 - (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; }
//2.支持目前所有iOS系统 - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { BOOL result = [[UMSocialManager defaultManager] handleOpenURL:url]; if (!result) { // 其他如支付等SDK的回调 } return result; }
//3,设置Universal Links系统回调 - (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray * __nullable restorableObjects))restorationHandler { if (![[UMSocialManager defaultManager] handleUniversalLink:userActivity options:nil]) { // 其他SDK的回调 } return YES; }
Universal Link 相关验证(目前这个验证我还没有验证成功,不知道为什么??)
在 iOS 设备中的备忘录中输入 APP 能识别的链接,然后直接点击此链接,就会直接跳转到你的 app 了。或是长按,在弹出的菜单中出现在
“XXX”中打开
,这也代表着成功。或是你将要测试的网址在
Safari
中打开,在出现的网页上方下滑,可以看到有在“XX”应用中打开
当点击某个链接,直接可以进我们的 app 了,但是我们的目的是要能够获取到用户进来的链接,根据链接来展示给用户相应的内容。
分享验证
卸载App重新安装,分享到QQ好友。“未识别应用”消失!!!
相关文档
https://wiki.connect.qq.com/universal-links适配faq
https://wiki.connect.qq.com/ulink适配通知