2017-08-08 10 views
1

を短くし、私は私のアプリが以前Firebaseダイナミックリンク

http://jstock.co/a/news?code=1295.KL&symbol=PUBLIC+BANK+BHD 

で目的のページを起動するには、次のダイナミックリンクを使用し、これが私のアプリをインストールしていないユーザーのための欠点を持っています。私のアプリをインストールしていないユーザーのために、これは彼が店

  • アプリをインストールはGoogle Playへのリンク

    1. 外出先でクリックしたときに発生するものです。
    2. アプリを起動します。 ディープリンクで指定された目的のページの代わりに、アプリケーションの最初のページに移動します。

    後で、私はFirebaseのダイナミックリンクが私の問題を解決できることを実感します。次のURLを使用すると、すべて正常に動作します。第三ステップのために

    https://g7b6h.app.goo.gl/?link=http%3A%2F%2Fjstock.co%2Fa%2Fnews%3Fcode%3D1295.KL%26symbol%3DPUBLIC%2BBANK%2BBHD&apn=org.yccheok.jstock.gui 
    

    、代わりにアプリの最初のページに行くと、ユーザーは現在、ディープリンクで指定された目的のページに直接行くことができます。

    しかし、私は上記のリンクが長すぎると感じます。 https://firebase.google.com/docs/dynamic-links/android/createを読んだ後、私は、しかし、すべての時間を次のよう

    private void build() { 
        Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink() 
          .setLongLink(Uri.parse("https://g7b6h.app.goo.gl/?link=http%3A%2F%2Fjstock.co%2Fa%2Fnews%3Fcode%3D1295.KL%26symbol%3DPUBLIC%2BBANK%2BBHD&apn=org.yccheok.jstock.gui")) 
          .buildShortDynamicLink() 
          .addOnCompleteListener(this, new OnCompleteListener<ShortDynamicLink>() { 
           @Override 
           public void onComplete(@NonNull Task<ShortDynamicLink> task) { 
            if (task.isSuccessful()) { 
             Log.i("CHEOK", "success"); 
             // Short link created 
             Uri shortLink = task.getResult().getShortLink(); 
             Uri flowchartLink = task.getResult().getPreviewLink(); 
    
             Log.i("CHEOK", "shortLink = " + shortLink); 
             Log.i("CHEOK", "flowchartLink = " + flowchartLink); 
    
            } else { 
             Log.i("CHEOK", "error : " + task.getException().getMessage()); 
             // Error 
             // ... 
            } 
           } 
          }); 
    } 
    

    を使用して、それを短くしようと、私はerror : Bad Requestを取得します。

    どのようなステップが私は逃したか考えてみませんか?

    ありがとうございました。

  • 答えて

    3

    不正リクエストは、無効なAPIキーを示している可能性があります。これはリクエストの承認に使用されます。私は何だろうと、次のとおりです。プロジェクト内Firebase Consoleから

    1. 再ダウンロードグーグル-services.jsonと1を上書きするAPIキーパラメータが/api_key/current_keyの下であなたのパッケージ名のエントリのために満たされていることを
    2. チェックJSONファイル内
    3. は、Google、サービスプラグインを含め、アプリのbuild.gradleの下部に applyと呼ばれている
    4. チェック

    あなたはマニュアルの手順に対して確認することができます。https://firebase.google.com/docs/android/setup#manually_add_firebase

    これで、APIへのアクセスが修正されるはずです。

    リンクしている間に、リンクのデバッグバージョン:https://g7b6h.app.goo.gl/?link=http%3A%2F%2Fjstock.co%2Fa%2Fnews%3Fcode%3D1295.KL%26symbol%3DPUBLIC%2BBANK%2BBHD&apn=org.yccheok.jstock.gui&d=1(最後に& d = 1)を確認してください。これは、コンソールで解決すべき2つの警告を示しています。

    +0

    ありがとうございました。 'google-services.json'を再ダウンロードすると動作します。 APIキーには違いがあります。生成された 'https:// g7b6h.app.goo.gl/GkXlEGTokGA3Cr7r2'をテストしたところ、期待通りに動作します。しかし、フローチャートの2つの警告が私を混乱させました。これは、 'org.yccheok.jstock.gui'と' org.yccheok.demo'にSHA256がないことを示します。私は、リリースとデバッグのキーでチェックSHA256を2倍にしました、彼らはfirebaseコンソールのものと一致しました。また、私はfirebaseコンソールに 'org.yccheok.demo'パッケージを持つアプリを持っていません。したがって、警告メッセージはさらに私を混乱させます。私はただの警告を無視すべきですか? –

    1

    あなたのsetLongLinkメソッドのURIは、UTF-8でエンコードする必要はありません。 Firebaseの例では、次のように表示されます。

    Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink() 
        .setLongLink(Uri.parse("https://abc123.app.goo.gl/?link=https://example.com/&apn=com.example.android&ibn=com.example.ios")) 
        .buildShortDynamicLink() 
    

    この問題は解決されましたが、私はFirebaseには分かりません。

    もっと簡単な方法でこれに対処するには、深いリンクをBranchに切り替えることをお勧めします(私はそこで働いていますが、以前はFirebaseで開発していました)。リンクは実際にはJSON型オブジェクトをパラメータの代わりにフードの下に格納するため、短いリンクを自動的に生成します。単なる考え:)

    関連する問題