如果您的应用程序具有不同的目标,并具有对应的不同URL方案(例如blackbox://meta
,blackbox-alpha://meta
),则您可能会发现自己想在运行时动态查找当前应用程序的方案。你该怎么做?
以下内容不有效:
[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleURLSchemes"]
答案 0 :(得分:3)
URL schemes数组实际上存储在 URL Types 数组下。假设您只有一种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