什么是App Indexing?
将网站上的网页和智能手机相关联。已安装了相应软件的用户可以通过网站直接打开应用内容。
详细信息请参见官网https://developers.google.com/app-indexing/webmasters/app
官网上写的非常详细,可以看中文的。
代码实现
HTML网页中要提供App Indexing的网址是http://example.com/淘宝店铺ID。淘宝店铺ID是不确定的值。
在AndroidMenifest.xml中声明Intent过滤器。
<activity android:name="com.example.android.GizmosActivity"
android:label="@string/title_gizmos" >
<intent-filter android:label="@string/filter_title_viewgizmos">
<action android:name="android.intent.action.VIEW" />
<!-- 可以获取包含 "http://example.com/g23422" 开头的url -->
<data android:scheme="http"
android:host="example.com"
android:pathPrefix=".*"
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
</activity>
可以使用下面两种方式测试是否能跳转到 淘宝店铺ID为【g23422】的app页面:
adb shell am start -a android.intent.action.VIEW -d "http://example.com/g23422" com.example.android或者在HTML网页上添加:
<a href="intent://example.com/gizmos#Intent;scheme=http;package=com.example.android;end;">
http://example.com/g23422
</a>
App Indexing的测试方法
在https://developers.google.com/app-indexing/webmasters/test中输入【android-app://packageName/scheme/host/pathPrefix】。详情请参考下图:
如何判断应用从App Indexing进入的?
方法如下:
public boolean isCallByAppIndexing(Activity activity) {
Intent intent = activity.getIntent();
Uri uri = intent.getData();
if (uri != null) {
String scheme = uri.getScheme();
String host = uri.getHost();
if (scheme != null && scheme.equals("http")) {
if (host != null && host.equals("example.com")) {
return true;
}
}
}
return false;
}
获取淘宝店铺ID的方法:
public String getShopId(Activity activity) {
String shopId = null;
Uri uri = activity.getIntent().getData();
if (uri != null) {
List<String> list = uri.getPathSegments();
shopId = (list == null ? null : list.get(0));
}
return shopId;
}