Этот фрагмент выводит схемы URL-адресов, определенные в приложении Info.plist
:
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)" }
}
А вот и он, в моем универсальном пакете расширений для Swift.
Потрясающий! Я попробую, чуть позже. Это, вероятно, получит зеленый чек. Я знаю, что это очень короткий вопрос, но он может иметь большое значение. Спасибо!