我正在尝试在我的Android应用程序中实现深层链接.我一直在关注这个指南.我在Android清单中启动了Android活动并进行了intent-filter:
<activity
android:name=".MyActivity"
android:parentActivityName=".MainActivity" >
<intent-filter android:label="@string/filter_title_deep_link">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="com.example" />
</intent-filter>
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity"/>
</activity>
Run Code Online (Sandbox Code Playgroud)
我从adb产生这个意图:
adb shell am start -W -a android.intent.action.VIEW -d "com.example://test" com.example
Run Code Online (Sandbox Code Playgroud)
正在使用正确的意图数据创建活动,并按预期运行.但是,按下后退按钮后,应用程序退出.MainActivity正如parentActivityNameAndroid清单中所指出的那样,我期待构建后备栈.显然事实并非如此.
在这种情况下,如何将父活动添加到后台堆栈?
我想,如果我可以使用一个TaskStackBuilder如图所示这里在通知的情况下,但不知道它是如何工作的.
也许我应该有一个中间Activity来构建主要活动,例如:
TaskStackBuilder.create(this)
.addParentStack(MyActivity.class)
.addNextIntent(new Intent(this, MyActivity.class))
.startActivities();
Run Code Online (Sandbox Code Playgroud)
?
android deep-linking android-intent android-activity back-stack
我开发了一个即时应用程序并将其发布到游戏商店,还有一个与Instant App相关联的网站.从这里测试了测试工具的app链接 .
点击其他应用程序(gmail,环聊)中的链接后打开该应用程序,但是从谷歌搜索点击我的网站是打开网页而不是即时应用程序.为了将网页从Google搜索重定向到应用,我还有什么需要做的吗?
我在Play商店发布了我的即时应用程序.当我点击gmail的链接时,它会在某些设备中以即时应用程序的形式打开(三星s6 note,moto g4 plus)
在某些设备上,它不能作为即时应用程序打开,但buzzfeed.com/tasty作为即时应用程序打开.(一加3加一加5).
我的数字资产链接是https://abdcoop.mybuzztm.com/.well-known/assetlinks.json
谁能够建议我缺少什么?
android deep-linking android-app-indexing applinks android-instant-apps
我正在我的 React Native 应用程序中实现与 expo 的深度链接。我已经成功地使用此代码和本教程以及本文档来将其调整为我的嵌套堆栈:
const linking = {
prefixes:[prefix],
config: {
screens: {
Drawer: {
screens: {
Tabs: {
screens: {
Profile:"profile"
}
}
}
},
}
}
}
return (
<NavigationContainer linking={linking}>
<RootStackScreen actions={actions} showLoader={showLoader} user={user} {...props} />
</NavigationContainer>
)
Run Code Online (Sandbox Code Playgroud)
}
如果我使用myscheme://profile它,它会按预期工作,但前提是该应用程序在后台打开。当应用程序关闭时,它只是在我的初始主屏幕中打开它,我尝试谷歌搜索和搜索,但找不到任何适合我所做的解释。我还尝试添加getInitialRoute该功能linking,该功能在应用程序关闭并从深层链接打开时触发,但无法弄清楚如何使用它来激活导航。
async getInitialURL() {
const url = await Linking.getInitialURL(); // This returns the link that was used to open the app
if (url != null) { …Run Code Online (Sandbox Code Playgroud) android通用深层链接说明需要您上传.well-known/assetlinks.json进行验证。Expo 深度链接文档指示您按照官方 Android 文档格式化文件,但该文档假设您正在使用 android studio 来构建您的应用程序。 https://developer.android.com/training/app-links/verify-site-associations
\n\nsha256_cert_fingerprints:您的应用\xe2\x80\x99s\n签名证书的 SHA256 指纹。您可以使用以下命令通过 Java keytool 生成\n指纹: keytool -list -v -keystore\nmy-release-key.keystore
\n
该文档还不清楚 namespace需要什么值。
根据官方文档,Firebase Dynamic Links 将被弃用。
不再建议在新项目中使用 Firebase 动态链接。将来,动态链接服务将关闭,但从公告日期起您将有至少 12 个月的时间进行迁移。
它建议我们使用App Links或Universal Links,但它们没有提供 Firebase 动态链接的完整功能,例如在不同平台上的行为,如下图所示。
有什么方法可以复制 Firebase 动态链接在不同平台上的行为吗?
我希望在新的第四代Apple TV上打开Netflix应用程序中的节目或电影的深层链接.
我可以在iOS上进行深层链接工作.以下链接将Netflix应用程序打开到特定的节目或电影.
nflx://title/{showID}
for house of cards it's: nflx://title/70178217
Run Code Online (Sandbox Code Playgroud)
当我在Apple TV上尝试相同的格式时,所有发生的事情都是在没有打开特定节目或电影的情况下打开Netflix应用程序.Siri搜索可以直接打开应用程序到媒体项目,所以似乎应该有一种方法来实现这一点.
所以我想弄清楚是否可以深度链接没有当前安装的应用的用户.以下是我要做的事情:1)用户在移动浏览器中点击网站上的深层链接.2)用户被带到应用程序商店安装应用程序3)安装后,用户将被带到应用程序内特定内容的深层链接.
到目前为止,我发现的最接近的是使用Android应用程序安装横幅,但这不是我正在寻找的.这甚至可能吗?
以下是页面底部附近Android App安装横幅的链接:https://medium.com/@ageitgey/everything-you-need-to-know-about-implementing-ios-and-android-mobile-deep -linking-f4348b265b49#.evsxzudwj
我们的用户不时收到电子邮件,例如更改密码.当他们点击链接时,我希望将它们发送到我们的网站,但我们的Android应用程序会被打开.
链接例如是https://www.ourdomain.com/change-password/{random-string}.
我们在应用中启用了深层链接,但它们的配置方式如下:
<intent-filter android:label="...">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="customhost"
android:pathPrefix="/"
android:scheme="https" />
<data
android:host="www.ourdomain.com"
android:pathPrefix="/somethingelse"
android:scheme="https" />
<data
android:host="www.ourdomain.com"
android:pathPrefix="/againsomethingelse"
android:scheme="https" />
<data
android:host="someothercustomhost"
android:scheme="https" />
<data
android:host="andagainacustomhost"
android:scheme="https" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
因此该change-password部分不适合任何配置,但是我们的应用程序可能会被打开的原因是什么?
编辑
似乎问题是第一个data标签; 如果我评论出来,它的行为与预期一致(即https://www.ourdomain.com/change-password/1234不由应用程序处理).我不知道为什么这customhost是一个完全不同的词www.ourdomain.com...
我将发布到Facebook和Twitter的链接,以便深入链接到我的应用程序.我已开始使用Facebook进行测试,只要安装了Facebook应用程序,我的链接就可以正常运行.如果他们没有安装Facebook应用程序,他们就会被带到我的网站.
如果用户没有安装Facebook应用程序或者更频繁地点击我的应用程序的链接并且我总是希望将它们发送到我的应用程序,那么处理回退的最佳做法是什么?
如果用户在Facebook应用中点击深层链接时未安装我的应用,如何获取应用链接数据?在这个问题上,Facebook的文档很少令人惊讶.
我有一个很深的联系 https://fb.me/635533123230265
哪个返回HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>App Link</title>
<meta property="fb:app_id" content="619350481515196">
<meta property="al:android:url" content="instapanel://panel?utm_source=fb&utm_medium=cpi&utm_term=sf&utm_campaign=PROPE">
<meta property="al:android:package" content="com.instapanel.android">
<meta property="al:android:app_name" content="Instapanel">
<meta property="al:web:should_fallback" content="false">
<meta http-equiv="refresh" content="0;url=http://play.google.com/store/apps/details?id=com.instapanel.android">
</head>
<body>Redirecting...</body>
</html>
Run Code Online (Sandbox Code Playgroud)
如果已安装该应用程序,则AppLinkData appLinkData = AppLinkData.createFromActivity(activity);运行正常.
但如果没有安装应用程序,我相信我应该使用AppLinkData.fetchDeferredAppLinkData.我可以验证在facebook SDK中它发出HTTP请求并接收JSON,但它永远不会包含深层链接{"success":true}.有任何想法吗?
这是我的代码:
// Fetch data immediately.
AppLinkData appLinkData = AppLinkData.createFromActivity(activity);
App.setAppLinkData(appLinkData); // Handles appLinkData
// In case data is deferred because app wasn't installed yet.
AppLinkData.fetchDeferredAppLinkData(activity, …Run Code Online (Sandbox Code Playgroud) deep-linking ×10
android ×8
ios ×3
applinks ×2
expo ×2
facebook ×2
back-stack ×1
firebase ×1
navigation ×1
netflix ×1
react-native ×1
tvos ×1
twitter ×1