我的 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(使用前将#替换为@)