iOS常见问题

iOS 无法获取自定义参数?

  1. 检查是否按照文档集成相关代码
  2. 是否将集成好sdk 的ipa包上传到openinstall (ios上传包是方便测试,上传第一个包后可以通过xcode安装的方式进行调试)
  3. 测试时需要将已安装的App卸载,不能覆盖安装测试 (测试时可以使用openinstall 控制中心提供测试网页测试- 在线测试)

每次调用getInstallParmsCompleted方法都会回调,会触发业务重复调用,怎么办?

自SDK 2.2.0开始,SDK内部将会一直保存安装数据,每次调用getInstallParmsCompleted方法都会返回值,如果调用了getInstallParmsCompleted并处理了自己的业务,后续不想再被触发,那么可以自己在业务调用成功时,设置一个标识,不再调用getInstallParmsCompleted方法。例如:

if (![[NSUserDefaults standardUserDefaults] boolForKey:@"isFirst"]) {
    [[OpenInstallSDK defaultManager] getInstallParmsCompleted:^(OpeninstallData*_Nullable appData) {
        //1.如果不管回调是否有参数返回,都不想再处理,比如只想首次打开App时处理或涉及到页面跳转等,可直接修改标示
        [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"isFirst"];

        /*2.如果是存粹在后台处理业务,不涉及到页面(如跳转等业务),且不会影响用户界面操作的情况下,可在**数据返回成功**后修改标示,这样可尽最大可能提高参数获取成功率
        if (appData.data || appData.channelCode) {
            [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"isFirst"];
        }*/
    }];
}

集成iOS端sdk时需要注意的问题是什么?

  1. 不要自己保存动态安装参数,在每次需要用到参数时,请调用安装参数获取方法getInstallParmsCompleted去获取;
  2. 安装参数获取方法getInstallParmsCompleted尽量写在业务场景需要参数的位置调用(在业务场景时,网络一般都是畅通的)。
    原因是iOS首次安装、首次启动的app,会询问用户获取网络权限,用户允许后SDK才能正常联网去获取参数。如果调用过早,可能导致网络权限还未允许就被调用,导致参数无法及时拿到,误以为参数不存在(此时getInstallParmsCompleted方法已超时,回调返回空)。

通用链接(Universal Links)在iOS 11.2+ 中,偶尔会出现失效,无法拉起app的情况,为什么?

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

微信中通用链接(Universal Links)被禁用了?

微信在6.6.1版本后,禁止了Universal Links的使用,将提示右上角打开Safari来拉起app,其它app和浏览器不受影响。

如何查看ipa包中associated domain中包含的内容是否正确?

以example.ipa文件为例:

  1. $ cd example.ipa所在文件
  2. $ unzip example.ipa
  3. $ codesign -d --entitlements - Payload/example的全路径
    查看com.apple.developer.associated-domains中是否包含了openinstall的域名,命令行输入正确,则能看到约如下输出:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
         <key>application-identifier</key>
         <string>6E65F4E7IUX.com.fs.openinstall</string>
         <key>com.apple.developer.associated-domains</key>
         <array>
                 <string>applinks:ss.openinstall.io</string>
         </array>
         <key>com.apple.developer.team-identifier</key>
         <string>6E65F4E7IUX</string>
         <key>get-task-allow</key>
         <false/>
    </dict>
    </plist>
    
    如上,applinks:ss.openinstall.io为openinstall关联域名,说明配置正确。
    也可通过这个方法,查看Team ID和bundle ID,此处Team ID为6E65F4E7IUX,bundle ID为com.fs.openinstall

什么情况safari浏览器出现“无法打开网页,网址无效”的弹窗?

这是因为safari在通过scheme执行跳转时,如果app不存在,系统就会出现这样的提示。

重签名的安装包,如果无法正常使用通用链接怎么办?

需要进入openinstall后台,在iOS集成的应用配置里,开启scheme和拉起优先选项,关闭通用链接选项,然后进入文档,根据文档集成好需要的配置。

iOS渠道链接注册量怎样统计?

如果使用 openinstall 控制中心提供的渠道统计功能时,可调用注册统计方法来统计渠道注册量[OpenInstallSDK reportRegister], 其他场景请忽略。