其它常见问题

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

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

1.1 用户行为方面
(1)下载安装后尽量在12小时内打开App,否则无法获取到对应的参数;
(2)不要覆盖安装,否则导致参数还是保持上次安装时的情况;
(3)不要使用越狱设备,会导致无法获取参数。尽量不要使用模拟器,因为我们不会对模拟器的数据进行统计(特别是对渠道统计方面影响较大);
(4)通过带参数的网页下载安装打开,这个流程需要严格遵守,不要打开网页后再自行去其他地方下载安装,会导致参数获取受影响;
(5)不要直接使用下载的apk的形式邀请好友安装。

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

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

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

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

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

安装包因素:android使用外部apk时,不要使用从带有openinstall web集成文档的网页下载下来的apk文件作为外部apk的安装包,需要使用导出的原始包作为外部apk的安装包,才能正常使用携带参数安装功能。(iOS签名不影响携带参数安装功能的使用,所以不需要考虑签名会影响)

测试流程因素:先试用应用控制台提供的在线测试网页测试安装传参,如果正常,一般是网页集成问题(网页集成有问题时可以在【文档】-【常见问题】-【web常见问题】中的内容对照排查)。如果在线测试网页也无法正常获取到参数,一般是安装包集成配置问题。

测试流程:测试前,需要先卸载app,然后通过网页直接下载app安装打开。如果需调试app查看相关日志,则可以在打开网页点击下载后,不用确认下载安装,最后直接用开发工具运行app到手机上查看对应的情况。
网络因素:测试中,设备不要使用网络代理。
测试时,可以通过sdk输出的相关日志或在回调里面加入参数弹窗来判断,同时查看其中是否有报错信息,这样也能快速知道问题所在。

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

首先检查自己的app相关的拉起配置是否正确,然后查看网页是否集成正确(为排除问题,可以先用在线测试网页测试)。
如果以上都没问题,就得考虑是否是浏览器或设备因素:
(1)有些浏览器由于用户自己设置UA为非移动端,或者之前测试拉起时,选择了否,后面不再提示等类似选项,浏览器也是不会提示拉起或直接拉起。(可以在手机桌面-设置-里面找到对应的浏览器应用-清除该浏览器的应用缓存、数据)。
(2)Android部分浏览器不支持scheme唤醒,例如:微信内置浏览器、微博、百度浏览器、火狐、三星自带浏览器。
(3)iOS设备有时会出现通用链接功能暂时失效的现象(低概率,具体出现的原因和解决办法还未知),此时无法使用通用链接拉起应用。(微信7.0.5及以上,iOS支持在微信中通用链接唤起app)
(4)ios如果需要在微信里面正常拉起app时,必须走通用链接协议(Universal Link),需要保证微信版本在7.0.5或以上,而且ios下载设置里面,需要选择appstore及其他下载选项(里面配置的地址内容不限制)。
(5)Android设备中,网页进入时,会先尝试唤醒,点击按钮后会再次有一次唤醒操作。但是目前部分浏览器是需要用户行为触发(点击)后,唤醒才能生效,这就导致了有部分浏览器进入时没有打开app的提示,但是有的部分浏览器会有。

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

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

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

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

6:数据的统计规则

访问量:打开下载落地页的次数(访问页面的次数),重新打开或者刷新页面都会增加。从代码层面看,就是初始化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分布地区状况。

7:数据的排重规则

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

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

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

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

iOS中:

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

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

9. 测试时,App端需要注意什么?

测试时需要先卸载App,然后手机扫描打开在线测试二维码下载安装打开,查看对应回调的获取参数情况。(避免用已越狱设备和模拟器测试)

10. openinstall相关功能测试的流程是怎样的?

(1)自定义参数安装:
卸载手机上已安装的应用。然后通过在线测试二维码下载安装App,打开应用,然后查看安装回调方法获取参数的情况。
(2)App拉起功能测试:
安装好对应的App,手机扫描打开在线测试二维码网页,点击按钮,会拉起对应的app。然后查看唤醒回调方法的获取参数情况。
(3)渠道统计测试:
先进入渠道统计模块,创建出渠道链接,然后参考自定义参数测试的规则,扫描对应的渠道链接下载安装测试就行。

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

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

12. 测试时如何方便排查问题?

测试时,最好先使用后台提供的在线测试二维码测试App端,避免自己开发的网页和App都有问题难排查。

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

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

14. 测试无法正常获取安装参数

检查App集成是否按照文档正确集成,如果是使用自己的网页测试,还需要检查网页集成是否遵守web文档。检查应用基本信息是否切换到了初级版,初级版不支持安装传参,高级版才支持。

15. 下载设置里面必须选择上传的APK/IPA才行吗?

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

16. 如果不想每次修改代码后都得重复上传安装包测试怎么办?

手机扫描打开集成了web文档的网页,点击触发下载按钮,但不用确认安装,最后用开发工具安装到手机上运行调试也可。

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

openinstall平台提供的在线测试二维码、链接和渠道默认二维码、链接都是仅供测试用途的。如果想要自己那边的下载页,就需要自己开发网页,里面集成web集成-JavaScript集成或banner集成。就能和openinstall测试页一样具有安装传参、渠道统计、一键拉起、快速下载等功能。(二维码可以用转换工具将网页链接转换成二维码的形式)

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集成文档中【注册量统计】提供的方法,才能统计到注册量。