首页 > 解决方案 > iOS 应用程序检索其 URL 方案的最佳方式是什么?

问题描述

如果您的应用程序具有不同的目标和相应的不同 URL 方案(例如blackbox://meta, blackbox-alpha://meta),您可能会发现自己希望在运行时动态查找当前应用程序的方案。你怎么能那样做?

以下不起作用

[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleURLSchemes"]

标签: ios

解决方案


URL 方案数组实际上存储在URL 类型数组下。假设您只有一种 URL 类型,并且列出的第一个方案是您所追求的方案:

Objective-C

NSArray *urlTypes = [NSBundle.mainBundle objectForInfoDictionaryKey:@"CFBundleURLTypes"];
NSArray *urlSchemes = [urlTypes firstObject][@"CFBundleURLSchemes"];
NSString *urlScheme = [urlSchemes firstObject];

迅速

let urlTypes = NSBundle.mainBundle.object(forInfoDictionaryKey: "CFBundleURLTypes") as! [[String:Any]]
let urlSchemes = urlTypes.first?["CFBundleURLSchemes"]! as! [String]
let urlScheme2 = urlSchemes.first

推荐阅读