在 info.plist 文件中,我配置URL Identifier
并URL Scheme
成功。我也可以使用自定义 URL 打开应用程序。问题是当应用程序第一次启动该方法时
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>)
Run Code Online (Sandbox Code Playgroud)
不叫。
我有一些基于上述方法的依赖功能。所以当应用程序第一次启动时,我在我的应用程序中看不到任何东西。
我还在方法中添加了代码
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let _ = (scene as? UIWindowScene) else { return }
let url = connectionOptions.urlContexts.first?.url
}
Run Code Online (Sandbox Code Playgroud)
但我在这里得到的 url 为零。
但是,如果我的应用程序处于后台模式并且我点击了 URL,那么上述方法调用成功并且相关功能正常工作。以下是我scene(_:openURLContexts:)
在sceneDelegate
.
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>){
let url = URLContexts.first?.url
let urlString: String = url!.absoluteString
if let urlComponents = URLComponents(string: urlString),let queryItems …
Run Code Online (Sandbox Code Playgroud) 我找到了两个从Safari网页打开我的应用程序的选项:在我的应用程序项目Info.plist
或Apple的Universal Linking中创建的自定义URL方案.显然,自定义URL方案是最容易设置的方案,但我遇到的问题是Safari显示一个确认窗口,询问"打开myapp
?" 首先,用户必须在应用实际打开之前点击确定.我希望我的应用程序在打开方案时自动打开,我被告知唯一的方法是通过Universal Linking(如果不是这样,请纠正我).但是,如果这是真的,我想知道是否有可能以任何方式将所需apple-app-site-association
文件放在http://
域而不是https://
?根据官方的Apple文档,正确的通用链接的格式明确地开始,https://
但是https://
如果没有重定向几次就无法加载我的域名,这会混淆我为在应用程序中执行其他任务而编写的Web服务.这个问题之后我留下的两个主要问题:
1)使用自定义URL方案(myscheme://
)来解决确认提示是否真的不可能?如果不是不可能,我该怎么做?
2)如果我必须使用Apple Universal Linking,我可以使用http://
域吗?如果是这样,我该怎么办?现在,如果我加载通用链接,它只显示apple-app-site-association
文件中的字典,我很确定不应该发生.我被告知它应该NSUserActivity
向我的应用代表发送一个对象.如何通过http://
链接完成此操作?