我正在开发一款Android应用。
点击按钮后,会生成深层链接并与朋友分享。
问题在于,点击共享的深层链接后,即使安装了应用程序,Play商店也会打开。
我关注了this文档。
这里是intent-filter
:
<!-- [START link_intent_filter] -->
<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.com" android:scheme="http"/>
<data android:host="example.com" android:scheme="https"/>
</intent-filter>
<!-- [END link_intent_filter] -->
以下是我如何创建网址(手动):
Uri BASE_URI = Uri.parse("https://domainname.com/");
packageName = getBaseContext().getPackageName();
APP_URI = BASE_URI.buildUpon().path(requestID.getText().toString().trim())
.appendQueryParameter("query1", query1.getText().toString())
.appendQueryParameter("query2", query2.getText().toString())
.appendQueryParameter("query3", query3.getText().toString()).build();
try {
String encodedUri = URLEncoder.encode(APP_URI.toString(), "UTF-8");
deepLink = Uri.parse("https://myappcode.app.goo.gl/?link="+encodedUri+"&apn="+holder.packageName+"&amv="+16+"&ad="+0);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
这是收到的深层链接/网址:http://domainname.com/-KcldzAeJHrPS5tnfxTk?query1=query1&query2=query2&query3=query3
这里可能有什么问题?
答案 0 :(得分:0)
至少有三件事可能是错的:
您打开网址的方式: 在Android设备上将URL写入浏览器窗口时,我发现了类似的问题。将链接添加到电子邮件并单击它时,应用程序已打开。你写“点击”所以也许这不是问题。
您的网址与您的应用/广告资源不匹配: 您尚未为协议或主机添加正确的意图处理程序以更正清单中的位置,或者您的网址与您添加的内容不匹配。或者网址中给出的apn与您的应用包名称不符。基于当前状态的问题,主机不匹配。
您没有共享深层链接网址,只是一个普通的网址: 如果您希望共享网址打开预安装的应用,您的朋友将需要点击(在电子邮件或类似网址上)完整的深层链接网址,然后将链接指向播放商店(如果未安装应用)或打开应用(如果正确实施)。普通网址刚刚在浏览器中打开。根据问题的当前状态,可能就是这种情况。
如果修复上述操作无效: 尝试将特定的Android链接添加到您的网址,如下所示:
https://<myappcode>.app.goo.gl/?link=http://domainname.com&apn=com.doman.app&amv=16&ad=0&al=myscheme://any-string-you-choose
之后你的意图过滤器应该是这样的:
<!-- [START link_intent_filter] -->
<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="any-string-you-choose" android:scheme="myscheme"/>
</intent-filter>
<!-- [END link_intent_filter] -->
我更喜欢这种方式,因为与仅使用链接相比,它更灵活一些。当然,使用此方法时,包名称和其他内容也必须正确。 Android链接是仅在Android应用程序中打开的URL,有点记录不清,请从here(示例)进行检查。另外,我对另一个问题reply给出了一些如何使用它的例子。
(编辑19.3.2018)似乎Firebase不再完全支持'al ='了。该代码有效,但文档和Firebase控制台生成的网址中缺少该代码。