Google が提供する app indexing API を実装しています。ここに示されているように、次のように onStart() メソッドでクライアントを接続しました。
APP_URI = Uri.parse(baseAppUri + slug);
WEB_URL = Uri.parse(baseWebUri + slug);
Action viewAction = Action.newAction(Action.TYPE_VIEW, title, WEB_URL, APP_URI);
// Call the App Indexing API start method after the view has
// completely
// rendered
// Call the App Indexing API view method
PendingResult<Status> result = AppIndex.AppIndexApi.start(mClient, viewAction);
result.setResultCallback(new ResultCallback<Status>() {
@Override
public void onResult(Status status) {
if (status.isSuccess()) {
CommonLib.ZLog(TAG, "App Indexing API: Recorded " + title + " view successfully.");
} else {
Log.e(TAG, "App Indexing API: There was an error recording the view." + status.toString());
}
}
});
ユーザーがページで完了した後、つまりユーザーが戻るボタンを押した後、次のように onStop() で AppIndexApi.end を呼び出します。
@Override
protected void onStop() {
// Call end() and disconnect the client
Action viewAction = Action.newAction(Action.TYPE_VIEW, title, APP_URI);
PendingResult<Status> result = AppIndex.AppIndexApi.end(mClient, viewAction);
result.setResultCallback(new ResultCallback<Status>() {
@Override
public void onResult(Status status) {
if (status.isSuccess()) {
Log.d(TAG, "App Indexing API: Recorded " + title + " view end successfully.");
} else {
Log.e(TAG, "App Indexing API: There was an error recording the view." + status.toString());
}
}
});
mClient.disconnect();
super.onStop();
}
問題は、コールバックが実行されていないことです。resultcallback のどのケースもステータスを記録しておらず、実行は直接ジャンプしますmClient.disconnect.
また、Google アプリの検索結果にタイトルが表示されません。
ここでどこが間違っているのでしょうか?