其它常见问题

1. 哪些情况会造成传参安装的参数丢失?

openinstall传参高精度在业界具有突出优势,但是有些情况可能会造成参数丢失,以下列出了这些情况,请开发者留意和避免这些情况的发生。

1.1 用户行为方面
(1)下载安装后尽量在24小时内打开App,否则无法获取到对应的参数;
(2)不要覆盖安装,否则导致参数还是保持上次安装时的情况;
(3)不要使用越狱设备,会导致无法获取参数。尽量不要使用模拟器,因为数据统计上报时会过滤模拟器(App传参安装功能可以使用,但是无法统计到数据);
(4)通过带参数的网页下载安装打开,这个流程需要严格遵守,不要打开网页后再自行去其他地方下载安装,会导致参数获取受影响;
(5)不要直接发送app安装包给其他用户安装,否则无法正常获取到参数。

1.2 开发者集成测试方面
测试时,最好先用openinstall提供的在线测试网页、二维码测试App端,避免自己开发的网页和App都有问题难排查。
(1)App测试:测试时需要先卸载App,然后手机扫描打开在线测试二维码下载安装打开,查看对应回调的获取参数情况;(不要用已越狱设备和模拟器测试)
(2)Web端:App端测试无误后,可以在自行开发的下载落地页里面集成web集成文档(JavaScript文档或banner集成),来实现和在线测试网页、二维码一样的传递参数功能。集成时需要注意下载时必须调用openinstall的下载api(m.wakeupOrInstall();)。不能自己额外写其他的下载代码来引导,下载api必须要用按钮真实点击触发执行(不能自动执行或者伪点击触发),否则影响参数的获取精度
(3)iOS端:由于iOS首次启动的App,会询问用户获取网络权限,用户允许后SDK才能正常联网去获取参数。所以安装参数获取方法尽量写在业务场景需要参数的位置调用。如果必须调用过早,可以把超时时长设置的相对长一些,例如30S,或更长。
测试参数获取情况,需要通过安装参数获取方法回调查看,因为这里才是最直接能反映参数获取情况的位置,如果根据自己服务端的情况判断,会无法判断是参数没有拿到还是拿到后上报过程有问题。

2. 测试时,安装参数获取方法(getInstall)中无法获取到对应的安装参数?

首先,测试时为方便排除问题,建议先使用【Android集成】或【iOS集成】中,右上角的【在线测试】网页链接测试。
如果无法获取到安装参数,先查看应用版本是否选择的高级版,只有高级版状态才能获取到安装参数。其次查看【应用统计】中,对应的安装量是否有统计到(模拟器测试无法统计到安装量,最好使用真机测试),如果有统计到,说明App sdk初始化正常,传参也一般不会有问题,很大可能是网页集成或者是测试流程有误。

集成因素:
【Android】
(1)仅在主进程的UI线程中调用初始化接口;
(2)在初始化和获取参数接口调用时,尽量保证不要有权限申请或其它可能使应用处于后台不可见状态的操作,对提升参数还原精度有很大的帮助。
(3)请在调用初始化接口后再调用其他接口,否则会导致早于初始化接口调用的接口执行失败或者超时。

【iOS】
(1)因为iOS系统的网络权限需要用户手动确认授权的原因,以及首次安装App需点击《隐私政策》弹窗后再调用的SDK初始化方法,建议开发者将获取参数接口(getInstallParmsCompleted)调用时机放到App业务场景进行中时(保证网络畅通时),避免过早的调用。或者使用自定义超时时长的接口(getInstallParmsWithTimeoutInterval),可设置30s以上或更久,避免用户因为网络权限未授权或授权过慢导致参数还原受影响。
(2)请在调用初始化接口后再调用其他接口,否则会导致早于初始化接口调用的接口执行失败或者超时。

应用包名因素:如果安装量没有对应的增加,检查是否使用模拟器测试安装的,或者测试前未卸载再安装。如果这些没有问题,检查下载的安装包“包名”是否和【应用配置】中的对应一致,不是一致,需要到【应用配置】修改为一致。(android的包名为Applicationid,iOS为Bundle Identifier)

测试设备因素:iOS不支持越狱设备。android极个别设备可能出现无法正常获取参数的情况,可以尝试更换手机对比测试或重启再测试。

安装包因素:Android使用自定义下载地址选项时,不要使用从带有openinstall web集成文档的网页下载下来的APK文件作为自定义下载地址的安装包,需要使用导出的原始包作为自定义下载地址的安装包,才能正常使用App传参安装功能。

测试流程因素:先试用应用控制台提供的在线测试网页测试安装传参,如果正常,一般是网页集成问题(网页集成有问题时可以在【文档】-【常见问题】-【web常见问题】中的内容对照排查)。如果在线测试网页也无法正常获取到参数,一般是安装包集成配置问题。
测试流程:测试前,需要先卸载App,然后通过网页直接下载App安装打开。如果需调试App查看相关日志,则可以在打开网页点击下载后,不用确认下载安装,最后直接用开发工具运行App到手机上查看对应的情况。
网络设置:测试中,设备不要使用网络代理。

SDK因素:保持最新版本sdk,以便于获得更稳定、优化度更好的方案。

测试时,可以通过sdk输出的相关日志或在回调里面加入参数弹窗来判断,同时查看其中是否有报错信息,这样也能快速知道问题所在。

3. 测试方法

App传参安装:
测试前需要先卸载手机上已安装的App。访问【在线测试】网页或自行开发且集成了【web文档】的网页下载安装并启动App,最后查看安装参数获取方法(getInstall)中自定义参数的获取情况。
或:
测试前需要先卸载设备上已安装的App。访问【在线测试】网页或自行开发且集成了【web文档】的网页,打开网页后点击一下网页上的下载按钮但不用确认下载安装。然后使用开发工具(例如AndroidStudio、Xcode等)安装App到该手机上并启动,最后查看安装参数获取方法(getInstall)中自定义参数的获取情况。
一键拉起测试:
在手机上安装好对应的App,然后访问【在线测试】网页或已集成【web集成文档】的网页,点击按钮,会唤醒对应的App。然后查看唤醒回调方法(wakeup)的唤醒参数的获取情况。
渠道统计测试:
进入openinstall账号应用中的【渠道统计】-【渠道管理】-【H5渠道】,添加H5渠道链接(【渠道落地页】一项中如果没有自行开发且集成了【web文档】的落地页URL,可以先选择系统默认),然后参考【App传参安装】测试规则测试即可。渠道链接测试才能获取到对应的渠道编号。

注意:控制台中提供的系统测试页分【在线测试】网页和上传安装包右侧的【测试】网页。前者的下载路径由对应的下载配置决定,后者的下载路径为【测试】左侧的安装包文件。

4. 网页中无法正常拉起已安装的应用?

首先检查自己的App相关的拉起配置是否正确,然后查看网页是否集成正确(为排除问题,可以先用【在线测试】网页测试)。
Android需要检查scheme是否配置正确,scheme标签中只需要加入文档提供的部分,不要自行额外加入host、path、port等配置,否则会导致无法正常唤醒。
iOS需要检查App的Team Id、Bundle Identifier是否和openinstall控制台【iOS集成】-【iOS应用配置】中的Team Id、Bundle Identifier信息一致。
网页链接请使用https,若使用http会导致部分浏览器中无法正常唤醒。
如果以上检查都正常,则按照以下因素进行排查:
(1)有些浏览器由于用户自己设置UA为非移动端,或者之前测试拉起时,选择了否,后面不再提示等类似选项,浏览器也是不会提示拉起或直接拉起。(可以在手机桌面-设置-里面找到对应的浏览器应用-清除该浏览器的应用缓存、数据)。
(2)Android部分浏览器不支持scheme唤醒,例如:微信内置浏览器、微博、百度系列浏览器等。
(3)iOS设备有时会出现通用链接功能暂时失效的现象(低概率),此时无法使用通用链接拉起应用。解决方法:将设备中的应用卸载后,进入【设置】-【Safari浏览器】-清除历史记录及网站数据。然后重启设备,再安装集成完成的应用,测试唤醒功能是否恢复正常。(该操作不能保证100%有效,但有一定概率能让一键唤醒功能恢复正常)
(4)iOS如果需要在微信里面正常拉起App时,必须走通用链接协议(Universal Link),需要保证微信版本在7.0.5或以上,且在【iOS集成】-【iOS下载设置】中,需要选择【App Store或其它】(里面配置的地址内容不限制)。
(5)Android设备中,网页打开加载时会先尝试scheme唤醒,点击按钮后会再次有一次尝试scheme唤醒。但是目前部分浏览器是需要用户行为触发(例如:点击按钮)后唤醒才能生效。从而导致了有部分浏览器进入时没有打开App的提示,部分浏览器却有。

5. 集成openinstall sdk后使用的过程中,部分App用户没有正常获取到参数

(1)如果是较少比例出现,属于正常情况,openinstall传参精度正常情况下是会有2%以下的丢失概率,此时无法正常匹配到对应的参数。除此之外,还需考虑用户当时的操作流程是否不符合规范(可以参考1.1中的【用户行为方面】)而导致的丢失情况,因此低比例属于正常情况。
(2)如果是较高比例出现,可以先参考1.2 【开发者集成测试方面】,排查集成是否有误。如果正常,可以自行模拟用户的场景测试看是否会出现较高比例的参数丢失情况,如果测试正常,可能是较多App用户并不是正常通过带参数链接下载安装打开的。

6. 渠道统计报表中,对应的数据没有增加

访问量:如果无访问量增加,说明渠道链接的网页中未正常集成【web集成】文档,或者没有正确成功的执行初始化,先检查是否集成了【web集成】文档,其次检查网页加载时是否有相关的报错信息,再检查网页中配置的appkey是否正确。
点击量:如果无访点击量增加,说明网页中未正常触发JavaScript文档中的wakeupOrInstall()方法;触发该方法时,才会使点击量增加。banner集成中则是点击网页界面下方banner中的按钮会增加点击量。
安装量:如果无安装量,则需要参考常见问题中的【测试时,安装参数获取方法(getinstall)中无法获取到对应的安装参数】内容来排查问题,一般是未正常获取到渠道编号导致,或是使用了模拟器,即便是获取到了安装参数,也会因为sdk会过滤掉模拟器数据的原因,不会上报服务器统计。
注册量:未在App中调用App集成文档中的【注册量统计】方法导致的。
效果点统计:效果点统计如果要归属到对应的渠道中,则需要调用效果点统计代码的App是通过渠道链接下载安装的。如果不是,则只会统计到效果点统计的总量中,不会在对应的渠道报表中增加。
注:安装量、注册量属于App端上报的数据,App sdk会对模拟器进行过滤不会上报统计,所以测试时不要使用模拟器。

7. 渠道包的渠道编号参数与H5链接的自定义参数、渠道编号参数的关系

(1)通过仅携带自定义参数(不含渠道编号)的H5链接下载安装渠道包,可以在App中同时获取到渠道包的原渠道编号参数和H5链接的自定义参数。
(2)通过携带自定义参数且携带渠道编号(H5渠道编号与渠道包的渠道编号不同)的H5链接下载安装渠道包,可以在App中同时获取到H5链接的渠道编号参数和H5链接的自定义参数。
(3)通过仅携带渠道编号(H5渠道编号与渠道包的渠道编号不同)的H5链接下载安装渠道包,可以在App中可以获取到H5链接的渠道编号参数。

8. 使用openinstall中可能会出现的限制

(1)测试页限制(IP受限,系统测试页仅限于开发测试,禁止对外发布)
限制系统提供的测试网页链接每日的访问IP,每天只能在10个不同ip范围内测试,通过开发者认证后自动增加到20个ip。该限制与是否付费无关。
解决方法:使用自行开发的下载页(H5网页)集成【web集成】文档,可以避免该限制。
(2)测试包限制(IP受限,测试包仅限于开发测试,禁止对外发布)
限制上传到openinstall控制台中的安装包每日的安装量,每天只能在10个不同ip范围内测试,通过开发者认证后自动增加到20个ip。
解决方法:高级版通过开发者认证且付费开通后自动解除ip限制。初级版无法解除该限制,须自行提供安装包地址配置到对应的下载配置中。
(3)功能测试限制(IP受限,付费前仅限于开发测试,禁止对外发布)
此提示仅在高级版状态下存在。每天只能在10个不同ip范围内测试,通过开发者认证后自动增加到20个ip。
解决方法:在通过开发者认证且付费开通后自动解除限制。
(4)未进行开发者认证提示(IP受限,账号认证前仅限于开发测试,禁止对外发布)
此提示仅在初级版状态下存在。
解决方法:无需付费,初级版通过开发者认证且自行提供安装包地址配置到对应的下载配置中后即可解除该限制提示。

9. 数据的统计规则

访问量:打开下载落地页的次数(访问页面的次数),重新打开或者刷新页面都会增加。从代码层面看,就是初始化openinstall对象的次数。
点击量:用户点击网页中,点击下载按钮的次数。从代码层面看,就是调用wakeupOrInstall()方法次数。
安装量:App安装后,打开App激活,算安装量一次,覆盖安装不会计算安装量。从代码层面看,App sdk初始化后会自动上报安装量。
注册量:App中调用openinstall sdk提供的注册统计方法的次数,调用一次增加一次。
X日后留存:指代用户安装App首次启动日算起,距离X天之后还存在活跃行为的设备。例如:自安装日起相隔10天后还打开App使用过,会在1日留存、7日留存都产生数据(如1号的23:00安装打开App后,2号的00:10再次打开App,也属于1日留存,因为2号和1号属于间隔一天)。
活跃设备数:指代指定的时间范围内,打开过App的设备量。
活跃用户数:指代活跃设备数中,有调用过注册统计方法的设备量。
新增设备:安装的新设备数量。
ip分布:安装的ip分布地区状况。

10. 数据的排重规则

访问量、点击量:属于网页(下载落地页)上报的数据,根据cookie排重,因此在同一设备使用不同浏览器访问时,无法正确的进行排重。
安装量、注册量:属于App端的数据,排重根据设备,与ip无关。同一设备如果重复触发上报统计,未排重的数据量会增加,但是排重后的数据,只会记录该设备第一次上报的,后面重复上报的数据不会增加。

11. 微信小程序中显示openinstall相关域名未非业务域名的处理办法

(1)当微信小程序中加载集成了openinstall web集成文档的网页时,可能会出现:不支持打开非业务域名https://xxxxxx.openinstall.io,请重新配置。如果出现此类提示,则属于openinstall相关域名未在对应的小程序中进行验证,从而不属于业务域名禁止访问。
(2)验证流程:
①按照小程序平台的验证规则,将对应的验证文件(一个txt类型文件)发送至openinstall官方人员,官方人员会转交技术将文件配置到对应域名的根目录下。
②添加对应域名根目录下后,就可以进行验证了。验证成功后告知openinstall官方人员即可(验证成功后openinstall会清除该验证文件)。

12.广告平台渠道出现无法正确归因的情况

(1)检查App是否按照文档正确集成,以及是否已经集成额外的【广告平台对接文档】代码。【广告平台对接文档】地址(AndroidiOS)。
(2)检查Android/iOS集成-Android/iOS应用配置中,各自的【广告平台对接】开关是否已经开启,如果未开启需要开启后进行测试。
(3)检查创建对应的广告平台渠道时,需要填写的相关参数(例如广告平台账号的ID、Key一类参数)是否对应。
(4)检查【渠道统计】-【渠道管理】中的【是否开启渠道绑定】开关是否开启,如果开启建议先关闭再进行测试,避免影响测试设备的归属。
(5)检查测试流程是否遵守广告平台的联调流程。
(6)检查从广告点击到App安装启动的过程中,用户是否未允许设备标识符的获取。如果在SDK需要申请设备标识符获取权限的时候App用户拒绝了权限,也会导致归因的精度降低,从而可能无法正确匹配成功(例如iOS的IDFA、无法获取OAID的Android设备)。

13. 如何处理url参数中带有特殊字符的情况?

url拼接参数时,如果参数中有特殊字符,需要做参数编码,即对参数进行编码后,再拼接到url上,例如:
Android中:

URLEncoder.encode(value的值, "utf-8")

iOS中:

(NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,(CFStringRef)"传入参数字符串",NULL,(CFStringRef)@"!*'();:@&=+$,/?%#[]",kCFStringEncodingUTF8));

注:stringByAddingPercentEscapesUsingEncoding是url整体编码,不会处理特殊字符,如&:?\=等

14. 为什么测试时渠道编号channelCode一直没有返回参数,只有data有参数返回?

如果需要测试渠道链接,需要先进入渠道统计模块,创建出渠道链接,扫描对应的渠道链接下载安装测试,才有channelCode返回。

15. 打开网页显示“对应平台的集成工作尚未完成,请登录openinstall查看详情”

App端集成完成后,必须上传一次安装包激活后,平台才会正常工作,上传后也更方便集成测试。

16. 下载设置里面必须选择上传的apk/ipa才行吗?

不是,也可以配置自己的地址到Android的外部apk或iOS的外部ipa、AppStore栏,功能一样可以正常使用。

17. 自己应用的下载链接或二维码在哪里获取?

openinstall平台提供的在线测试二维码、链接和渠道默认二维码、链接仅供测试。如果想要在自行开发的网页中实现相同功能,则需要加入【web集成】-【JavaScript集成】或【App banner集成】文档,从而实现App传参安装、渠道统计、一键拉起、快速安装等功能。(网页链接转换成的二维码功能等效)

18. 网页打开后显示域名受限,请登录openinstall查看web安全配置

这是因为开启了web集成里面的web安全配置-启用域名验证,添加上信任的域名或取消勾选就行。

19. 上传安装包解析失败或上传失败等其他错误

Android检查是否包含了V1签名,如果不包含会提示解析失败。iOS检测签名是否正常,ipa文件名是否包含了特殊字符。如果这些都无误,更换浏览器或pc再尝试上传。

20. 安装参数和唤醒参数的格式是怎样的?

Android的格式为json字符串,iOS为字典。(渠道编号参数则是单纯的字符串,不需要解析)

21. iOS使用超级签名、testflight下载方式时,怎样配置?

只需要将超级签名下载页地址或testflight地址配置到应用的【iOS集成】-【iOS下载设置】-【App Store及其它】地址栏里面,其他不需要做任何改动,配置后需要核对安装包的Bundle Identifier是否和【iOS应用配置】中的Bundle Identifier参数是否一致,如不一致需修改为一致。

22. 在哪里可以开通付费高级版?

登录账号,进入控制台,选择需要开通的应用(appkey),无应用就需要先创建应用。然后进入应用里面,点击应用基本信息,下方可以看到 付费商用按钮。

23. 充值钱包后,为什么应用还是没有开通或者续费成功?

在帐号中充值钱包后,只是在帐号钱包中增加了余额,还未真正扣费。如需开通或续费应用,可以在开通、续费应用支付时,选择钱包余额支付即可。

24.【应用统计】或【渠道报表】中只有安装量没有注册量

注册量需要App在内部发生真实注册后,调用openinstall集成文档中【注册量统计】提供的方法,才能统计到注册量。