UIApplicationDelegate openURL 的 SourceApplication 参数是否应该为零?

2023-12-28

我的 iOS 应用程序通过 UIApplicationDelegate 的 openURL 方法接收来自其他 iOS 应用程序的文件。我在应用程序中使用 NSString *SourceApplication 参数来跟踪将文件发送到我的应用程序的应用程序的名称。

在 iOS7 中,SourceApplication 参数始终使用“getdropbox.dropbox”、“google.Drive”或“evernote.iPhone.evernote”等字符串填充。

在我(和我的应用程序的其他几个用户)升级到 iOS8 后,SourceApplication 参数似乎总是为零。 url 参数已正确填充为发送到我的应用程序的文件的 URL。 iOS8 中似乎只有 SourceApplication 参数的行为发生了变化。

还有人在 iOS8 上看到这个吗? iOS8 有什么我不知道的变化吗?这是 iOS 的错误吗?

openURL 的 UIApplicationDelegate 协议参考 https://developer.apple.com/Library/ios/documentation/UIKit/Reference/UIApplicationDelegate_Protocol/index.html#//apple_ref/occ/intfm/UIApplicationDelegate/application:openURL:sourceApplication:annotation:


iOS 9+

除非应用程序是由您的团队创建的,否则该值为零

The docs https://developer.apple.com/documentation/uikit/uiapplication/openurloptionskey/1623128-sourceapplication#discussion say:

该键的值是一个 NSString 对象,其中包含发出请求的应用程序的捆绑 ID。如果请求源自属于您团队的另一个应用程序,UIKit 会将此键的值设置为该应用程序的 ID。如果原始应用程序的团队标识符与当前应用程序的团队标识符不同,则该键的值为 nil。

如果您“跳转到 sourceApplication 的定义”,您会看到

extension UIApplication.OpenURLOptionsKey {

    @available(iOS 9.0, *)
    public static let sourceApplication: UIApplication.OpenURLOptionsKey

(目前,我怀疑是否有任何可用文档来解释 iOS 8 中报告的行为。)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UIApplicationDelegate openURL 的 SourceApplication 参数是否应该为零? 的相关文章

随机推荐