我们正在尝试使用Apple Universal Links在iOS上实现应用程序索引(我正在查看https://developer.apple.com/library/ios/documentation/General/Conceptual/AppSearch/UniversalLinks.html#//apple_ref/doc/uid/TP40016308-CH12-SW2).
在"创建和上传关联文件"部分中,我看到我可以将索引限制为特定页面,这很好.
我想将索引限制为https://www.mywebsite.com?parameter=something,我该怎么办?
我在考虑这样的事情:
{
"applinks": {
"apps": [],
"details": [
{
"appID": "MYID",
"paths":[ "*?parameter=*" ]
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
你觉得它可行吗?我无法测试它,因为获取授权在网站根目录上上传文件需要时间,这就是为什么我问你是否认为它可以工作,我想上传文件一次,如果我能够.
谢谢
我找到了这篇文章:一种在您的应用中搜索内容的新方法,我对这个机会感到非常兴奋.我想在谷歌搜索结果中显示我的应用程序内容,如下所示:
但是,本文没有关于如何在您的应用中实现此功能的任何信息.
我在我的应用程序中使用App Indexing API,如文章中所述:
这是我的代码:
...
private GoogleApiClient mClient;
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ac_main);
mClient = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();
}
public Action getAction() {
Thing object = new Thing.Builder()
.setName("Test Content")
.setDescription("Test Description")
.setUrl(Uri.parse("myapp://com.example/"))
.build();
return new Action.Builder(Action.TYPE_VIEW).setObject(object)
.setActionStatus(Action.STATUS_TYPE_COMPLETED)
.build();
}
@Override
public void onStart() {
super.onStart();
mClient.connect();
AppIndex.AppIndexApi.start(mClient, getAction());
}
@Override
public void onStop() {
AppIndex.AppIndexApi.end(mClient, getAction());
mClient.disconnect();
super.onStop();
}
...
Run Code Online (Sandbox Code Playgroud)
这是结果:
谷歌显示我的应用程序的测试内容,但没有描述和预览图像.有没有办法在Google搜索结果中添加说明和预览图片?(如Youtube或Twitter)
我有一个实施Firebase应用程序索引的应用程序.它还有自己的全文搜索实现.谷歌显然更好,我喜欢杀死我使用的那个,而不是他们的.是否可以根据自己应用的个人内容查询Firebase应用索引?我不需要/想要任何其他应用程序的内容,只有我自己的内容.
android android-app-indexing google-app-indexing firebase-app-indexing
我们注意到我们的android崩溃报告工具中的应用程序崩溃数量激增.它开始发生在大约一周前(1月7日).遇到崩溃的设备报告为运行Android 4.4.4的Calypso AppCrawler(eng.hendriks.20151229.110347).
这是堆栈跟踪:
java.lang.ClassNotFoundException:在路径上找不到类"com.app.package.here.Module $$ ModuleAdapter $ ProvideApplicationProvidesAdapter":DexPathList [[zip file"/system/framework/com.google.android.maps.jar ",zip文件"/system/framework/android.test.runner.jar",zip文件"/data/app/com.google.android.apps.appcrawler.espressocrawler-1.apk",zip文件"/ data/app/com.app.package.here-1.apk"],nativeLibraryDirectories = [/ data/app-lib/com.google.android.apps.appcrawler.espressocrawler-1,/ data/app-lib/app.app .package.here-1,/ vendor/lib,/ system/lib]]在java.lang.ClassLoader.loadClass()的dalvik.system.BaseDexClassLoader.findClass()(BaseDexClassLoader.java:56)中(ClassLoader.java: 497)在java.lang.ClassLoader.loadClass()(ClassLoader.java:457)com.app.package.here.Module $$ ModuleAdapter.getBindings()(Module $$ ModuleAdapter.java:31)at com.app .package.here.Module $$ ModuleAdapter.getBindings()(Module $$ ModuleAdapter.java:16)at dagger.ObjectGraph $ DaggerObjectGraph.makeGraph()(ObjectGraph.java:185 )at dagger.ObjectGraph $ DaggerObjectGraph.access $ 000()(ObjectGraph.java:138)at dagger.ObjectGraph.create()(ObjectGraph.java:129)at com.app.package.here.Application.buildObjectGraphAndInject()(Application .java:247)位于android.support.test上的android.app.Instrumentation.callApplicationOnCreate()(Instrumentation.java:1007)的com.app.package.here.Application.onCreate()(Application.java:126).在android.app.ActivityThread.access $ 1500()(ActivityThread.java:135)的android.app.ActivityThread.handleBindApplication()(ActivityThread.java:4328)上的runner.MonitoringInstrumentation.callApplicationOnCreate()(MonitoringInstrumentation.java:323) android.app.ActivityThread $ H.handleMessage()(ActivityThread.java:1256)位于android.os.Loper.loop()的android.os.Handler.dispatchMessage()(Handler.java:102)(Looper.java: 136)在java.lang.reflect.Method.invoke上的java.lang.reflect.Method.invokeNative()(Method.java: - 2)中的android.app.ActivityThread.main()(ActivityThread.java:5001) )(Method.java:515)在com.and roid.internal.os.ZygoteInit $ MethodAndArgsCaller.run()(ZygoteInit.java:785)位于dalvik.system.NativeStart.main的com.android.internal.os.ZygoteInit.main()(ZygoteInit.java:601) )(NativeStart.java:-2)
它似乎不会影响我们的任何用户,但显然这里有一些问题.我想知道以前有没有人遇到过这个问题?任何解决方法,修复?
我尝试使用Application Loader
包含Associated Domains
在应用程序权利中的应用程序上传应用程序,但我有一个错误:
错误ITMS-90046:"无效的代码签名权利.您的应用程序包的签名包含iOS上不支持的代码签名权利.具体而言,值'applinks:http://XXX.internal/ '用于密钥'com.apple.developer.不支持"Payload/MyApp.app/MyApp"中的关联域."
ON
在苹果开发者的App Ids中检查了Associated Domains可能是什么问题?我已经尝试重新创建所有证书,配置文件等.
我正在实现应用程序索引,我想我错过了什么,但我不知道是什么.
按照指南,我将我的intent-filters添加到应用程序并实现了我的活动所需的内容.
我的应用程序的包是com.towers.hotelsclick和相关的网站(我还没有把链接rel元标记,因为我只是测试)是www.hotelsclick.com
我在指南中看到了以下intent-filter示例
<activity
android:name="com.example.android.PetstoreActivity"
android:label="@string/title_petstore">
<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:scheme="http" />
<data android:scheme="https" />
<data android:host="www.examplepetstore.com" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
所以我用这种方式写了我的:
<activity
android:name=".ActivityForAppIndexing"
android:label="@string/title_activity"
android:screenOrientation="portrait" >
<intent-filter android:label="@string/app_name">
<data android:scheme="android-app"
android:host="com.package.myappname" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http"
android:host="www.mywebsite.com" />
<data android:scheme="https"
android:host="www.mywebsite.com" />
</intent-filter>
</activity>
Run Code Online (Sandbox Code Playgroud)
此外,我编写了一个内容提供程序来解析URI
<provider
android:name=".contentproviders.HotelDetailsContentProvider"
android:authorities="com.towers.hotelsclick" >
</provider>
Run Code Online (Sandbox Code Playgroud)
应该如下映射URI:
private static final String BASE_PATH = "https";
private static final String AUTHORITY …
Run Code Online (Sandbox Code Playgroud) android uri deep-linking android-app-indexing google-app-indexing
我想使用assetlinks.json进行appindexing.我应该使用SHA256指纹,但是当我在Android Studio中打印出signedReport时,我只有SHA1.我可以使用SHA1,如果没有,我如何获得SHA256签名应用程序?
使用Manish Jain的答案我已经设法只列出调试键,这比我自己做的更多,但是如果我将实际的keystore路径和jks文件放在路径中,"keytool -list -v -keystore"C:\Users\_自我\ Keystores\android.jks"-alias mykey -storepass 1password -keypass 2password"出现了一组不同的密钥,我假设它是释放密钥集.
大问题是为什么android studio只在我从Gradle打印出signedReport时列出了调试键,为什么它说"Variant:releaseUnitTest,Config:none"?任何的想法?
顺便说一句,这个问题与建议的副本无关.
编辑:回复jyomin的问题2.我希望它也能帮助其他人.
*****对于Release:1,请转到:C:\ Program Files\Java\jdk1.7.0_25\bin(或者你的jdk文件所在的位置)2,在win explorer 3的地址栏中输入"cmd",添加:keytool -list -v -keystore"C:\ Users\yourUserName\Keystores\android.jks"-alias yourAppName -storepass yourPasswordToKeystore -keypass yourPasswordToRequiredAppKey
小心!!!如果密钥库中有多个密钥,它可能无法为您提供与给定应用程序匹配的正确密钥!
为您的应用获取SHA256的另一种方法:在开发者控制台或Firebase上,您可以在某处找到相关的SHA256密钥.我现在找不到它,但是如果你继续寻找它,它就在那里.
我刚在Google Play开发者控制台上找到它:
它会显示SHA键
祝好运!
android sha android-app-indexing google-app-indexing firebase-app-indexing
我想在我的网页和iOS应用中使用Google App Indexing.我确实支持使用Apples Search的Universal Links(或Google lingo中的深层链接)并相应地设置我的网页.
从谷歌文档我无法确定是否真的需要添加谷歌应用程序索引SDK.SDK没有给我任何必需的功能,我宁愿跳过它 - 但谷歌是否依靠SDK才能做到这一点?
我没有对应用程序内容进行任何索引,我唯一想要编入索引的是网页,并获得相应的深层链接.
好的,所以我知道如果我有一个网站和一个应用程序大致显示相同的内容,应用程序索引可用于在应用程序中打开指向该网站的链接(如果用户安装了它)。
为此,需要在网页中指定深层链接,以指定应用程序和内容的 URI。这也让 Googlebot 知道网页到应用程序的意图连接,以便它可以在搜索结果等中显示内容(即indexing
)。还可以指定处理网站 URL 的意图过滤器,因此指向您网站的链接可以自动打开应用程序并在那里显示内容,甚至无需在浏览器中打开网页。
我在理解上遇到问题的部分是,在 Android 应用程序中,您添加了“相反”的代码(可以由 Android Studio 自动生成)。
例如
@Override
public void onStart() {
super.onStart();
// ATTENTION: This was auto-generated to implement the App Indexing API.
// See https://g.co/AppIndexing/AndroidStudio for more information.
client.connect();
Action viewAction = Action.newAction(
Action.TYPE_VIEW, // TODO: choose an action type.
"Main Page", // TODO: Define a title for the content shown.
// TODO: If you have web page content that matches this app activity's content,
// make sure this …
Run Code Online (Sandbox Code Playgroud) android android-app-indexing google-app-indexing firebase-app-indexing