ユーザーがFacebookアプリでディープリンクをタップしたときにアプリがインストールされていない場合、アプリのリンクデータを取得するにはどうすればよいですか?この問題に関するFacebookからのドキュメントは驚くほど少ないです。
ディープリンクがあります_https://fb.me/635533123230265
_
HTMLを返します:
_<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>App Link</title>
<meta property="fb:app_id" content="619350481515196">
<meta property="al:Android:url" content="instapanel://panel?utm_source=fb&utm_medium=cpi&utm_term=sf&utm_campaign=PROPE">
<meta property="al:Android:package" content="com.instapanel.Android">
<meta property="al:Android:app_name" content="Instapanel">
<meta property="al:web:should_fallback" content="false">
<meta http-equiv="refresh" content="0;url=http://play.google.com/store/apps/details?id=com.instapanel.Android">
</head>
<body>Redirecting...</body>
</html>
_
アプリがすでにインストールされている場合、AppLinkData appLinkData = AppLinkData.createFromActivity(activity);
は完全に機能します。
しかし、アプリがインストールされていない場合、私はbelieve _AppLinkData.fetchDeferredAppLinkData
_を使用することになっています。 Facebook SDK内でHTTPリクエストを送信してJSONを受信することを確認できますが、ディープリンクが含まれることはなく、_{"success":true}
_だけです。何か案は?
これが私のコードです:
_// Fetch data immediately.
AppLinkData appLinkData = AppLinkData.createFromActivity(activity);
App.setAppLinkData(appLinkData); // Handles appLinkData
// In case data is deferred because app wasn't installed yet.
AppLinkData.fetchDeferredAppLinkData(activity, new AppLinkData.CompletionHandler() {
@Override
public void onDeferredAppLinkDataFetched(AppLinkData appLinkData) {
App.setAppLinkData(appLinkData); // Handles appLinkData. appLinkData is always null here.
}
});
_
FBがこの問題を修正したようです。
編集:遅延ディープリンクを設定するには、これに従ってください: https://developers.facebook.com/docs/app-ads/deep-linking#deferred-deep-linking
テスト用のこのリンク: https://developers.facebook.com/tools/app-ads-helper/
App AdsHelperに移動します->アプリを選択します->ディープリンクをテストします->ディープリンクURLを入力します->送信延期をチェックします-> Androidに送信します。
注:1。これを機能させるには、デバイスにFBアプリをインストールし、同じ開発者アカウントにログインする必要があります。 2.遅延ディープリンクを送信した後、アプリをアンインストールして再インストールする必要があります。リンクを送信する前にアンインストールを行うこともできます。
私は branch.io で働いています。これは、これらすべてのことを無料で行い、Facebookの外部でも機能します。そして、インストールを通じてアプリリンクを渡す方法を見つけました。私たちがそれをどのように構築したかを共有します。
まず、Google Advertising IDを収集する必要があるため、必ずGooglePlay開発者サービスをプロジェクトにドロップしてください。これを行うには、これをgradleファイルに追加するだけです。
compile 'com.google.Android.gms:play-services:7.5.0'
これで、ユーザーがFacebookから発信されたかどうかを確認するために、アプリを開くたびにネットワークリクエストを行う必要がありますが、それほど複雑ではありません。アプリを開いたら、POST FacebookアプリID、アプリアクセストークン、Google広告IDを使用して次のエンドポイントに移動します。
https://graph.facebook.com/<APP ID>/activities?access_token=<APPACCESSTOKEN>&event=DEFERRED_APP_LINK&advertiser_id=<GAID>&advertiser_tracking_enabled=1&application_tracking_enabled=1
GAID:次の方法でGoogle AdvertisingIDを取得できます。
String gaid = AdvertisingIdClient.getAdvertisingIdInfo(this).getId();
アプリアクセストークン:アクセストークンを取得するには、次のエンドポイントに対してGET呼び出しを行うだけです。
https://graph.facebook.com/oauth/access_token?client_id=<APPID>&client_secret=<APPSECRET>&grant_type=client_credentials
次に、Facebookのもの(広告、招待状など)を作成するときに、ディープリンクにドロップするだけです。この例は、次の場所に貼り付けられたブランチリンクを示しています。
これに対処したくない場合は、アプリセッションの開始時にコールバックが実行されるネイティブライブラリがあります。これにより、すべてのディープリンクパラメータが返されます。
開発者向け:次の手順でうまくいきました。1。アプリをアンインストールします。2。FBからディープリンクを送信します。3。ディープリンクをクリックしてPlayストアに移動します(アプリをインストールしないでください)。4。アプリをデバッグします。5。 applinkData値はonDeferredAppLinkDataFetchedイベントにあります。
2014年12月2日の時点で、Facebookの遅延アプリのリンクはAndroidで壊れています。アプリが既にインストールされている場合はアプリのリンクを機能させることができますが、アプリがまだインストールされていない場合、アプリのリンクはインストール後にアプリに送信されません。
Facebookと連絡を取り合っています。更新があればここに投稿します。
https://developers.facebook.com/bugs/39394718080537 のFBチームの応答として:
説明:
開発者:
フロー最初の試行。 (インストールされていません。デバイス1を使用しています)
- 広告のボタンをクリックしました。
- GooglePlayへのリダイレクトを開始します。
- デバイス1にアプリをインストールしました。
- 私のアプリを初めて起動しました。 >>結果:applinkdataを見ることができました。
-
- デバイス1(最初のテストで使用したのと同じデバイス)でアプリを削除しました。
- 広告のボタンをもう一度クリックしました。
- GooglePlayへのリダイレクトを開始します。
- デバイス1にアプリをインストールしました。
- 私のアプリを初めて起動しました。 >>結果:applinkdataが表示されませんでした、null値を取得しました。 ( なぜだろう ? )
FBチーム:
私たちの側のいくつかの技術的な制約のために、広告プレビューツールを使用して自分のデバイスに広告を送信すると、遅延ディープリンクは失敗します
.。
デバイス1での動作は、予期される動作です。アプリはサーバーからapplinkデータをフェッチします。サーバーはリクエストを受け取ると、ad-applinkデータをフェッチ済みとしてマークします。後続のリクエストはそれを返しません。 (そうしないと、その後アプリを開くたびにアプリリンクが読み込まれるため、エクスペリエンスが低下します。リンクをたどるのは1回だけです。) 新しい広告を作成してクリックした場合にのみ、データが再度取得されます。
お役に立てば幸いです。
宜しくお願いします、
ジャック