2016-12-19 1 views
5

私のアプリでいくつかのコンテンツを共有するための動的リンクを作った。Firebaseのダイナミックリンクが特定の状況で私のアプリを起動しない

Androidデバイスのhrefタグを使用してHTMLページのリンクをクリックすると、リンクが機能しています。

これは、アプリがインストールされていない場合は、Playストアにアクセスし、アプリを開くとディープリンクアドレスを受け取ることができることを意味します。

しかし、リンクがFacebookのメッセンジャーや電子メールなどの他の場所でも正確に同じ場合、私はリンクをクリックしても動作しません。

アプリが既にインストールされていても、常にPlayストアにリダイレクトされます。

問題が何ですか?

私のコードはこちらです。

<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:host="mycode.app.goo.gl/" 
      android:scheme="https" 
      android:pathPattern=".*" /> 
    </intent-filter> 
  • ダイナミックリンク

    https://mycode.app.goo.gl/?link=web page address &ら= my custom scheme for sharing & APN = my android app's package nameのAndroidManifest.xmlにおける活性の

    GoogleApiClient mGoogleApiClient = new GoogleApiClient.Builder(this) 
         .enableAutoManage(this, this) 
         .addApi(AppInvite.API) 
         .build(); 
    
    boolean autoLaunchDeepLink = false; 
    AppInvite.AppInviteApi.getInvitation(mGoogleApiClient, this, autoLaunchDeepLink) 
         .setResultCallback(
           new ResultCallback<AppInviteInvitationResult>() { 
            @Override 
            public void onResult(@NonNull AppInviteInvitationResult result) { 
             if (result.getStatus().isSuccess()) { 
              // Extract deep link from Intent 
              Intent intent = result.getInvitationIntent(); 
              String deepLink = AppInviteReferral.getDeepLink(intent); 
    
              Log.e("sf", "### deep link : " + deepLink); 
             } else { 
              Log.d("asdf", "getInvitation: no deep link found."); 
             } 
            } 
           }); 
    
  • 意図部ディープリンクを受信するための

    • の.java

  • +0

    あなたは、あなたが使用しているコードを投稿してくださいすることができます:アプリでの取り扱いディープリンクが動作しているので、これは無関係ですが、適切にこれは私たちのマニフェストインテントフィルタでありますインストールされていない場合は、Playストアにアクセスし、アプリを開くとディープリンクアドレスを受け取ることができます。 – Nainal

    +0

    私は自分のコードの一部をアップロードしました。 – hshan

    +0

    Firebaseのサポートに連絡しました。彼らはFacebook Messengerで問題を再現でき、現在調査中です。私は何か新しいことを学ぶなら、このスレッドに書きます。 –

    答えて

    3

    私たちは、このドキュメントhttps://firebase.google.com/docs/dynamic-links/に応じFirebaseダイナミックリンクを実装していると、彼らは、FacebookやFacebookのメッセンジャーアプリのを除いて、すべての場合には正常に動作しています。

    まず、我々は我々のアプリへのダイナミックリンクを生成します。

    Builder builder = new Builder() 
        .scheme("https") 
        .authority("winged-guild-133523.appspot.com") 
        .appendPath("share") 
        .appendQueryParameter("query", query); 
    

    その後、我々は長い間、動的リンクを生成:

    ​​

    をその後、我々はhttps://firebasedynamiclinks.googleapis.com/v1/shortLinksで短いリンクとの長いダイナミックリンクを交換し、意図を使用して共有する:

    Intent intent = new Intent(Intent.ACTION_SEND); 
    intent.setType("text/plain"); 
    intent.putExtra(Intent.EXTRA_TEXT, text); 
    startActivity(Intent.createChooser(intent, null)); 
    

    このリンクを共有するとg Facebookアプリ:

    • 短いリンクは適切に共有されています。
    • アプリがインストールされていない場合は、FacebookアプリのリンクをクリックするとGoogle Playが正しく実行され、アプリをインストールするとディープリンクが正しく処理されます。
    • アプリがインストールされている場合は、FacebookアプリのリンクをクリックするとGoogle Playにもアクセスし、[開く]ボタンをクリックすると、Google Playが参照情報をアプリに渡さないため、ディープリンクはアプリに転送されませんインストールは実行されていません。

    我々はFacebookのメッセンジャーアプリを使用して、このリンクを共有している場合:アプリがインストールされている場合、リンクがhttps://l.facebook.com/l.php?u=https%3A%2F%2Fwinged-guild-133523.appspot.com%2Fshare%3Fquery%3Dquery&h=fAQEAiTGn&s=1

  • として共有されている

    • を、Facebookのメッセンジャーアプリでリンクをクリックすると、ディープリンクに行きますGoogle Playではなくターゲット(我々のウェブサイト)
    • アプリがインストールされている場合、Facebook Messengerアプリのリンクをクリックすると、アプリが正しく開きます。

    だから私はここに三つの問題を参照してください。

    • Facebookアプリが正常にアプリがインストールされていることを検出していません。
    • Facebook Messengerアプリは、短いものではなく長いダイナミックリンクを共有します。
    • Facebookのメッセンジャーアプリは、アプリがインストールされていることを検出できますが、アプリがインストールされていない場合はGoogle Playではなくリンクに移動します。

    これらの問題を解決する方法については、誰でも知っていますか?

    PSは:アプリがある場合

    <intent-filter> 
        <action android:name="android.intent.action.MAIN"/> 
        <category android:name="android.intent.category.LAUNCHER"/> 
        </intent-filter> 
    
        <intent-filter android:label="@string/app_name"> 
        <action android:name="android.intent.action.VIEW"/> 
        <category android:name="android.intent.category.DEFAULT"/> 
        <category android:name="android.intent.category.BROWSABLE"/> 
        <data android:scheme="http"/> 
        <data android:scheme="https"/> 
        <data android:host="winged-guild-133523.appspot.com"/> 
        <data android:host="www.winged-guild-133523.appspot.com"/> 
        <data android:pathPattern="/share.*"/> 
        </intent-filter> 
    
  • +0

    これはFirebaseのサポートリクエストに同じテキストで回答したものです:「ダイナミックリンクがFacebook上で正しく動作していないという報告も受けましたが、潜在的な解決方法を模索していますが、現時点で詳細やタイムラインを共有することはできません 今後の更新については、リリースノートを確認してください。 – Blackhex

    +0

    それはまさに私の要点です。ご回答有難うございます。 – hshan

    +0

    このパターンに感謝します。

    0
    //Remove this lines 
    <category android:name="android.intent.category.DEFAULT" /> 
    <category android:name="android.intent.category.BROWSABLE"/> 
    
    and android:pathPattern=".*" /> //not required remove it also 
    and use android:scheme="http" 
    
    +0

    ありがとうございますが、それは私のために働いていません。 – hshan

    +0

    あなたのURL文字列を共有してください! – vishal

    関連する問題