1

私はGoogle Invitesを読んでいました: https : //developers.google.com/app-invites/android/guides/appとbranch.io:https://dev.branch.io/recipes/content_sharing/android/# Android アプリ内のコンテンツへのルーティング

Google Invites はコンテンツ共有に優れているようで、アプリへのディープ リンクを送信したいすべての人を Google から選択するインターフェイスを提供します。

Branch.io はディープリンクの生成に優れているようで、その shorturl には、アプリが必要とするすべてのデータが「キー/値のディープ リンク メタデータの埋め込み」に含まれます。

Branch.io にも「ネイティブ共有シート」が組み込まれていますが、Google Invites ほど高度で優れているとは思いません。

Branch.io ディープリンクを Google Invites インターフェースでコンテンツ共有に使用したいと考えています。

私が苦労しているのは、2つをマージすることです。

誰かが Google Invites リンクをクリックすると、Android アプリが開き、onCreate メソッド内で次のコードが実行されてインテントがインターセプトされます。

@Override
protected void onCreate(Bundle savedInstanceState) {
    // ...

    if (savedInstanceState == null) {
        // No savedInstanceState, so it is the first launch of this activity
        Intent intent = getIntent();
        if (AppInviteReferral.hasReferral(intent)) {
            // In this case the referral data is in the intent launching the MainActivity,
            // which means this user already had the app installed. We do not have to
            // register the Broadcast Receiver to listen for Play Store Install information
            launchDeepLinkActivity(intent);
        }
    }
}

Branch.io は onStart メソッドでインテントをインターセプトするように Android に指示します。

@Override
public void onStart() {
    super.onStart();

    Branch branch = Branch.getInstance();

    // If NOT using automatic session management
    // Branch branch = Branch.getInstance(getApplicationContext());

    branch.initSession(new BranchReferralInitListener(){
        @Override
        public void onInitFinished(JSONObject referringParams, Branch.BranchError error) {
            if (error == null) {
                // params are the deep linked params associated with the link that the user clicked before showing up
                // params will be empty if no data found
                String pictureID = referringParams.optString("picture_id", "");
                if (pictureID.equals("")) {
                    startActivity(new Intent(this, HomeActivity.class));
                }
                else {
                    Intent i = new Intent(this, ViewerActivity.class);
                    i.putExtra("picture_id", pictureID);
                    startActivity(i);
                }
            } else {
                Log.e("MyApp", error.getMessage());
            }
        }
    }, this.getIntent().getData(), this);
}

Branch.io と Google Invites の両方を使用する場合、ディープリンクをクリックしたときに Android アプリを起動するインテントをインターセプトするには、どのコードを使用すればよいですか?

4

1 に答える 1