Android
Firebase App Indexing
サーチ…
備考
App Indexingを実装することを選択すると、混乱させるかもしれない多数のブログ、ドキュメントがあります。この場合、Firebase-Googleが提供する公式ドキュメントに固執することをお勧めします。これを行うには第三者を使用したいと思っても、まずこの文書に従ってください。これは、どのように動作しているかを明確にしてくれるからです。
Googleではコンテンツのインデックス登録に約24時間を要します。だから、気をつけてください。あなたはすべてのことがあなたの側でうまくいくようにテストすることができます。
最初の例では、アプリケーションでリダイレクトするWebサイトのHTTP URLをサポートできます。これは、あなたがGoogle検索でクエリを検索した結果、既にインストールされているあなたのアプリリンクにあなたのウェブサイトのURLの1つが表示されます。このURLをクリックすると、その検索結果に対応するApp Screenに直接リダイレクトされます。それは私がこれを発見したことです。
AppIndexing APIを追加すると、コンテンツがインデックスに登録され、Google検索バーの自動補完機能で使用されます。 inShortsの例を取ることができます各ページの見出しと小さな説明があります。 2つまたは3つの見出しを読み終えたら、アプリケーションを閉じてgoogle searchbarに移動します。
ちょうどあなたが通過した見出しを入力しようとすると、タイトルとしてその見出しとのAppページの提案を取得します。これは、Appsの検索中に表示されるAppの提案とは異なります。これは、この特定のページのAppIndexing APIコードを記述していて、titleがonCreate()
初期化したものと同じであるために発生します。
HTTP URLをサポートする
ステップ1: - Googleがあなたのコンテンツにクロールすることを許可する。サーバのrobot.txtファイルを編集する。このファイルを編集することにより、コンテンツのGoogleクロールを制御できます。詳細については、 このリンクを参照してください。
ステップ2: - アプリケーションをあなたのウェブサイトに関連付けます。assetlinks.jsonを含めるWebサーバーの.well既知のディレクトリにアップロードします。あなたのassetlinks.jsonのコンテンツは、
[{
"relation": ["delegate_permission/common.handle_all_urls"],
"target" :
{ "namespace": "android_app",
"package_name": "<your_package_name>",
"sha256_cert_fingerprints": ["<hash_of_app_certificate>"] }
}]
ステップ3: - あなたのマニフェストファイルにアプリケーションリンクを含めて、以下のようにURLをアプリケーションにリダイレクトし、
<activity
android:name=".activity.SampleActivity"
android:label="@string/app_name"
android:windowSoftInputMode="adjustResize|stateAlwaysHidden">
<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="example.live"
android:pathPrefix="/vod"
android:scheme="https"/>
<data
android:host="example.live"
android:pathPrefix="/vod"
android:scheme="http"/>
</intent-filter>
</activity>
ここで各タグについて学びたい場合は、これを参照してください。
<action> Google Searchからインテントフィルターに到達できるようにACTION_VIEWインテントアクションを指定します。
<data> 1つ以上のタグを追加します。各タグは、アクティビティを解決するURI形式を表します。少なくとも、タグにはandroid:scheme属性が含まれている必要があります。属性を追加して、アクティビティーが受け入れるURIのタイプをさらに絞り込むことができます。たとえば、類似したURIを受け入れる複数のアクティビティを持つこともできますが、単純にパス名に基づいて異なります。この場合、android:path属性またはそのバリエーション(pathPatternまたはpathPrefix)を使用して、システムが異なるURIパスに対して開く必要があるアクティビティを区別します。
<category> BROWSABLEカテゴリを含めます。 Webブラウザからインテントフィルタにアクセスするには、BROWSABLEカテゴリが必要です。それがなければ、ブラウザのリンクをクリックしてもアプリに解決することはできません。 DEFAULTカテゴリはオプションですが、推奨されています。このカテゴリがないと、アプリコンポーネント名を使用して明示的なインテントでアクティビティを開始することはできません。
ステップ4: - 着信URLを処理する
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_schedule);
onNewIntent(getIntent());
}
protected void onNewIntent(Intent intent) {
String action = intent.getAction();
Uri data = intent.getData();
if (Intent.ACTION_VIEW.equals(action) && data != null) {
articleId = data.getLastPathSegment();
TextView linkText = (TextView)findViewById(R.id.link);
linkText.setText(data.toString());
}
}
ステップ5: - Android Debug Bridgeコマンドまたはスタジオ設定を使用してこれをテストできます。 Adbコマンド: - アプリケーションを起動し、次のコマンドを実行します。
adb shell am start -a android.intent.action.VIEW -d "{URL}" < package name >
Androidスタジオの設定: - Androidスタジオ>ビルド>設定の編集>起動オプション> URLを選択> URLをここに入力>アプリを実行してテストします。「実行」ウィンドウにエラーが表示された場合は、それ以外の場合は正常に実行され、指定されている場合はあなたのURLに記載されたページにリダイレクトされます。
AppIndexing APIを追加する
これをプロジェクトに追加すると、簡単に公式の文書を見つけることができますが、この例では、世話をするべき重要な分野のいくつかを強調します。
ステップ1: - Googleサービスを追加する
dependencies {
...
compile 'com.google.android.gms:play-services-appindexing:9.4.0'
...
}
ステップ2: - クラスをインポートする
import com.google.android.gms.appindexing.Action;
import com.google.android.gms.appindexing.AppIndex;
import com.google.android.gms.common.api.GoogleApiClient;
ステップ3: - App Indexing API呼び出しを追加する
private GoogleApiClient mClient;
private Uri mUrl;
private String mTitle;
private String mDescription;
//If you know the values that to be indexed then you can initialize these variables in onCreate()
@Override
protected void onCreate(Bundle savedInstanceState) {
mClient = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();
mUrl = "http://examplepetstore.com/dogs/standard-poodle";
mTitle = "Standard Poodle";
mDescription = "The Standard Poodle stands at least 18 inches at the withers";
}
//If your data is coming from a network request, then initialize these value in onResponse() and make checks for NPE so that your code won’t fall apart.
//setting title and description for App Indexing
mUrl = Uri.parse(“android-app://com.famelive/https/m.fame.live/vod/” +model.getId());
mTitle = model.getTitle();
mDescription = model.getDescription();
mClient.connect();
AppIndex.AppIndexApi.start(mClient, getAction());
@Override
protected void onStop() {
if (mTitle != null && mDescription != null && mUrl != null) //if your response fails then check whether these are initialized or not
if (getAction() != null) {
AppIndex.AppIndexApi.end(mClient, getAction());
mClient.disconnect();
}
super.onStop();
}
public Action getAction() {
Thing object = new Thing.Builder()
.setName(mTitle)
.setDescription(mDescription)
.setUrl(mUrl)
.build();
return new Action.Builder(Action.TYPE_WATCH)
.setObject(object)
.setActionStatus(Action.STATUS_TYPE_COMPLETED)
.build();
}
これをテストするには、以下の備考の手順4に従ってください。