【问题标题】:URL Opening Swift App - Open Works - Called Function Does NOT workURL 打开 Swift 应用程序 - 打开工作 - 调用函数不起作用
【发布时间】:2020-03-23 09:02:09
【问题描述】:

大家好——我是这里的新手......试图让我的第一个 iOS Swift(Xcode 11.2.1 / Swift 5 / iOS 13.2)应用程序通过 URL 打开并处理 URL 字符串。该应用程序打开得很好,但函数(方法?)似乎没有被调用。这是我得到的:

class AppDelegate: UIResponder, UIApplicationDelegate {

    func application(_ application: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
        print("Here I iz ... in the URL responding bit.")
        print(url)
        return true
    }

...

该代码在我项目的 AppDelegate.swift 文件中。

这就是我的 Info.plist 文件中的内容。

我通过 Safari 在设备上和模拟器中使用 confirmevent://HelloWorld 启动

正如我所说...应用程序正在打开,但我在 Xcode 调试区域中没有看到我的 打印语句 的任何结果。

在搜索其他帖子时,他们说我需要使用 “等待启动可执行文件” 将 Xcode 附加到应用程序,我已经这样做了,它确实在附加。 但是我注意到,当通过“等待可执行文件启动”选项打开时,我散布在我的应用程序中的几十个打印语句都没有出现。

任何/所有帮助将不胜感激。我花了 5 个多小时在网上搜索,但所有迹象都表明应该“正常工作”

【问题讨论】:

标签: ios swift xcode debugging


【解决方案1】:

我刚刚在这里找到了解决方案:application(...continue userActivity...) method not called in ios 13

诀窍是还为 iOS > 13 的应用程序实现 SceneDelegate.swift 函数。如果您打开 URL confirmevent://HelloWorld,则应调用此函数:

func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
    print(URLContexts.debugDescription)
}

【讨论】:

    【解决方案2】:
    WindowGroup {
        SampleView()
            .onOpenURL { url in
                //this url that was opened by your app
            }
        }
    }
    

    【讨论】:

      【解决方案3】:

      你需要在你的 appDelegate 中使用这个函数

      func application(_ application: UIApplication, continue userActivity: NSUserActivity,
                           restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
              if let incomingURL = userActivity.webpageURL {
                 print(incomingURL)
              }
              return false
      
      }
      

      【讨论】:

      • 我补充了,谢谢。我在 XCode 调试区域得到以下信息:当应用程序进入后台(以启动 Safari) 2019-11-27 13:45:56.029375-0500 iOSCreatorSample[22704:4117574] 无法结束BackgroundTask:不存在标识符为 8 (0x8) 的后台任务,或者它可能已经结束。中断 UIApplicationEndBackgroundTaskError() 进行调试。 当我的应用程序从后台返回时 2019-11-27 13:46:08.333802-0500 iOSCreatorSample[22704:4117574] [ZOOMCommon] 有键盘会隐藏通知,但键盘甚至不存在.
      • 我认为你想做的是一个深层链接,检查这个参考(medium.com/wolox-driving-innovation/…
      • 我已经完成了上述两个建议,但仍然没有迹象表明该函数/方法甚至被调用了。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-28
      相关资源
      最近更新 更多