iOS JMLink SDK 常见问题

  • 完全兼容
  • 适配注意事项:
    • 微信初始化参考这段代码,universalLink严格按照该格式填写:
    //wxAppID从微信后台获取,universalLink_domain 从极光控制台获取
    [WXApi registerApp:@"wxAppID" universalLink:@"universalLink_domain"];
  • 微信开放平台后台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将恢复正常 jmlink-iosjmlink-ios
  • 自动打包和手动打包,使用xcodebuild自动打包会影响 Universal link的使用,请使用手动打包

这是苹果iOS 出现的系统bug导致的(偶然发生的),目前发现会偶现的系统是iOS 11.2+ ,解决方法就是“删除App,重启设备,重新安装App”,苹果方面目前还没有完全解决这个问题,我们将持续跟进。

如果 web 端集成了 JS SDK ,检查 web 端的集成和传参,大部分是因为 web 端集成和传参导致。如果还不能定位请社区提问或者发邮件提问题。

微信在 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”,怎么解决?

jmlink-ios

进入苹果开发者帐号,将当前App ID 的Associated Domains 设置成Enable,如下图:

jmlink-ios

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中是否包含了所有的极光魔链分配的域名

jmlink-ios

第三步,app重新签名之后,核对下bundle ID 和Team ID,与后台中的app信息是否一致

如何获取正确的team ID 和 bundle ID,如图

jmlink-ios

第四步,当后台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提审的时候,需要勾选以下选项

jmlink-ios

(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 配置成功。


Copyright 2011-2020, jiguang.cn, All Rights Reserved.
粤ICP备12056275号-13 深圳市和讯华谷信息技术有限公司

Documentation built with MkDocs.