iOS JMLink SDK 常见问题
Universal link
1. JMLink 是否兼容微信 openSDK1.8.6 以上版本的通用链接(universal links)跳转功能?
- 完全兼容
- 适配注意事项:
- 微信初始化参考这段代码,universalLink严格按照该格式填写:
//wxAppID从微信后台获取,universalLink_domain 从极光控制台获取
[WXApi registerApp:@"wxAppID" universalLink:@"universalLink_domain"];
- 微信开放平台后台Universal links配置,要和上面代码中的保持一致
2. JMLink 是否兼容QQ互联 universal links校验?
- 支持
- 将控制台域名设置里支持universal link 的任意一个域名填入QQ互联即可完成校验。
3. JMLink和App都配置了Universal link,但是无法从微信跳转到App?
确认设备系统是iOS9以上,Universal link仅支持iOS9以上
确认控制台域名设置里所有支持universal link 的域名是否都已填写到 xcode 里
Team ID 是否填写正确,具体操作查看Team ID填写
是否被用户手动取消
- 当使用 Universal link打开App之后,右上角会出现简短的域名地址,点击右上角会取消 Universal link
- 在Safari中打开链接,会出现smart banner,点击“打开”按钮,Universal link将恢复正常
自动打包和手动打包,使用xcodebuild自动打包会影响 Universal link的使用,请使用手动打包
4. 为什么Universal link 配置都正确了,还是会出现失效,无法拉起App的情况?
这是苹果iOS 出现的系统bug导致的(偶然发生的),目前发现会偶现的系统是iOS 11.2+ ,解决方法就是“删除App,重启设备,重新安装App”,苹果方面目前还没有完全解决这个问题,我们将持续跟进。
5. 为什么 scheme 和 universal link 都配置好了,也正常唤起APP了,但是获取不到参数?
如果 web 端集成了 JS SDK ,检查 web 端的集成和传参,大部分是因为 web 端集成和传参导致。如果还不能定位请社区提问或者发邮件提问题。
6. 微信中通用链接(Universal link)被禁用了?
微信在 v6.6.1版本后,禁止了Universal link的使用,将提示右上角打开Safari来拉起App,其它App和浏览器不受影响。微信7.0.5版本后,重新放开了Universal Links的使用。
7. 在编辑Associated Domains 的时候,报错,错误信息“An App ID with Identifier ‘com.XXX’ is not available”,怎么解决?
进入苹果开发者帐号,将当前App ID 的Associated Domains 设置成Enable,如下图:
8. 什么情况safari浏览器出现“无法打开网页,网址无效”的弹窗?
这是因为safari在通过scheme执行跳转时,如果App不存在,系统就会出现这样的提示。
9. App重新签名之后,使用短链无法正常唤起app,如何解决?
第一步,确保app在重新签名之前,可以使用短链接正常唤起
第二步,查看重新签名之后的ipa中有没有包含正确的associated domain
如何查看associated domain
中的包含的内容是否正确?
(1)$ cd /Users/cafei/Desktop/Example
(2)$ unzip example.ipa
(3)$ codesign -d –entitlements - Payload/example.app
查看com.apple.developer.associated-domains
中是否包含了所有的极光魔链分配的域名。
第三步,app重新签名之后,核对下bundle ID 和Team ID,与后台中的app信息是否一致
如何获取正确的team ID 和 bundle ID,如图
第四步,当后台app信息更新之后,需要重新安装app,一定要重新安装app才可以。
第五步,测试
短链接
1. 通过短链进入具体页面后,删除App,重新安装App,依旧进入短链对应的具体页面
程序安装后第一次打开,极光魔链JMLink会跟后台通信实现场景还原。App清除数据后,JMLink会判断程序为第一次安装。此时请求后台并匹配成功。所以会进入具体页面。
用户实际使用时基本不会发生此类情况。属于极小概率事件。
2. 短链内的参数值能动态修改么?
可以,短链支持将参数的动态值作为 query 放在后面
例如:http://a.mlinks.cc/ANax?id=12345
但是,我们不推荐这样使用,推荐通过JS SDK 来设置动态的自定义参数
3. 一键唤起成功,场景还原失败
点击短链接的时间和安装App,第一次打开App的时间在60分钟之内,就会场景还原,(默认60分钟,时间可以在后台进行更改)。
点击短链接一键唤起成功的话,场景还原失败的话,需要debug看下,是否受到了App启动页或者引导页的影响。
场景还原和一键唤起的时候,都会走如下方法
/**
* 注册一个默认的handler,当接收到URL,并且所有的mLink key都没有匹配成功,就会调用默认的handler
* 需要在 AppDelegate 的 didFinishLaunchingWithOptions 中调用
* @param handler mlink的回调
*/
+ (void)registerMLinkDefaultHandler:(void (^_Nonnull)(NSURL * __nonnull url ,NSDictionary * __nullable params))handler;
4. 在微信中点击短链接唤起App,在App中收到的动态参数的值不正确
可能是微信缓存造成的,退出微信登录,重新登录微信点击短链接
5. 在Debug下测试正常,但是在Release下不能正常一键唤起
后台配置的Team ID是否和App的编译证书相匹配
update 相应的provisioning Profiles
6. 手机上在1个小时之内没有点击过短链接,第一次安装出现场景还原
在App之间或者iOS9+ Safari的跳转都是精准匹配的,不会出现这个情况。
在微信中点击短链接或者其它情况下,我们会根据设备的相关参数来进行模糊匹配,比如IP地址,设备型号,分辨率等等,所以若两个用户在同一wifi环境,完全相同一手机型号时,A用户进行了场景还原,B用户只是去安装,B用户在一小时内可能出现场景还原。
因为在测试阶段,大家都是在同一个wifi下,设备型号和分辨率也相同,所以会出现没有点击短链接也场景还原的情况,但是在实际应用过程中,几乎不会出现两个不相识的用户,有一个用户安装被突然的场景还原。
7. 在iOS9以上,使用短链接唤起App,App接收到链接是https://s.mlinkscc/xxxx
,而不是短链接或者在后台填写的scheme uri,为什么?
短链接的样式是 http://xxx.xx/XXXX
iOS9及以上,是通过universal link跳转到APP的,所以APP接收到的是universal link
(注意,短链接和universal link是两个不一样的链接,不要混为一谈)
iOS8以下,App接收到的是后台填写的scheme uri
短链接会根据不同的系统、不同的场景自动解析成universal link或者scheme来唤起App
App发布
1. App Store提审时,对Advertising Identifier(IDFA)的配置
SDK中不会主动获取 IDFA,如应用有使用,建议将 IDFA 赋值给 JMLinkConfig 中 advertisingid 参数。App 在往 AppStore提审的时候,需要勾选以下选项
(1)Serve advertisements within the app
服务app中的广告。如果你的app中集成了广告,你需要勾选这一项。
(2)Attribute this app installation to a previously served advertisement
跟踪广告带来的安装。
(3)Attribute an action taken within this app to a previously served advertisement
跟踪广告带来的用户的后续行为。
(4)Limit Ad Tracking setting in iOS
这一项下的内容其实就是对你的app使用idfa的目的做下确认,只要你选择了采集idfa,那么这一项都是需要勾选的。
其他
1. 什么是URL Scheme,怎么配置
iOS系统中 App之前是相互隔离的,通过URL Scheme,App之间可以相互调用,并且可以传递参数。
在Xcode中,选中Target-> Info -> URL Types。比如填写 JMLinkDemo 的 uri scheme为 jgscheme ,在手机浏览器中输入 jgscheme://,如果可以唤起App,说明该 URL Scheme 配置成功。