1. Android 集成

1) 导入 SDK

SDK 优先提供 aar 包,如需 jar 包,请联系客服 把下载的 ShareInstallSdk.zip 文件解压,将 ShareInstall_x.x.x.aar 文件拷贝到项目的 libs 文件夹中,并在当前项目下的 build.gradle 文件中导入(注:不是项目的根目录 build.gradle 文件)

dependencies {
    compile(name: 'ShareInstall_1.2.1', ext:  'aar')
}

(注:导入 aar 前需检查当前项目下的 build.gradle 文件中(不是项目的根目录 build.gradle 文件),android 标签下是否已经加入以下代码,否则会报错)

repositories {
    flatDir {
        dirs 'libs'
    }
}

2) 初始化 sdk

在 AndroidMainfest.xml 中添加权限声明。

<!-- 连接互联网Internet权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 允许应用程序联网,以便向我们的服务器端发送数据。 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

在 AndroidMainfest.xml 中的 application 标签中添加分配给你应用的 Appkey

<meta-data
    android:name="com.shareinstall.APP_KEY"
    android:value="shareinstall为当前应用分配的appkey"/>

在自定义 Application 中调用 ShareInstall.getInstance().init(context)方法完成 SDK 初始化,初始化前先判断当前进程是否是应用的主进程。

public class MyApp extends  Application {

    @Override
    public void onCreate() {
        super.onCreate();
        if (isMainProcess()) {
            ShareInstall.getInstance().init(getApplicationContext());
        }
    }

   /**
    * 判断当前进程是否是应用的主进程
    *
    * @return
    */
    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;
    }
}

在 AndroidMainfest.xml 中的 application 标签中添加 android:name=".MyApplication"指定自定义的 Application 类,以便程序启动的时候初始化自定义 Application 类,而不是系统默认的 Application 类。

<application
        android:name=".MyApplication"
        android:allowBackup="false"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
</application>

3) 功能集成

1. 快速下载

如果只需要快速下载功能,无需其它功能(携带参数安装、渠道统计、一键拉起),完成初始化即可。

2. 携带参数安装

在 APP 需要个性化安装参数时(由 web 网页中传递过来的,如邀请码、游戏房间号等 自定义参数),调用以下方法,在回调中获取参数(该方法可重复调用)。

// 注意:SDK调用getInstallParams方法获取参数是异步操作,请确保在onGetInstallFinish回调中拿到参数后才去处理自己的业务逻辑

ShareInstall.getInstance().getInstallParams(new
AppGetInstallListener() {
    @Override
    public void onGetInstallFinish(String info) {
     // 客户端获取到的参数是json字符串格式
    Log.d("ShareInstall", "info = " + info);
     try {
            JSONObject object = new JSONObject(info);
             // 通过该方法拿到设置的渠道值,剩余值为自定义的其他参数
            String channel = object.optString("channel");
                Log.d("ShareInstall", "channel = " + channel);
            } catch (JSONException e) {
                e.printStackTrace();
            }
    }
});

3. 一键拉起

3.1 配置 scheme

在 AndroidMainfest 的唤醒页面 activity 标签中添加 intent-filter(一般为 MainActivity),配置 scheme,用于浏览器中拉起。

<activity
    android:name=".MainActivity"
    android:launchMode="singleTask">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="shareinstall为当前应用分配的scheme" />
    </intent-filter>
</activity>

注:如果唤醒页面和启动页是同一 Activity,则 AndroidMaifest.xml 的配置如下。

<activity
        android:name=".MainActivity"
        android:launchMode="singleTask">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="shareinstall为当前应用分配的scheme"/>
    </intent-filter>
</activity>
3.2 在配置了 ShareInstall scheme 的拉起页面中调用下面相关代码,获取从网页 H5 页面传过来的动态参数
public class WakeUpActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_wake_up);
        // 获取唤醒参数
        ShareInstall.getInstance().getWakeUpParams(getIntent(), wakeUpListener););
    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        // 此处要调用,否则app在后台运行时,会无法截获
        ShareInstall.getInstance().getWakeUpParams(intent, wakeUpListener);
    }
    // 注意:SDK调用AppGetWakeUpListener方法获取参数是异步操作,请确保在onGetWakeUpFinish回调中拿到参数后才去处理自己的业务逻辑
    private AppGetWakeUpListener wakeUpListener  = new AppGetWakeUpListener() {
        @Override
        public void onGetWakeUpFinish(String info) {
            // 客户端获取到的参数是json字符串格式
            Log.d("ShareInstall", "info = " + info);
            try {
                    JSONObject object = new JSONObject(info);
                     // 通过该方法拿到设置的渠道值,剩余值为自定义的其他参数
                    String channel = object.optString("channel");
                    Log.d("ShareInstall", "channel = " + channel);
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
    };
3.3 判断是否首次调用

SDK 提供一个判断是否是首次调用的方法,一般情况在首次安装的时候调用获取安装参数的方法(getInstallParams),在非首次安装时调用获取唤醒参数的方法(getWakeUpParams) 。 接入方可根据自己的场景确定是否使用该方法。

3.4 清除监听 Listener
ShareInstall.getInstance().clearAppGetWakeUpListener()
ShareInstall.getInstance().clearAppGetInstallListener()

4. 渠道统计

统计每个渠道的注册量(对评估渠道质量很重要),可根据自身的业务规则,在确保用户完成 app 注册的情况下调用以下方法: 注意该方法要在 ShareInstall.getInstance().init (context)方法之后调用,否则会抛异常。

// 用户注册成功后调用注册接口
ShareInstall.getInstance().reportRegister();
Copyright © dsx2016.com 2019 all right reserved,powered by Gitbook该文章修订时间: 2019-09-16 12:01:02

results matching ""

    No results matching ""