2017-10-07 3 views
2

私はBranch.ioを使用しているアプリを持っており、インスタントAppsをサポートするためにそれをアップデート中です。この変更の一部では、アプリリンクを使用してアプリのある部分から別の部分にナビゲートする必要があります。Branch.ioとインスタントアプリ

私が始めようとしているアクティビティはBranch.ioを使用するように設定されています(例:https://dev.branch.io/marketing-channels/android-instant-apps/guide/の手順を使用)。それにはonStart()メソッドが含まれています。しかし、私はreferringParamsのディープリンクに含まれているパラメータを見ていません。

Branch.getInstance().initSession(new Branch.BranchReferralInitListener() { 
    @Override 
    public void onInitFinished(JSONObject referringParams, BranchError error) { 
     Log.d("Branch", "onInitFinished() with deep link data: " + referringParams); 
    } 
}); 

これを行うにはAndroidのコードから分岐リンクを開く必要がありますか?

上記のBTW referringParamsは、+clicked_branch_linkfalseであることを示します。

UPDATE

ただ、いくつかのことを明確にします。私はActivityAからアプリのディープリンクを使用してActivityBを起動しようとしています。 ActivityBは、例えば、https://dev.branch.io/marketing-channels/android-instant-apps/guide/に記載されているように、<intent-filter>を含む。 ActivityAで私は現在、/開く次のようにBranch.ioのリンクを作成しようとしている(例えばそのandroid-instant-appsサンプルで使用されているようにも、直接リンクを形成しているが、それは「分岐リンク」と考えていない)

HashMap<String, String> metadata = new HashMap<>(); 
    metadata.put(PARAM, param); 

    BranchUniversalObject branchUniversalObject = new BranchUniversalObject().addContentMetadata(metadata); 
    LinkProperties linkProperties = new LinkProperties(); 
    branchUniversalObject.generateShortUrl(context, linkProperties, (url, error) -> { 
     if (error == null) { 
      Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); 
      context.startActivity(intent); 
     } 
    }); 

私がgenerateShortUrlによって生成されたURLを(例えばリンクをクリックして)デバイス上で直接開こうとすると、ActivityBが起動し、私はinitSessionコールバックに含まれるparamを見ます。私はbetweeen ActivityAActivityBをナビゲート(上記のコードを使用して、それを開こうとすると、その後ActivityBが起動されますがのparamsを得ることはありません(と+clicked_branch_linkfalseです)

+0

キーの不一致が '+ clicked_branch_link'のparamは' false'のを返すために引き起こす可能性がお役に立てば幸いです。正しいテスト/ライブブランチキーを設定していることを再度確認してください(https://stackoverflow.com/questions/38763840/no-deep-link-dataを参照)。また、ブランチリンクとキーが同じブランチアプリケーションに属していることを確認してください。 –

+0

アプリリンクを開くコードでbranch.ioのキーを再生する必要がありますか?もしそうなら、リンクを開くためにいくつかのブランチ固有のコードが必要なのでしょうか? –

+0

ディープリンクデータを受信するには、ディープリンクルーター機能を登録する必要があります( 'initSession'を呼び出すアクティビティで' onNewIntent() 'をオーバーライドしてください)。その後、 'branch.getLatestReferringParams'を呼び出すことでセッションパラメータを取得します https://github.com/BranchMetrics/android-branch-deep-linking#initialization –

答えて

0

支店SDKを設定するために、あなたのインスタントアプリケーションは、Androidアプリケーションをサポートして。あなたは、以下の手順に従うことができます:

1.支店のSDK を初期化するのonCreateで支店SDK()アプリケーションクラスのメソッドを初期化し、あなたの完全なアンドロイドにあなたのAndroidインスタントアプリからのディープリンクを計画している場合appをインストールしたら、enablePlayStoreReferrer行を追加する必要があります。これにより、initializeに遅延が追加されますGoogle Playリファラーを待つようにしてください。これには最大1秒かかる場合があります。

public void onCreate() { 
    super.onCreate(); 
    // This is needed to deferred deep link from an Android Instant App to a full app 
    // It tells the Branch initialization to wait for the Google Play Referrer before proceeding. 
    Branch.enablePlayStoreReferrer(1000L); 

    // Initialize the Branch SDK 
    Branch.getAutoInstance(this); 
} 

2.支店のキーを追加して、インストールリファラー

に登録する多くの異なったマニフェストがあるよう

インスタントアプリはかなり混乱することができますが、あなたはあなたのアプリケーションのタグが含まれているマニフェストを見つけたいです。アプリケーションクラス名がここで定義されていることを確認し、アプリケーション要素内にブランチキーを指定します。

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

<!-- Set to true to use Branch_Test_Key --> 
    <meta-data android:name="io.branch.sdk.TestMode" android:value="false" /> 
    <meta-data android:name="io.branch.sdk.BranchKey" android:value="key_live_app_live_key" /> 
    <meta-data android:name="io.branch.sdk.BranchKey.test" android:value="key_test_app_test_key" /> 

    <receiver android:name="io.branch.referral.InstallListener" android:exported="true"> 
    <intent-filter> 
     <action android:name="com.android.vending.INSTALL_REFERRER" /> 
    </intent-filter> 
    </receiver> 

</application> 

3. Androidアプリあなたは既に次のステップは、アプリケーションのリンクのためのインテントフィルタを追加することですあなたのAndroid AppのAndroidのアプリのリンクの支店を設定したと仮定すると、

をリンクとしてあなたの支店のリンクを設定しますアプリケーションタグでのサポートxxxxをあなたのリンクドメインに置き換えてください。 (あなたは、Androidアプリのリンクとして支店を使用するためにあなたの完全なネイティブアプリを設定していない場合は、手順はherehereを述べ従うことができます。)

<application 
    ...... 

    <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="https" android:host="xxxx.app.link" /> 
     <data android:scheme="https" android:host="xxxx-alternate.app.link" /> 
    </intent-filter> 

</application> 

4.支店ディープリンクのデータを取得

追加ディープリンクパラメータを受け取るために、リンククリックから開くように構成されたアクティビティのBranch initSession。参照リンクからのディープリンクデータが返されます。

protected void onStart() { 
    super.onStart(); 
    Branch.getInstance().initSession(new Branch.BranchReferralInitListener() { 
    @Override 
    public void onInitFinished(JSONObject referringParams, BranchError error) { 
     Log.d("Branch","onInitFinished() with deep link data: " + referringParams); 
    } 
    }); 
} 

5.設定だけで、あなたの完全なネイティブアプリにインスタントアプリケーションに到着したユーザーを変換するインスタントアプリからあなたの完全なアプリケーション

へのディープリンク、支店SDKは、チェックするために便利な方法を提供しますアプリの種類と完全なアプリのコンバージョンこれにより、Google IAサポートSDK( 'com.google.android.instantapp')への依存がなくなります。ここでは方法のいくつかは以下のとおりです。

Branch.isInstantApp()

この便利なメソッドのチェックは、アプリ実行中の現在のバージョンは、インスタントのAppまたはFullのAndroidアプリの

Branch.showInstallPrompt()

このメソッドであるかどうかのプロンプトをインストール示し完全なAndroidアプリを使用することで、ブランチをインストールプロセスを通じて深いデータを完全なアプリに簡単に渡すことができます。

+0

アプリのある部分から別の部分にナビゲートする際にBranch.ioアプリリンクを開くために推奨される方法は何ですか? –

+0

私は上記のhttps://dev.branch.io/marketing-channels/android-instant-apps/guide/から直接取ったと思いますか?前述のように、私はこれらの指示に従っていました。 –

+0

@ JohnO'Reillyあなたはまだ+ clicked_branch_link:falseになっています。また、標準のアプリケーションでリンクパラメータを正しく取得できますか? –

1

ここから支店のSojan インスタントアプリケーション apk unfortunetelyブランチでは、この機能がサポートされていません。

インストールされているアプリの別の機能からアクティビティAの新しい機能でアクティビティBを開くときにディープリンクパラメータを取得しようとすると、次のように達成できます。

ActivityA.java

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("yourBranchLink")); 
intent.putExtra("branch","yourBranchLink"); 
intent.putExtra("branch_force_new_session",true); 

これは

+0

Sojanありがとう、私はそれを行ってあげるよ。 –

+0

Sojan、これを達成するには、ブランチダッシュボードでクイックリンクを作成し、Uri.parse( "yourBranchLink")で使用する必要があります。そして、このリンクのマニフェストに特定のIntent Filterを入れますか? –

+0

@GuilhermeLimaPereiraダッシュボードからクイックリンクを作成することでそれを行うことができます。また、アプリケーションからフォームを作成しようとする場合は、ブランチリンクを動的に生成し、ここで説明するように使用することができます。 (マニフェストにインテントフィルタが必要です)https://github.com/BranchMetrics/android-branch-deep-linking#creating-a-deep-link –

関連する問題