【常见问题】Xinstall开发常见问题

iOS常见问题

一、 通用链接在iOS 11.2+ 中,偶尔会出现失效,无法唤醒拉起 app,为什么?
这是因为苹果 iOS 11.2+ 出现的系统 bug 导致的(偶然发生的),解决方法“删除 app,重启设备,重新安装app”,苹果目前还没有完全解决这个问题,我们将持续跟进。

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

三、为什么Universal link 无法正常调起?
(1)网络连接代理会导致Universal link 无法正常调起

Android 常见问题

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

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

final SharedPreferences sp = getSharedPreferences("filename", MODE_PRIVATE);
        boolean isFirst = sp.getBoolean("isFirst", true);
        if (isFirst) {
            XInstall.getInstallParam(new XInstallListener() {
                @Override
                public void onInstallFinish(XAppData data, XAppError error) {
                    //使用数据后,不想再调用,将isFirst设置为false
                    sp.edit().putBoolean("isFirst", false).apply();
                }
            });
        }
二、 App有多个进程时,多次调用 XInstall.init,导致安装参数获取不到?

当App存在多个进程,并且 XInstall 是在ApplicationonCreate方法中初始化时,会因为多次调用ApplicationonCreate方法,导致 XInstall 初始化方法触发多次,从而导致安装参数获取不到。 使用以下代码判断当前进程是否是应用的主进程,然后只在主进程中调用 XInstall.init方法

public boolean isMainProcess(){
    int pid = android.os.Process.myPid();
    ActivityManager activityManager = (ActivityManager)
    getSystemService(Context.ACTIVITY_SERVICE);
    for (ActivityManager.RunningAppProcessInfo appProcess : activityManager.getRunningAppProcesses()) {
        if (appProcess.pid == pid) {
            return getApplicationInfo().packageName.equals(appProcess.processName);
        }
    }
    return false;
}
三、 应用在后台时,通过网页拉起应用无法正常获取到参数

检查对应activityonNewIntent生命周期方法内是否添加了唤醒参数获取方法。如果未添加,会导致应用存在后台时,网页拉起应用后无法正常获取到唤醒参数 (Android在app未在后台的情况下,网页直接唤醒打开后,唤醒Activity被杀掉后,应用退回到后台,进入浏览器后不刷新,网页再次点击按钮尝试唤醒,部分浏览器会出现仅将app从后台切换到前台,并不会再次唤醒对应Activity,而且该情况下,切换到前台时的Activity中未能在各个生命周期中获取到唤醒的intent信息。 经过验证,该现象为浏览器的机制,和是否使用XInstall sdk无关。 【测试:当app仅为一个Activity构成时,即MainActivity为唤醒Activity,按照上述流程不杀掉Activity的情况下切换到后台,再次唤醒,不会触发onCreat、onNewIntent生命周期,但是会触发onResume生命周期,此时可以获取到唤醒的intent信息】 存在上述现象的浏览器:华为系统浏览器、QQ浏览器、uc浏览器、欧朋浏览器、搜狗浏览器等 每次都会重新唤醒scheme标签对应的activity的浏览器:小米系统浏览器、google浏览器、三星浏览器、360浏览器等)

四、如何在代码混淆时忽略 XInstall sdk?

在proguard文件中添加配置:

-keep class com.xinstall.**{*;}
五、 如何提高android用户的下载体验和匹配精度?

尽量选择安装包托管在 XInstall 平台下载,这样对下载体验和参数获取精度会有很大帮助。

六、网页尝试唤醒已经安装好的app时,会先出现是否打开app的提示,然后下载任务又会弹出,挡住打开app的提示窗口

该问题是由于在点击按钮触发wakeupinstall方法时,js会先尝试执行唤醒操作,然后执行延时下载操作。但因为js无法判断对应的app是否已安装,就会出现唤醒后面的下载会继续执行,从而出现打开app的提示后又出现下载任务提示。

七、 Android下载设置中不同下载方式的区别

(1)托管APK:下载上传到XInstall控制台的apk包,可以自行选择对应的安装包文件。
(2)外部APK:可以填写apk安装包下载地址、下载页面(包含第三方平台的地址)。

WEB 常见问题

  1. 集成和测试时,web 端需要注意哪些问题?
    app 端测试无误后,可以在自己的下载网页(或者分享页)里面集成我们的web文档,来实现和在线测试二维码一样的传递参数功能; 集成时需要注意,触发下载时必须调用我们的下载 api。不能自己额外写其他的下载代码来引导,还有下载 api 要用按钮触发执行(不能自动执行或者伪点击触发),否则影响参数的获取和精度。

  2. 自定义参数该怎么传递?

(1)第一种自定参数在落地页的地址后面以 key=value 的形式传递,如果参数过长,建议通过一个唯一标志获取参数,在页面中直接写入
(2)第二种是在websdk调用的时候使用按钮传参的形式传递参数,如果参数过长,建议通过一个唯一标志获取参数,在页面中直接写入。

  1. 为什么没有获取到自己的参数?
    没有获取到参数有很多原因,WEB 端的话请确认 appkey 是否和应用的 appkkey一致。定义的按钮ID是否和dom里的一致,然后确认是否正常调用了wakeupOrInstall 方法。

4 为什么有些浏览器不能唤醒?
首先检查自己的app相关的拉起配置是否正确,然后查看网页是否集成正确(为排除问题,建议先用在线测试网页测试)。 如果配置没问题,需要确认是否是浏览器或设备因素:

(1)有些浏览器由于用户自己设置UA为非移动端,或者之前测试唤醒时,选择了否,后面不再提示等类似选项,浏览器也是不会提示拉起或直接拉起。(可在手机桌面-设置-里面找到对应的浏览器应用-清除该浏览器的应用缓存、数据)。

(2)iOS有时会出现通用链接功能暂时失效的现象(低概率,具体出现的原因和解决办法还未知),此时无法使用通用链接拉起应用。(微信7.0.5及以上,iOS支持在微信中通用链接唤起app)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xinstall渠道统计

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值