Jawaban:
Anda dapat terus menggunakan skema URL ketika Anda membangun aplikasi untuk iOS 9 dan Anda ingin memanggil skema URL, Anda sekarang harus mendeklarasikannya di Info.plist aplikasi Anda. Ada kunci baru, LSApplicationQueriesSchemes , dan di sini Anda perlu menambahkan daftar skema yang Anda inginkan canOpenURL aktif.
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbauth2</string>
</array>
Jika Anda menggunakan iOS9 maka ini penting untuk memperbarui file info.plist Anda. Anda hanya perlu melakukan 3 langkah 1. Pergi ke info.plist 2. Tambahkan bidang yaitu LSApplicationQueriesSchemes NSArray datatype. 3. Tambahkan item dengan nama data NSString sebagai fbauth2.
Itu dia. Cukup bersih dan jalankan. peringatan tidak akan ditampilkan lagi.
Untuk FaceBook SDK v4.6.0, tambahkan kunci berikut ke file plist Anda:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fb-messenger-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
</array>
not
memberitahu Anda todo ini, baik bahwa Anda menunjukkan itu!
Cukup ikuti penjelasan Facebook: Mempersiapkan Aplikasi Anda untuk iOS9
Apple menyebutkannya di: Privasi dan Aplikasi Anda Keynote 2015
Tolong jangan tambahkan ini ke CFBundleURLSkema Anda ... yang akan benar-benar HIJACK upaya aplikasi apa pun di Facebook auth, menyebabkan sembulan untuk menampilkan dialog "aplikasi X ingin membuka" ...
Anda TIDAK ingin melakukan itu.
cf:
https://developers.facebook.com/docs/applinks/ios
https://www.fireeye.com/blog/threat-research/2015/04/url_masques_on_apps.html
https://www.reddit.com/r/workflow/comments/2tlx29/get_url_scheme_of_any_app
Saya mendapatkan ini ketika menjalankan tes Kiwi karena target pengujian kami tidak memiliki akses ke bundel utama. Jadi saya harus menambahkan kondisi ke isRegisteredCanOpenURLScheme
dalamFBSDKInternalUtility.m
+ (BOOL)isRegisteredCanOpenURLScheme:(NSString *)urlScheme
{
static dispatch_once_t fetchBundleOnce;
static NSArray *schemes = nil;
dispatch_once(&fetchBundleOnce, ^{
schemes = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"LSApplicationQueriesSchemes"];
if (!schemes) { // This is a work around for our Kiwi tests as the Specs target doesn't have access to main bundle
NSBundle *bundle = [NSBundle bundleForClass:[self class]];
NSString *path = [bundle pathForResource:@"Info" ofType:@"plist"];
NSDictionary *dictionary = [NSDictionary dictionaryWithContentsOfFile:path];
schemes = [dictionary valueForKey:@"LSApplicationQueriesSchemes"];
}
});
return [schemes containsObject:urlScheme];
}
Untuk membangun aplikasi Anda untuk iOS 9: (Untuk Berbagi Facebook)
Info.plist
file, tambahkan bidang lain LSApplicationQueriesSchemes di bawah Daftar Informasi Properti dan atur datatype Array
atau NSArray
.String
atau NSString
.fbauth2
, fbshareextension
, fbapi
sebagai nilai barang.Ikuti foto ini :
Write the below code in your info.plist under the **LSApplicationQueriesScheme**
<string>fbapi</string>
<string>fbapi20130214</string>
<string>fbapi20130410</string>
<string>fbapi20130702</string>
<string>fbapi20131010</string>
<string>fbapi20131219</string>
<string>fbapi20140410</string>
<string>fbapi20140116</string>
<string>fbapi20150313</string>
<string>fbapi20150629</string>
<string>fbauth</string>
<string>fbauth2</string>
<string>fb-messenger-api20140430</string>
<string>fb-messenger-platform-20150128</string>
<string>fb-messenger-platform-20150218</string>
<string>fb-messenger-platform-20150305</string>
Anda dapat mencoba dengan kode di bawah ini swift 5.0
extension Bundle {
static let externalURLSchemes: [String] = {
guard let urlTypes = main.infoDictionary?["LSApplicationQueriesSchemes"]
as? [String] else {
return []
}
return urlTypes
}()
}
Anda dapat menelepon menggunakan Bundle
guard Bundle.externalURLSchemes.contains(URLScheme) else {
return
}