iOS常见问题

1. iOS无法获取自定义参数?

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

2. 每次调用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"];
        }*/
    }];
}

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

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

4. ios安装时希望安装确认弹窗提示里面显示自己的域名

在iOS集成-iOS下载设置里面,将自己的plist地址配置到AppStore栏即可。例如:

itms-services://?action=download-manifest&url=plist地址(plist地址必须是https)

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

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

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

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

7. 如何查看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

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

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

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

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

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

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