Respuestas:
Puede seguir utilizando esquemas de URL cuando cree su aplicación para iOS 9 y desee llamar a esquemas de URL, ahora deberá declararlos en la lista de aplicaciones Info.plist. Hay una nueva clave, LSApplicationQueriesSchemes , y aquí deberá agregar la lista de esquemas en los que desea que canOpenURL esté activado.
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbauth2</string>
</array>
Si está utilizando iOS9, esto es importante para actualizar su archivo info.plist. Solo necesita realizar 3 pasos 1. Vaya a info.plist 2. Agregue un campo llamado LSApplicationQueriesSchemes NSArray datatype . 3. Agregue un elemento de tipo de datos NSString y asígnele el nombre fbauth2.
Eso es. Solo limpia y corre. advertencia no volverá a aparecer.
En cuanto a la v4.6.0 del FaceBook SDK, agregue la siguiente clave en su archivo plist:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fb-messenger-api</string>
<string>fbauth2</string>
<string>fbshareextension</string>
</array>
not
dice que TODO esto, bueno que lo señaló!
Simplemente siga la explicación de Facebook: Preparación de sus aplicaciones para iOS9
Apple lo menciona en su: Privacidad y su aplicación Keynote 2015
Simplemente no agregue esto a sus CFBundleURLSchemes ... eso en realidad HIJACK cualquier intento de aplicación en la autenticación de Facebook, causando que aparezca una ventana emergente que muestra el diálogo "X aplicación quiere abrir" ...
NO quieres estar haciendo eso.
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
Obtuve esto cuando ejecuté mis pruebas de Kiwi ya que nuestro objetivo de prueba no tenía acceso al paquete principal. Así que tuve que agregar una condición isRegisteredCanOpenURLScheme
enFBSDKInternalUtility.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];
}
Para crear su aplicación para iOS 9: (Para compartir en Facebook)
Info.plist
archivo, agregue otro campo LSApplicationQueriesSchemes en la Lista de propiedades de información y configure su tipo de datos Array
o NSArray
.String
o NSString
.fbauth2
, fbshareextension
, fbapi
como valor del artículo.Sigue esta foto :
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>
Puedes probar con el siguiente código en swift 5.0
extension Bundle {
static let externalURLSchemes: [String] = {
guard let urlTypes = main.infoDictionary?["LSApplicationQueriesSchemes"]
as? [String] else {
return []
}
return urlTypes
}()
}
Puedes llamar usando Bundle
guard Bundle.externalURLSchemes.contains(URLScheme) else {
return
}