tft每日頭條

 > 生活

 > 注冊後邀請碼在哪裡輸入

注冊後邀請碼在哪裡輸入

生活 更新时间:2024-12-01 17:29:33

本文轉自:https://juejin.im/post/59fffa5bf265da4312804d1d;作者:Mr_淩宇

前言

來來來,假設有這樣一個場景,我邀請某人去下載注冊一個app,這樣他能獲得獎勵,我也可以獲得獎勵,那怎麼匹配邀請人與被邀請人呢?

那你肯定要說了,這還不簡單,邀請碼啊,每個用戶有自己唯一的邀請碼,被邀請方下載注冊後填寫對應的邀請碼,這不就好了嗎?

然而...不麻煩嗎???

如果哥哥我的app自己帶有邀請碼,那得多方便啊!!

推薦下載app的流程一般是:

注冊後邀請碼在哪裡輸入(還在用邀請碼邀請注冊嗎)1

我們可以看到,這裡有一個很重要的中轉站→浏覽器。那我們是不是可以從這裡做文章呢!

如果我們可以在浏覽器打開的時候,把邀請碼作為參數傳遞過去,那不就天下太平一見生财了嘛!嘿嘿,這裡推薦下一篇:Android 通過浏覽器打開手機app

但是這種的話,并不能保證用戶一定可以拿到鍊接傳遞的參數!畢竟這種是要在已經安裝了App的情況下,才可以拿到參數,所以這種是不可取的。

所以,這裡該推出我們的主角了:OpenInstall

集成

集成jar

注冊後邀請碼在哪裡輸入(還在用邀請碼邀請注冊嗎)2

配置AndroidMainfest

權限配置

<uses-permission android:name="android.permission.INTERNET"/>

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

App_key配置

<!--openInstall 的appKey -->

<meta-data

android:name="com.openinstall.APP_KEY"

android:value="ipriom"/>

<!--end of openInstall 的appKey -->

配置獲取參數的activity

<!--主頁面-->

<activity

android:name=".MainActivity"

android:windowSoftInputMode="adjustPan|stateHidden">

<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="op4nd2v6"/>

</intent-filter>

</activity>

注意事項

注冊後邀請碼在哪裡輸入(還在用邀請碼邀請注冊嗎)3

假設你的默認啟動頁是MainActivity,那麼最好不要把2個 混搭在一起

<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="op4nd2v6"/>

</intent-filter>

配置Application

在onCreate()中配置

if (isMainProcess()) {

OpenInstall.init(this);

OpenInstall.setDebug(true);

}

/**

* 判斷是否是主進程

*

* @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;

}

配置混淆文件

#忽略警告

-dontwarn com.fm.openinstall.**

#避免混淆

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

獲取參數

我們看下MainActivity中怎麼獲取數據:

(1)在oncreate()中設置喚醒App時獲取參數回調:

/**

* 設置獲取喚醒app時獲取參數回調

*/

private void getWakeUpInfo() {

OpenInstall.getWakeUp(getIntent(), this);

}

(2)獲取喚醒App時傳遞過來的參數

@Override

public void onWakeUpFinish(AppData appData, Error error) {

XLog.e(error == null ? appData.toString() : error.toString());

}

(3)配置onNewIntent

@Override

protected void onNewIntent(Intent intent) {

super.onNewIntent(intent);

//此處要調用,否則App在後台運行時,會無法截獲

OpenInstall.getWakeUp(intent, this);

}

以上的話,其實我們可以自己實現,通過上面提供的文章,這步我們完全可以自己做到。

但是另外一個方法,目前博主也想不出來是怎麼實現的:

/**

* 獲取安裝的時候從web端傳遞過來的參數信息

*/

private void getInfo() {

OpenInstall.getInstall(new AppInstallListener() {

@Override

public void onInstallFinish(AppData appData, Error error) {

if (error == null) {

if (appData == null) {

return;

}

if (!TextUtils.isEmpty(appData.getData())) {

Toast.makeText(MainActivity.this, "從網頁喚醒app" appData.toString(), Toast.LENGTH_SHORT).show();

}

} else {

XLog.e("error--------------" error.toString());

}

}

});

}

這裡我們解釋下兩個方法的區别:

getInfo

onWakeUpFinish

上面的是首次安裝走的回掉,下面的是app已經存在,網頁直接喚醒app走的回掉,場景不同。

這裡是不是已經有點蒙了呢!看下哥們之前寫的測試文檔:

測試

url地址測試:

https://app-ipriom.openinstall.io/js-test?

testKey=11111111&testKey2=3333333333333333333333

testKey=11111111&testKey2=3333333333333333333333可以随意添加,其實就是get請求參數。

  • 在浏覽器輸入以上地址:

注冊後邀請碼在哪裡輸入(還在用邀請碼邀請注冊嗎)4

  • 回車運行

注冊後邀請碼在哪裡輸入(還在用邀請碼邀請注冊嗎)5

  • 如果是首次運行(即你手機上沒有安裝此app),那會進入下載頁面:

注冊後邀請碼在哪裡輸入(還在用邀請碼邀請注冊嗎)6

  • 安裝後點擊運行,這裡我們可以獲取到傳遞到的參數

注冊後邀請碼在哪裡輸入(還在用邀請碼邀請注冊嗎)7

  • 這個時候可以修改?testKey=11111111&testKey2=3333333333333333333333 參數列表,app也可以獲取得到修改後的參數列表。如:修改為?testKey=keyValue 後,拉起的頁面為:

注冊後邀請碼在哪裡輸入(還在用邀請碼邀請注冊嗎)8

這裡是不是已經可以看出端倪了呢!

  • 一個方法是獲取安裝的時候傳遞的參數,這個隻是一次性的,隻會獲取一次
  • 另一個方法是獲取喚醒的時候傳遞的參數的,這個方法是可以無數次使用的,且參數是随時可以變化的。

到了這裡,其實已經滿足了我們的需求了!

注冊後邀請碼在哪裡輸入(還在用邀請碼邀請注冊嗎)9

測試

我們比較關心的是兼容問題,這邊博主也花了一點時間去做測試:

測試:

  • UC浏覽器,QQ浏覽器等較主流的浏覽器,是否可以拉起。
  • 拉起的前提下,是否可以獲取得到參數,以及參數是否正确。

前提:

能通過網頁拉起APP的前提是:

  1. 手機安裝有app
  2. 該app至少被打開過一次
  3. 與網絡是否切換無關

測試列表:

三星:

  • 代表機型:三星s8
  • 原生浏覽器測試通過
  • QQ浏覽器測試通過
  • 360浏覽器測試通過
  • UC浏覽器測試通過

小米:

  • 代表機型:小米6
  • 原生浏覽器測試通過
  • 360浏覽器測試通過
  • UC浏覽器測試通過
  • QQ浏覽器測試通過

華為:

  • 代表機型:華為P9 (高配全網通)
  • 原生浏覽器測試通過
  • QQ浏覽器測試通過
  • 360浏覽器測試通過
  • UC浏覽器測試通過

酷派:

  • 代表機型:酷派大神Note3
  • 原生浏覽器測試通過
  • QQ浏覽器測試通過
  • 360浏覽器測試通過
  • UC浏覽器測試通過

VIVO:

  • 代表機型:VIVOX9I
  • 原生浏覽器測試通過
  • QQ浏覽器測試通過
  • 360浏覽器測試通過
  • UC浏覽器測試通過

HTC:

  • 代表機型:HTCm9w
  • 原生浏覽器測試通過
  • QQ浏覽器測試通過
  • 360浏覽器測試通過
  • UC浏覽器測試通過

OPPO:

  • 代表機型:OPPOR9S
  • 原生浏覽器測試通過
  • QQ浏覽器測試通過
  • 360浏覽器測試通過
  • UC浏覽器測試通過

測試總結:

1.url我可以随便拼裝

2.UC,QQ,原生都可以拉起應用

3.每次更新app都需要重新上傳一個app到你們那裡

4.加固混淆不影響該功能

總結:

1.基本滿足了我們的需求

2.我們每次更新版本需要提交到openInstall的後台托管中(保證後續更新穩定),也可以直接托管到應用寶等平台,這樣在鵝廠旗下的浏覽器會提供支持(微信内置浏覽器)

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved