我在我的项目中实现了通用链接,但测试服务器没有域名。
按照官方文档中的步骤操作:https : //developer.apple.com/library/ios/documentation/General/Conceptual/AppSearch/UniversalLinks.html
我在关联域中填写了“applinks:{ip address}”,但它不起作用。
通用链接功能是否必须使用域名?
我想允许我的用户打开我们的应用程序(如果已安装,否则重定向到App Store应用程序页面),每当用户点击我们网站的网址时.
我发现Universal Links是从iOS-9开始实现上述要求的一种方式.我也知道Web服务器和Apple Developer门户要涵盖的要点.
唯一的问题是如何在Appcelerator Titanium app中启用Associated Domains?
提前感谢任何线索或帮助.
最近我升级到xcode 8.我已经配置了通用链接,并且在我发布基于xcode 8的新版本之前一直工作正常.
令人惊讶的是,当我在模拟器中测试时,通用链接工作 - 我可以按右上角,然后在Safari中打开 - 再次我按右上角,它显示我打开应用程序的OPEN横幅.同时点击电子邮件中嵌入的URL也可以.
但是我无法在我的设备上打开应用程序中的任何链接.我的应用名称是kabuter和apple-app-site-association文件一样https://www.kabuter.com/.well-known
我检查并确认我的应用版本包含授权文件(其中包含applinks条目).
在apple appsearch-validation-tool中,我得到:
链接到应用程序
需要采取的行动
无法提取Universal Links所需的信息.了解如何实施推荐的通用链接.
提取的数据
错误没有具有域权利的应用程序用于验证深层链接双重身份验证的权利数据来自当前发布的应用程序版本.此数据可能需要48小时才能更新.
branch.io验证器https://branch.io/resources/universal-links/通过所有测试.
当我将设备连接到xcode时,我也会在日志中看到这个:
logging for process kabuter
2016-10-12 19:48:27.247786 kabuter[619:90471] WF: _userSettingsForUser mobile: {
filterBlacklist = (
);
filterWhitelist = (
);
restrictWeb = 1;
useContentFilter = 0;
useContentFilterOverrides = 0;
whitelistEnabled = 0;
}
2016-10-12 19:48:27.248052 kabuter[619:90471] WF: _WebFilterIsActive returning: NO
Run Code Online (Sandbox Code Playgroud)
有没有人遇到这个问题并找到解决方案?有什么指针吗?
我正在使用Apple Universal Links概念continueUserActivity 在我的应用程序内部方法中读取/获取共享链接或URL(用户通过消息,电子邮件和其他社交应用程序点击它).
如果用户单击链接并且应用程序已安装在设备上,则continueUserActivity调用该方法并正常工作.
如果用户点击链接并且设备上没有安装应用程序,则链接会自动重定向到Apple Store以安装应用程序(使用的是javascript),安装应用程序后如果打开它,则该continueUserActivity方法根本不会调用.continueUserActivity如果您从Apple Store安装应用程序并打开它,方法是否会调用?我错过了什么吗?请帮帮我.
我正在设备上测试它 iOS 9.3.1
-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray * restorableObjects))restorationHandler {
if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
if ([[userActivity.webpageURL absoluteString] hasSuffix:@"12345"]) {
// Open Item details view controller
}
}
return YES;
}
Run Code Online (Sandbox Code Playgroud) 在设置通用链接时遇到一些问题。
创建了一个.well-known/apple-app-site-association文件并从我们的 applinks 子域提供它(没有重定向)。
在应用程序的功能中启用关联域并包含我们的 applinks 域 applinks:applink.*******.com
在 developer.apple.com 上为我们的 appID 启用关联域
Apple 的 applinks 验证器为我们提供:
在这一点上,我开始认为它可能与我们的扩展有关。(我们的应用程序中打包了两个)有谁知道我们是否还需要为扩展启用关联域?
当我已经调试应用程序时,通用链接和深层链接有效。
但是我无法测试从冷启动打开链接。即当应用程序未运行时,点击野生动物园上的链接。
如果Xcode不启动应用程序本身,我看不到如何附加调试器。
我以为答案将是创建自定义方案,但是我看不到任何通过Web链接打开应用程序的选项。
知道为什么从 iOS 13 应用程序链接(通用链接)开始,这通过Apple-App-Site-Association停止工作来定义?
我在 ApplicationDelegate 和 SceneDelegate 中有 2 个实现。现在仅适用于 SceneDelegate 中的实现,并且仅当应用程序处于后台时,如果我杀死应用程序,则不会调用方法 continueUserActivity 。我添加了触觉反馈来跟踪这个方法调用,但它永远不会在 ActivityDelegate 或 SceneDelegate 中被调用。
// MARK: - Universal Links support
extension SceneDelegate {
func scene(_ scene: UIScene, willContinueUserActivityWithType userActivityType: String) {
print("[Scene] Will continue user activity: ", userActivityType)
let generator = UINotificationFeedbackGenerator()
generator.notificationOccurred(.success)
}
func scene(_ scene: UIScene, didFailToContinueUserActivityWithType userActivityType: String, error: Error) {
print("[Scene] Did fail to continue user activity: ", userActivityType)
}
func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
print("[Scene] …Run Code Online (Sandbox Code Playgroud) 我刚刚开始使用 Bitnami Wordpress for Apache,但在为 iOS 实现密码自动填充时遇到问题:https://developer.apple.com/documentation/xcode/supporting-linked-domains
简而言之,应该可以从域上的目录apple-app-site-association获取名为的文件:.well-known
https://<fully qualified domain>/.well-known/apple-app-site-association
Run Code Online (Sandbox Code Playgroud)
与application/json
问题是,我遇到的几乎所有教程都已经过时了。以配置 apple-app-site-association 文件与 WordPress为例。他们正在谈论类似的路径/etc/apache2/sites-available/default-ssl,但我没有目录/etc/apache。
我通过 SFTP 连接到服务器。我看到我的根目录是/home/bitname/. 在其中,我看到一个stack包含 wordpress 目录的目录。我将文件上传到此目录,然后可以立即从我的域下载它。但是当我创建一个新.well-known目录并将文件放入其中时,我无法访问以下域:
https://<fully qualified domain>/.well-known/apple-app-site-association
我像这样重新启动了 Apache:
sudo /opt/bitnami/ctlscript.sh restart apache
但这不起作用。有什么建议么?
我已经在我的应用程序和服务器端实现了通用链接.安装应用程序后,一切正常.如果设备上没有安装应用程序,我点击说明或邮件的通用链接,我会被重定向到我可以下载应用程序的应用程序商店.但是,在下载完成时,如果我在应用程序商店页面中单击"打开",则不会调用下面的应用程序委托方法:
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray * __nullable restorableObjects))restorationHandler
Run Code Online (Sandbox Code Playgroud)
因此,我无法执行某些操作以响应userActivity.webpageURL应用程序运行或以前安装在设备上时通常会遇到的操作.这是正常的行为吗?即如果未安装该应用,通用链接将仅作为从应用商店安装应用的媒介?
我正在尝试通过branch.io为iOS应用(Swift 4.2)实现深层链接。我已经完全按照分支文档中的概述集成了iOS SDK。为了测试集成,我运行了branch.io通用链接验证脚本,并成功通过了该脚本。
通用链接不起作用的方法:
单击“注释”或“消息”中的深层链接会打开应用程序,但不会传递任何数据。在查看调试日志时,Branch报告的网址为完全空白(example.app.link?%24identity_id=611647344982868361)而不是(example.app.link/hj86HlvvMk2?%24identity_id=611647344982868361)。这与不使用深层链接手动打开应用程序相同。通过延迟的深层链接功能也无法获得任何数据。
使用URI方案而不是通用链接: 如果我通过branch.io链接设置仪表板关闭了通用链接,则所有URL在浏览器中打开,而没有任何提示打开应用程序。但是,当我手动打开应用程序时,深度链接数据在启动时就可用(通过延迟链接功能)。
其他尝试:添加$uri_redirect_mode: 2到链接数据以强制应用打开并没有真正改变任何东西。唯一不同的是,对于URI方案,它在重定向到之前在Safari中显示错误$fallback_url。我还尝试过重新安装应用程序,清除Safari缓存和cookie,但未成功。
我还要提到,深层链接本身应该没有任何问题。在Android上,相同的深层链接可以完美运行。
两种方法都无法使用立即可用的Deeplink数据打开应用程序。还有其他选择可以使这项工作吗?
更新:URI和通用链接是单独的问题。我们通过仔细检查URI方案来使URI正常工作(这是不正确的)。对于通用链接,Swift 4.2的Branch文档中可能会存在一些错误。请参阅我的答案以寻求解决方案。
更新2019-02-05:分支文档已更新为Swift 4.2。一切都很好。
ios ×10
objective-c ×3
iphone ×2
appcelerator ×1
bitnami ×1
branch.io ×1
deep-linking ×1
ios13 ×1
ios9 ×1
swift4.2 ×1
wordpress ×1
xcode ×1
xcode8 ×1