在Swift中应用openURL

时间:2014-10-03 11:41:50

标签: swift ios8 appdelegate

我遇到了Appdelegate方法OpenURL的问题。

我已设置导入的UTI和文档类型。但是当从邮件附件打开我的应用程序时,当我实施该方法时,应用程序会立即崩溃。

折旧的handleOpenURL有效,但不是OpenURL吗?

目前我在实现中没有代码,只是返回true。

func application(application: UIApplication, openURL url: NSURL, sourceApplication: String, annotation: AnyObject?) -> Bool {
    return true
}

崩溃说Thread 1: EXC_BAD_ACCESS (code-1, address-0x0)

我真的不想使用弃用的方法。

3 个答案:

答案 0 :(得分:2)

这是Swift编译器自动生成的方法签名与实际签名之间签名不匹配的典型特征。当你尝试将nil从Objective-C传递给Swift显式解包的可选项时,就会发生这种情况。更改annotation参数以隐式展开,您应该是gtg。

答案 1 :(得分:1)

这个问题让我头疼了一个星期 我的应用程序在使用社交媒体登录后仍然崩溃,例如微信/ LinkedIn.But Facebook和Google登录工作正常。

我注意到我的应用程序在确认登录微信应用程序后将继续崩溃,并将进入前台。并且出现 BAD EXCESS 错误。我已尝试删除 AppDelegate 上的应用程序打开网址,应用程序不会崩溃,但社交媒体登录的操作无效。所以我发现我的问题出在特定的方法上。在搜索网页后,我发现我使用已弃用的ApplicationOpenUrl 方法作为https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623073-application的参考

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
    let sourceApplication = options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String
    let annotation = options[UIApplicationOpenURLOptionsKey.annotation]
    let application = app

    return true
}

请注意,已弃用的版本正在使用注释:如果您已连接到微信等Obj-c框架,则会导致问题。 所以我做的是,我将我的代码换成新格式

<input #fileUpload type="file" (click)="fileUpload.value = null"(change)="importFile($event)" style="display:none"
accept="image/*">
<button (click)="fileUpload.click()">  </button>

希望这有帮助。它也将成为我的功能参考。谢谢StackOverflow

答案 2 :(得分:1)

Muhammad Asyraf的答案的Swift 5版本:

    func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
        let sourceApplication = options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String
        let annotation = options[UIApplication.OpenURLOptionsKey.annotation]

        return true
    }