Branch 实现Android端 deferred deep link

官网sdk文档地址:https://docs.branch.io/apps/android/
1. Configure Branch(配置Branch)


2. Install Branch

  • Import the Branch SDK to your build.gradle
    // required for all Android apps    implementation 'io.branch.sdk.android:library:3.+'    // required if your app is in the Google Play Store    implementation 'com.google.android.gms:play-services-appindexing:9.+' // App indexing    implementation 'com.google.android.gms:play-services-ads:9+' // GAID matching

3.Configure app

  • Add Branch to your AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.eneff.branch.example.android">    <uses-permission android:name="android.permission.INTERNET" />    <application        android:allowBackup="true"        android:name="com.eneff.branch.example.android.CustomApplicationClass"        android:icon="@mipmap/ic_launcher"        android:label="@string/app_name"        android:supportsRtl="true"        android:theme="@style/AppTheme">        <!-- Launcher Activity to handle incoming Branch intents -->        <activity            android:name=".LauncherActivity"            android:launchMode="singleTask"            android:label="@string/app_name"            android:theme="@style/AppTheme.NoActionBar">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity><activity android:name=".intelsports.ShareShowActivity">        <!-- Branch App Links (optional) -->        <intent-filter android:autoVerify="true">            <action android:name="android.intent.action.VIEW" />            <category android:name="android.intent.category.DEFAULT" />            <category android:name="android.intent.category.BROWSABLE" />            <data android:scheme="olp" android:host="sports.app.link" />        </intent-filter>    </activity>        <!-- Branch init -->        <meta-data android:name="io.branch.sdk.BranchKey" android:value="key_live_kaFuWw8WvY7yn1d9yYiP8gokwqjV0Sw" />        <!-- Branch install referrer tracking (optional) -->        <receiver android:name="io.branch.referral.InstallListener" android:exported="true">            <intent-filter>                <action android:name="com.android.vending.INSTALL_REFERRER" />            </intent-filter>        </receiver>    </application></manifest>
  • Replace the following with values from your Branch Dashboard App settings and Link settings

    example.app.link
    key_live_kaFuWw8WvY7yn1d9yYiP8gokwqjV0Sw



    以上是Branch的配置信息设置,接下来进行Branch的初始化工作

4.Initialize Branch

  • Add Branch to your LauncherActivity.java
public class LauncherActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_launcher);    }    @Override    public void onStart() {        super.onStart();        // Branch init        Branch.getInstance().initSession(new Branch.BranchReferralInitListener() {            @Override            public void onInitFinished(JSONObject referringParams, BranchError error) {                if (error == null) {                    Log.i("BRANCH SDK", referringParams.toString());                    // Retrieve deeplink keys from 'referringParams' and evaluate the values to determine where to route the user                    // Check '+clicked_branch_link' before deciding whether to use your Branch routing logic                } else {                    Log.i("BRANCH SDK", error.getMessage());                }            }        }, this.getIntent().getData(), this);    }    @Override    public void onNewIntent(Intent intent) {        this.setIntent(intent);    }}

5.Load Branch

  • Add Branch to your CustomApplicationClass.java
public class CustomApplicationClass extends Application {    @Override    public void onCreate() {        super.onCreate();        // Branch logging for debugging        Branch.enableDebugMode();        // Branch object initialization        Branch.getAutoInstance(this);    }}

6.Test deep link

BranchUniversalObject buo = new BranchUniversalObject();    LinkProperties lp = new LinkProperties()    .addControlParameter("custom1", "data1")    //传入自定义数据    .addControlParameter("custom2", "data2");buo.generateShortUrl(this, lp, new Branch.BranchLinkCreateListener() {    @Override    public void onLinkCreate(String url, BranchError error) {        if (error == null) {            //得到短链接,用于分享            Log.i("BRANCH SDK", "got my Branch link to share: " + url);        }    }});

使用第三方分享或系统自带分享工具,将以上短链接url分享即可。

7.Read deep link(读取depplink中携带的数据)

  • 在要启动的ShareShowActivity或LauncherActivity onStart方法中实现。即可读取出JSONObject中相应数据
// listener (within Main Activity's onStart)Branch.getInstance().initSession(new Branch.BranchReferralInitListener() {    @Override    public void onInitFinished(JSONObject referringParams, BranchError error) {        if (error == null) {            Log.i("BRANCH SDK", referringParams.toString());        } else {            Log.i("BRANCH SDK", error.getMessage());        }    }}, this.getIntent().getData(), this);// latestJSONObject sessionParams = Branch.getInstance().getLatestReferringParams();// first 若设备未安装app,用户安装app后第一次启动即可获取deep link中的数据JSONObject installParams = Branch.getInstance().getFirstReferringParams();

更多相关文章

  1. mybatisplus的坑 insert标签insert into select无参数问题的解决
  2. python起点网月票榜字体反爬案例
  3. 《Android开发从零开始》——25.数据存储(4)
  4. Android系统配置数据库注释(settings.db)
  5. Android中不同应用间实现SharedPreferences数据共享
  6. android图表ichartjs
  7. Android内容提供者源码
  8. Android开发者实用代码片段 与大家分享
  9. android SharedPreferences

随机推荐

  1. EditText
  2. Android(安卓)生命周期架构组件
  3. Android(安卓)setTheme设置透明主题无效
  4. Android需要的java基础
  5. Lambda优雅开发android
  6. Android集成小米推送教程
  7. Android(安卓)关于arm64-v8a、armeabi-v7
  8. Android(安卓)微博登录
  9. Android保存日志记录到sd卡的文件中
  10. 「Android」在后台服务中获取前台任务包