Android常见问题

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

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

final SharedPreferences sp = getSharedPreferences("filename", MODE_PRIVATE);
boolean isFirst = sp.getBoolean("isFirst", true);
if(isFirst){
    OpenInstall.getInstall(new AppInstallListener() {
        @Override
        public void onInstallFinish(AppData appData, Error error) {
        //使用数据后,不想再调用,将isFirst设置为false
        sp.edit().putBoolean("isFirst", false).apply();
        }
    });
}

解决App有多个进程时,多次触发OpenInstall.init的调用,导致安装参数获取不到?

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

从 openinstall 导出的渠道包加固后导致渠道统计不上?

请先使用第三方加固,再上传到 openinstall ,最后才从 openinstall 导出渠道包

如何在代码混淆时忽略openinstall sdk?

在proguard文件中添加配置:

-dontwarn com.fm.openinstall.**
-keep public class com.fm.openinstall.* {*; }
-keep public interface com.fm.openinstall.* {*; }

如何提高android用户的下载体验和匹配精度?

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