if let types = Bundle.main.infoDictionary?["CFBundleURLTypes"] as? [[String: Any]] {
var result = [String]()
for type in types {
guard let schemes = type["CFBundleURLSchemes"] as? [String] else { continue }
guard let scheme = schemes.first else { continue }
result.append(scheme)
}
print(result)
}
/* ###################################################################################################################################### */
// MARK: - Fleshing out the Addressable (General) -
/* ###################################################################################################################################### */
public extension LGV_MeetingSDK_AddressableEntity_Protocol {
/* ################################################################## */
/**
This fetches the first URL scheme from the bundle, renders it as a String, and returns it.
*/
var urlScheme: String {
guard let bundleTypes = Bundle.main.infoDictionary?["CFBundleURLTypes"] as? [[String: Any]],
let myURLScheme = (bundleTypes.first?["CFBundleURLSchemes"] as? [String])?.first
else { return "" }
return myURLScheme
}
}
/* ###################################################################################################################################### */
// MARK: - Fleshing out the Addressable (User) -
/* ###################################################################################################################################### */
public extension HeartOfRecovrr_Member {
/* ################################################################## */
/**
This returns an addressable URL for this member record.
*/
var urlString: String { "\(urlScheme)://user/\(id)" }
}
2条答案
按热度按时间guz6ccqo1#
此代码段打印应用的
Info.plist
中定义的URL方案:mfuanj7w2#
这个问题是通过利用Gereon's答案解决的。下面是我的做法:
它就在这里,在我的通用Swift扩展包中。