2015-09-24 12 views
6

Ho aggiornato il mio Xcode a 7 e Facebook a 4.6 sdk.Dopo l'aggiornamento di iOS 9 e Facebook sdk 4.6 la finestra di login non è stata aperta

questo mio avvertimento:

Warning: Attempt to present <FBSDKContainerViewController: 0x159337700> on <UIAlertController: 0x159262700> whose view is not in the window hierarchy! 

nel mio progetto del codice binario che è NO - perché se mi rivolgo a Sì ho ottenuto questo errore:

ld:'/Users/MyName/Desktop/MyProjectName/ProjectName/ProjectName/Resources/Frameworks/Fabric.framework/Fabric(Fabric.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture arm64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

questo è il metodo di analisi:

-(void)signInWithFacebookClicked 
{ 
NSArray *permissions = [NSArray arrayWithObjects:@"email",@"user_friends", nil]; 
[PFFacebookUtils logInInBackgroundWithReadPermissions:permissions block:^(PFUser *user, NSError *error) 
{ 
    if (!user) // The user cancelled the Facebook login 
    { 
     NSLog(@"Uh oh. The user cancelled the Facebook login."); 
    } 
    else if (user.isNew) // New user (not stored on DB) - User signed up and logged in through Facebook 
    { 
     [self handleNewUser]; 
    } 
    else if (user) // the user is exist at DB 
    { 
     // the user is exist at DB 
    } 
    else if (error) 
    { 
     // showAlertOfSomethingWentWrong 
    } 
}]; 
} 

questo è FBSDKGraphRequest:

-(void)handleNewUser 
{ 

FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields": @"friends, first_name, gender, last_name, link, name, verified, picture, email"}]; 
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) 
{ 
    NSMutableDictionary *userData = (NSMutableDictionary *)result; 
}]; 

mio problema è che quella linea:

[PFFacebookUtils logInInBackgroundWithReadPermissions:permissions block:^(PFUser *user, NSError *error) 

la corsa non vanno in questo blocco di iPhone, simulatore di questo lavoro bene.

+0

penso che questo link ** http: // StackOverflow.it/a/29637893/4516605 ** può aiutarti: – iSibDev

+0

non funziona per me) -: modifica la domanda –

+1

hai mai trovato una soluzione per questo? – joey

risposta

0

si fa ad aggiungere NSAppTransportSecurity & LSApplicationQueriesSchemes chiave del tuo info.plist?

+0

si da questo link: https://developers.facebook.com/docs/ios/ios9 –

+1

nel simulatore il login aperto di Facebook ma in iPhone la finestra non è aperta. –

2

Ho avuto un problema simile in cui stavo cercando di mostrare un avviso di accesso in cima a FBSDKContainerViewController.

In questa chiamata

- (void)logInWithReadPermissions:(NSArray *)permissions 
      fromViewController:(UIViewController *)fromViewController 
        handler:(FBSDKLoginManagerRequestTokenHandler)handler; 

Facebook presenta un proprio controller della vista e se non si specifica il fromViewController "il più in alto controller della vista sarà determinato automaticamente nel miglior modo possibile."

Nel tuo caso, sembra che Facebook stia cercando di presentare un avviso che è stato ignorato, anche se questa non è la chiamata che viene invocata.

+0

Ciao! Sto avendo lo stesso identico problema anche io! ma in LogInWithWritePermissions ... come lo hai risolto? – rickrvo

+1

@rickrvo - Non ho più accesso al mio codice, ma penso di aver specificato un controllo da ViewController in modo che Facebook non possa dedurre una vista errata o mi sono assicurato che l'avviso che stavo presentando non fosse più visibile. – PastryPup

+1

Ho trovato una soluzione! Il fatto è che loginwithWritePermissions è stato chiamato subito dopo un altro loginWithReadPermissions ... E iOS non ha avuto il tempo di tornare all'app prima di chiamare loginWithWritePermissions quindi ha ottenuto un diverso viewController. Una correzione rapida era di aggiungere 1 secondo di ritardo prima della chiamata WritePermissions in modo che iOS potesse tornare all'app e quindi la seconda chiamata funzionava correttamente – rickrvo

0

Ho trovato una soluzione a questo, grazie alla risposta di @ PastryPup.

L'avviso viene visualizzato quando si tenta di presentare il controller di visualizzazione di accesso di Facebook in cima a una vista di avviso ignorata. Passare a un UIAlertController, tuttavia, ha risolto il problema.

La mia impressione è che questo funziona perché UIAlertController è un controller completo, e quindi esiste nella gerarchia della vista anche dopo che è stato chiuso.

La soluzione è sostanzialmente sostituire UIAlertView con un UIAlertController e chiamare [PFFacebookUtils logInInBackgroundWithReadPermissions:permissions block:^(PFUser *user, NSError *error) all'interno dell'azione predefinita di UIAlerController.

Link on how to implement a UIAlertController

0

ho fatto qualche trucco per fare questo lavoro. Non so se è il modo migliore per farlo. Ma ho appena creato un valore booleano falso prima che l'attività venga eseguita (il pulsante fb è TAPpato). Quindi, dopo il suo ritorno, basta impostare il valore booleano su true e avere una condizione nel ViewDidAppear che se il valore booleano è true, eseguire il passaggio alla finestra successiva che si desidera andare. Spero che aiuti!

Problemi correlati