我有几个关于通用链接实施的问题。我从 SO/其他来源阅读了很多信息,但问题仍然存在。
\n首先,我想说我正确配置了项目(添加了权利,添加了对 AppDelegate 的回调),并使用我的团队 id/bundle id 正确配置了 AASA(我有来自其他服务的工作示例)。
\n问题#1。
\n根目录仍然是apple-app-site-association (进一步的 AASA)文件的工作位置吗?我如何使用 SWCD 检查它(应该是什么样的消息)?我发现了下一个问题:我们的网站基于 WordPress,将这个文件添加到目录有点问题(我对 WordPress 不熟悉 - 只有我同事的话).well-known。所以我同事就直接把AASA添加到根目录了。但是,通用链接不起作用。我从设备日志中只发现一条有意义的消息:(加载 AASA 文件失败)-
Request for \'<private>\' denied due to HTTP status 404 on route .wk for task AASA-1D53AE3E-9261-413F-B384-20D1DC57B81A { domain: ch\xe2\x80\xa6.dk?mode=developer, bytes: 0, route: .wk }\nRun Code Online (Sandbox Code Playgroud)\n似乎 SWCD 尝试从不存在的.well-known目录加载文件(因为 404 错误),但我不明白它是否尝试从根目录加载文件。
另外,我尝试通过 验证器运行我的网站- 但失败了。从这个来源来看- 使用根目录或目录没有区别.well-known- 它们都应该工作。
好吧,我们假设这个验证器是错误的。
\n问题2。
\n是否可以100%准确找到问题所在?(iOS 或后端/站点端)
\n目前尚不清楚 …
有没有办法使用 Google 地图URL 方案在 iOS 上启动具有多个站点的 Google 地图应用程序?
google-maps ios google-maps-sdk-ios swift ios-universal-links
我添加了一个新的文件路径/pass/,www.viki.com/apple-app-site-association但仍然不起作用。当我打开时www.viki.com/pass,它仍然打开 Safari。该 URLwww.viki.com/tv/1234仍然有效并打开 iOS 应用程序。问题是什么?
{
"applinks": {
"apps": [],
"details": [
{
"appID": "SNU9N24VYW.com.viki.viki-ios",
"paths": [ "/tv/*", "/videos/*", "/pass/" ]
}
]
}
}
Run Code Online (Sandbox Code Playgroud) 我正在我的应用程序中处理通用链接。
当 url 访问 safari 时,它应该显示在 Safari 浏览器顶部的横幅中打开应用程序的选项,但我没有看到它。
我创建了 apple-app-site-association 并将其托管在我的后端。当我查看https://www.xxxxx.com/apple-app-site-association 时。我可以看到 app-site-association 文件。
在权利中,我在 applinks:v100.xxxxxx.com/reset_password* 项下添加了关联域。链接是https://v100.xxxxxxx.com/reset_password?token=6d3ec67ff5bbf2214c895839c125e8f80ec83a90 和 apple-app-site-association 是这样的
{
"applinks": {
"apps": [],
"details": [
{
"appID": "Teamid.Bundelid",
"paths": ["*"]
}
{
"appID": "appid.Bundelid",
"paths": ["*"]
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
感谢您的快速回复。
我无法让 iOS 通用链接接受一种路径,但忽略另一种非常相似的路径。我想要在应用程序中打开的路径如下所示:
/details/123567,我想要忽略的路径如下所示:/details?search=123456。
起初,我将其列入白名单/details/*,但这会打开两种链接。添加NOT /details?query=*导致所有链接无法打开。我读到路径参数被忽略。
{
"applinks": {
"apps": [],
"details": [
{
"appID": "a.b.c",
"paths": [ "NOT /details?search=*", "/details/*"]
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
有没有办法成功区分这两种路径?
我正在尝试在我正在构建的移动应用程序中设置通用链接。我试图在我的网站上匹配的路径是www.mywebsite.com/route?query=xxx
苹果文档有一个示例apple-app-site-association文件,如下所示。
{
"applinks": {
"apps": [],
"details": [
{
"appID": "9JA89QQLNQ.com.apple.wwdc",
"paths": [ "/wwdc/news/", "/videos/wwdc/2015/*"]
},
{
"appID": "ABCD1234.com.apple.wwdc",
"paths": [ "*" ]
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
但此示例没有带有查询字符串的路径示例。
如何www.mywebsite.com/route?query=xxx在 apple-app-site-association 文件中匹配我的路线?
谢谢
deep-linking query-string ios react-native ios-universal-links
我正在尝试将通用链接集成到我的 iOS 应用程序中。为了进行测试,我在 Heroku 上配置了一个示例 Django 应用程序,并将 apple-app-site 关联文件添加到应用程序的根目录中。
对domain_url/apple-app-site-association 的GET 请求提供以下结果
{
"applinks": {
"apps": [],
"details": [
{
"appID": "XXXXXXXXXX.com.app.myapp",
"paths": ["*"]
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
以下是处理请求的 python 代码
path = os.path.join(os.getcwd(), 'apple-app-site-association')
with open(path , 'r') as myfile:
data=myfile.read()
response = HttpResponse(content=data)
response['Content-Type'] = 'application/json'
return response
Run Code Online (Sandbox Code Playgroud)
我用我的服务器 URL 尝试了branch.io 验证器,效果很好。
但https://search.developer.apple.com/appsearch-validation-tool/返回以下响应
错误 无具有域权利的应用程序 用于验证深层链接双重身份验证的权利数据来自应用程序的当前发布版本。此数据可能需要 48 小时才能更新。
我配置了关联的域并更新了配置文件。我尝试通过单击邮件应用程序和笔记应用程序中的链接在 iPhone 上打开该应用程序。但链接是向 Safari 打开,而不是应用程序。
我尝试重新安装该应用程序。但没有任何作用。我哪里做错了?
任何帮助将不胜感激。
AppDelegate在我的 Swift iOS 应用程序中,我在内部异步设置了初始视图控制器didFinishLaunchingWithOptions。现在我添加了一个通用链接,这样如果您转到手机上的相应 URL,它将自动打开应用程序中的正确页面(在本例中,它是一个密码重置 URL,如果正确,将打开密码重置表单在应用程序内)。
我正在处理application(_:continue:restorationHandler:)我continueUserActivity的AppDelegate.
如果应用程序已经在运行,则它可以工作,但否则链接处理会在我的应用程序完成设置初始视图控制器之前发生,并且didFinishLaunchingWithOptions返回时深层链接的视图控制器将被关闭。
在呈现视图控制器之前,如何确保应用程序已完成设置continueUserActivity?didFinishLaunching在设置视图控制器之前,我不能/不应该阻止返回,因此该方法在呈现初始视图控制器之前返回。
我知道我可以检查内部的用户活动字典,didFinishLaunchingWithOptions但continueUserActivity仍然被调用(如果仅在应用程序运行时调用它会简单得多,就像didReceiveRemoteNotification工作原理一样)。是否有一个条件要检查此方法内部以将链接处理推迟到didFinishLaunching?
一些简化的UIApplicationDelegate代码有助于解释:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
doSomeAsyncSetup(
completion: {
presentSomeViewController()
}
)
return true
}
func application(_: UIApplication, continue userActivity: NSUserActivity, restorationHandler _: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
if userActivity.activityType == NSUserActivityTypeBrowsingWeb,
let url = userActivity.webpageURL,
let …Run Code Online (Sandbox Code Playgroud) 我制作了一个通用链接,并在 Xcode 和 firebase 动态链接上设置了它们。
似乎在我自己的网站上使用标签效果很好。例如)链接到我的APP
但是当我尝试使用 javascript 时,例如 location.href = "universal_link" 。
那个根本不起作用,给我留言“应用程序未安装,去应用商店?”
使用带有 javascript 的通用链接有什么问题吗?
如果有,当用户访问我自己的网站时,我如何使用 javascript 或任何其他方式自动转发到通用链接。
提前致谢。
ios firebase ios-universal-links deeplink firebase-dynamic-links
我终于设法建立了通用链接,如果我点击该链接,它将打开我的应用程序。但不会在继续用户活动或源应用程序中显示。因为我想将其重定向到特定的视图控制器。我打开“ https:// www.myWeb.com/forgotPassword”的示例
它将重定向到forgotPasswordViewController,我需要阅读链接。
为什么它在继续的用户活动中不显示
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
print(url)
let urlHost : String = url.host as String!
print("HELLO")
let main : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let inner : ResetPasswordViewController = main.instantiateViewController(withIdentifier: "ResetPasswordViewController") as! ResetPasswordViewController
self.window?.rootViewController = inner
self.window?.makeKeyAndVisible()
return true;
}
func application(application: UIApplication, continueUserActivity userActivity: NSUserActivity, restorationHandler: ([AnyObject]?) -> Void) -> Bool {
if userActivity.activityType == NSUserActivityTypeBrowsingWeb {
let url = userActivity.webpageURL!
print(url)
print("HELLO WORLD")
} …Run Code Online (Sandbox Code Playgroud) ios ×9
swift ×4
deep-linking ×2
appdelegate ×1
deeplink ×1
django ×1
firebase ×1
google-maps ×1
heroku ×1
nsurlsession ×1
python-3.x ×1
query-string ×1
react-native ×1
swift3 ×1