objective-c - 如何在 Swift 中使用 URL 方案获取发件人的 ID

标签 objective-c swift

我正在将一些遗留的 Objective-C 代码翻译成 Swift。在这里,我正在努力处理一些 URL 方案处理。

应用程序委托(delegate)中的以下 Objective-C 代码返回外部应用程序的 id,它通过 URL 方案发送消息:

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url
  options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {

      NSString *appName = [options valueForKey:@"UIApplicationOpenURLOptionsSourceApplicationKey"];
      NSString *urlVal = [url absoluteString];
      NSLog(@"external url scheme call from app %@: %@", appName, urlVal);
      return TRUE;

  }

在 Swift 中,存在相同的方法,但在选项字典中,不再有关于发送应用程序的信息。此外,我无法打印
国外申请的id:
func application(_ app: UIApplication, open url: URL, 
     options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {

       let appName = options[.sourceApplication]
       let urlVal = url.absoluteString
       NSLog("external url scheme call from %@: %@", appName, urlVal)
       return true

}

所以问题是:如何在上述方法的 Swifts 实现中获取发送应用程序的 id?

最佳答案

下面是您问题的确切答案。检查此键options[.sourceApplication] .

// --------- OPEN APP WITH URL -----------
func application(_ application: UIApplication,
                 open url: URL,
                 options: [UIApplication.OpenURLOptionsKey : Any] = [:] ) -> Bool {        

    // Determine who sent the URL.
    let sendingAppID = options[.sourceApplication]
    print("source application = \(sendingAppID ?? "Unknown")")

    if let string = sendingAppID as? String, string == "com.apple.springboard" {
        if let components = url.queryCryptoenterDict {
            qRcode(dictionary: components)
        }
        return true // just to quit from function
    }
}

在哪里 qRcode(:)是我的二维码处理程序。

关于objective-c - 如何在 Swift 中使用 URL 方案获取发件人的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55651876/

相关文章:

swift - 无法将表达式的类型 '(@!value UIImage?) -> $T3' 转换为类型 'UIImage?'

ios - UICollectionView InteractiveTransitionToCollectionViewLayout 崩溃并出现异常

objective-c - 在 map View 上绘制 MKCircle

ios - (Daniel Gindi 制作的图表)雷达图 - 设置 Y 最小值和最大值

ios - 使用 Swift 进行在线数据存储和传输

ios - Swift Firebase downloadURL 返回 nil

ios - swift 。 SIGABRT : cast value of type '__NSCFDictionary' to 'NSMutableArray'

iphone - 如何在iPod后台添加更多自定义控件?

ios - 可能有两种字体大小的 NSString

ios - Facebook iOS SDK 4.0 "App Invites"在没有 iOS 通知的情况下发送