- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我需要研究如何与新的(?)Google 搜索深度链接功能集成。
这似乎是一个相对较新的功能,但还不是很流行,所以我找不到很多关于它如何工作以及如何正确配置它的资源。
我已经阅读了 Google 的一些网站并观看了它的一些视频:
据我所知,我需要注册应用程序,更改 Activity list 中的数据( Intent 处理),还要更改 Activity 的代码,但我不确定我是否了解这一切是如何工作的以及配置它的最佳方式是什么。
即使阅读了那么多内容,我仍然想问一些有关使用 Google 搜索进行深度链接的问题:
首先是基本问题,以验证我是否了解它的全部内容:它允许通过“Google 搜索”应用程序为应用程序编制索引,但也必须安装这些应用程序。一旦用户点击“Google 搜索”应用中的某个项目,它就会转到您的应用,您会收到查询。这个对吗?除此之外还有什么吗?
他们写道 minSdkVersion 应该是 17 或以下 ( here )。为什么是“或以下”而不是“或以上”?
出于某种原因,示例的查询(如 here )只是简单的文本,但应用程序显示在那里。为什么显示? list 中的什么内容告诉 Google 搜索该应用可以处理此查询?代码示例显示 URL ...
是否可以在不注册的情况下通过 Google 搜索测试深层链接 (here)?我所发现的只是如何通过 adb 对其进行测试,但我不明白示例 ( here ) 中用户输入查询的位置。
深层链接是否需要用户可以通过网络浏览器访问的实际网站?我问这个是因为注册服务时有一个名为“验证网站”的步骤 (here)。
假设我想让用户通过应用搜索电话号码。我应该把“电话:”放在 list 中的“方案”(如图所示 here )部分吗?还是别的东西(或不止于此)? Google 搜索是否会准确知道何时显示该应用(例如,电话号码何时有效)?
是否可以在未安装应用程序的情况下使用此功能,以鼓励人们下载应用程序和/或通过真实网站进行搜索?
即使尝试测试它,我也失败了。 list :
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<!--should match to : https://somehost/search/?number=-->
<data android:scheme="https"
android:host="somehost"
android:pathPrefix="/search/?" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
代码:
Intent intent = getIntent();
String action = intent.getAction();
Uri data = intent.getData();
Log.d("AppLog", "action:"+action+" data:"+data);
adb 命令(来自 here):
adb shell am start -W
-a android.intent.action.VIEW -d "somehost/search/?050" com.example.user.myappli
cation
Starting: Intent { act=android.intent.action.VIEW dat=somehost/search/?050 pkg=c
om.example.user.myapplication }
Error: Activity not started, unable to resolve Intent { act=android.intent.actio
n.VIEW dat=somehost/search/?050 flg=0x10000000 pkg=com.example.user.myapplicatio
n }
我什至尝试了完全相同的示例,但使用了不同的包名,但仍然无法正常工作。
这里有什么问题吗?
最佳答案
Chrome 中的 Google 搜索应用和 google.com。用户需要登录。如果安装了应用程序,点击将深层链接到您的应用程序。
如果应用未安装,参与 App Indexing 可以帮助插入安装: http://googlewebmastercentral.blogspot.com/2015/04/drive-app-installs-through-app-indexing.html
此外,索引应用被视为“适合移动设备”,这是一个排名信号。在同一个博客上寻找“寻找更适合移动设备的搜索”。
如果您的 minSdkVersion 是 15、16、17,那没问题。如果是 18,那就不行了。
如果您的应用已被 Google 编入索引,则指向您应用的深层链接可能会出现在安装了您的应用的用户的 Google 搜索结果中。当您通过网站标记、站点地图或连接您的网站将这些链接告知 Google 时,Google 就会了解您的应用支持的深层链接。在应用索引文档中查找“提供深层链接”。
要查看您的内容可能针对哪些查询显示,请转到新的 Search Console (g.co/searchconsole) 并登录。然后,您需要查看您的网站的流量类型从 Google 获得的内容以及您的内容针对哪些查询获得的展示次数和点击次数。如果您的应用支持相同的链接并且您已将这些应用深层链接提供给 Google,那么这些是您的应用深层链接应该显示的相同查询。
对于 App Indexing,网站是必需的 -- 需要通过站点地图、网站标记或验证您的网站来告知 Google 从 Web URL 到应用深层链接的映射。但是,如果您使用站点地图或标记,则无需验证您的网站。如果您只是在谈论您的应用支持深度链接,则不需要网站。
您可以为深层链接使用任何您想要的方案,所以我猜 tel: 应该可以工作(尽管我自己还没有尝试过)。但是,在您提供到您的网络内容的映射之前,Google 不会自动知道何时显示此电话号码。参见 #3。
是的。截至 2015 年 4 月,这已成为可能。请参阅对 #1 的回答中的链接。
一些建议:
如果这不起作用,您可能需要为您的主机输入一个网站,即您需要一个域。如果这不是您想要做的,只需创建一个用于测试目的的自定义方案,例如
<data android:scheme="example"
android:host="gizmos" />
关于android - 通过谷歌搜索进行深度链接 - 它是如何工作的,以及在 list 中放什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29876972/
我想使用 R 预定义这样的列表 DATA<-list( list(list(),list(),list()), list(list(),list(),list()), list(list(),l
如何将一个列表添加到另一个列表,返回一个列表的列表? foo :: [a] -> [a] -> [[a]] 例如,我想要的结果是: foo [1,2] [3,4] 将是 [[1,2], [3,4]]。
我还没有在这里找到类似问题的解决方案,所以我会寻求你的帮助。 有 2 个列表,其中之一是列表列表: categories = ['APPLE', 'ORANGE', 'BANANA'] test_re
这个问题不同于Converting list of lists / nested lists to list of lists without nesting (这会产生一组非常具体的响应,但无法解决
原始列表转换为 List正好。为什么原始列表的列表不能转换为 List 的列表? { // works List raw = null; List wild = raw; } {
在下面的代码中,get()被调用并将其结果分配给类型为 List> 的变量. get()返回 List>并在类型参数为 T 的实例上调用设置为 ? ,所以它应该适合。 import java.util
原始列表转换为 List正好。为什么原始列表的列表不能转换为 List 的列表? { // works List raw = null; List wild = raw; } {
在insufficiently-polymorphic 作者说: def foo[A](fst: List[A], snd: List[A]): List[A] There are fewer way
我有下面的代码有效。 class ListManipulate(val list: List, val blockCount: Int) { val result: MutableList>
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 5 年前。 Improve this ques
在 scala (2.9) 中转换列表列表的最佳方法是什么? 我有一个 list : List[List[A]] 我想转换成 List[A] 如何递归地实现这一点?或者还有其他更好的办法吗? 最佳答案
我编写了这个函数来确定给定元素是否存储在元组列表的列表中,但目前它只搜索第一个列表。我将如何搜索其余列表? fun findItem (name : command, ((x,y)::firstlis
我创建了一个类名 objectA,它有 4 个变量:约会时间;字符串文本;变量 1,变量 2 我需要创建一个 ObjectA() 列表。然后首先按时间对它们进行分组,其次按 var1,然后按 var2
我有一套说法 char={'J','A'} 和列表的列表 content = [[1,'J', 2], [2, 'K', 3], [2, 'A', 3], [3,'A', 9], [5, 'J', 9
我有以下列表 List >>> titles = new ArrayList >>> ();我想访问它的元素,但我不知道该怎么做.. 该列表有 1 个元素,它又包含 3 个元素,这 3 个元素中的
转换 List[List[Long]] 的最佳方法是什么?到 List[List[Int]]在斯卡拉? 例如,给定以下类型列表 List[List[Long]] val l: List[List[Lo
我有一个来自 Filereader (String) 的 List-List,如何将其转换为 List-List (Double):我必须返回一个包含 line-Array 的第一个 Values 的
我收集了List> 。我需要将其转换为List> 。这是我尝试过的, List> dataOne = GetDataOne(); var dataTwo = dataOne.Select(x => x
这个问题在这里已经有了答案: Cannot convert from List to List> (3 个答案) 关闭 7 年前。 我没有得到这段代码以任何方式编译: List a = new Ar
这个问题在这里已经有了答案: Cannot convert from List to List> (3 个答案) 关闭 7 年前。 我没有得到这段代码以任何方式编译: List a = new Ar
我是一名优秀的程序员,十分优秀!