Yanıtlar:
İOS 9 için uygulamanızı oluştururken URL şemalarını kullanmaya devam edebilirsiniz ve URL şemalarını aramak istiyorsanız, artık bunları uygulama Info.plist'inizde bildirmeniz gerekecektir. Yeni bir anahtar var, LSApplicationQueriesSchemes ve burada canOpenURL olmasını istediğiniz şemaların listesini eklemeniz gerekecek.
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbauth2</string>
</array>
İOS9 kullanıyorsanız, info.plist dosyanızı güncellemek önemlidir. Sadece 3 adım 1 yapmanız gerekir. İnfo.plist 2 adresine gidin . LSApplicationQueriesSchemes NSArray veri türü olarak bir alan ekleyin . 3. NSString veri türü öğesini fbauth2 olarak adlandırın.
Bu kadar. Sadece temizle ve koş. uyarı tekrar göstermeyecek.
FaceBook SDK'nın v4.6.0 sürümüne gelince, plist dosyanıza aşağıdaki anahtarı ekleyin:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fb-messenger-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
</array>
not
yapmanız gerektiğini söyler, işaret ettiğiniz iyi olur!
Sadece Facebook açıklamasını takip edin: Uygulamalarınızı iOS9 için Hazırlama
Apple onlardan bahsedin: Gizlilik ve Uygulamanız Keynote 2015
Lütfen bunu CFBundleURLSchemes'e eklemeyin ... bu aslında herhangi bir uygulamanın Facebook yetkilendirme girişiminde HIJACK olacak ve "X uygulaması açmak istiyor" iletişim kutusunu gösteren bir açılır pencere oluşturacak ...
Bunu yapmak istemiyorsun.
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
Test hedefimizin ana pakete erişimi olmadığından Kivi testlerimi yaparken bunu aldım. Bu yüzden içine bir koşul eklemek zorunda isRegisteredCanOpenURLScheme
kaldıFBSDKInternalUtility.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];
}
Uygulamanızı iOS 9 için oluşturmak için: (Facebook Paylaşımı için)
Info.plist
Dosyayı açın , Bilgi Özellik Listesi altına başka bir alan LSApplicationQueriesSchemes ekleyin ve veri türünü ayarlayın veya .Array
NSArray
String
veya olarak ayarlayın NSString
.fbauth2
, fbshareextension
, fbapi
öğe değeri olarak.Bu fotoğrafı takip et :
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>
Aşağıdaki kod ile deneyebilirsiniz swift 5.0
extension Bundle {
static let externalURLSchemes: [String] = {
guard let urlTypes = main.infoDictionary?["LSApplicationQueriesSchemes"]
as? [String] else {
return []
}
return urlTypes
}()
}
Kullanarak arayabilirsiniz Bundle
guard Bundle.externalURLSchemes.contains(URLScheme) else {
return
}