2012-10-23 6 views
9

Sto utilizzando l'SDK Dropbox iOS e voglio verificare se la mia app è già collegata a un account Dropbox. Così faccio:Dropbox iOS SDK restituisce sempre "SÌ" per isLinked:

if (self.isLinked) { 
    NSLog(@"linked"); 
} 

Tuttavia self.isLinked restituisce sempre YES. Anche dopo aver pulito e ripristinato l'iPhone Simulator.


Questo si verifica solo quando si esegue il simulatore iOS non su un dispositivo reale. Non so perché questo accade, ma l'SDK Dropbox sul simulatore è anche collegato se il suo host Mac è collegato con un account Dropbox.

Per ottenere un comportamento realistico nel simulatore scollegare il Mac in Preferenze di Dropbox.

risposta

15

A metà 2012 (impossibile trovare il log della versione dell'SDK di iOS) il comportamento dell'SDK di Dropbox iOS è stato modificato per mantenere lo stato 'collegamento' tramite la disinstallazione/reinstallazione di un'app (anche sul dispositivo). Di conseguenza, le app che eseguono qualche azione sulla ricezione del callback "collegato" (come il mio) non funzionerebbero dopo una reinstallazione.

Una soluzione consiste nello scollegare il collegamento alla prima esecuzione. Qualcosa del genere:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    if ([[NSUserDefaults standardUserDefaults] objectForKey:HAS_RUN_KEY] == nil) 
    { 
     // ensure you have a DBSession to unlink 
     if ([DBSession sharedSession] == nil) 
     { 
      DBSession* dbSession = [[[DBSession alloc] initWithAppKey:DROPBOX_KEY appSecret:DROPBOX_SECRET root:kDBRootAppFolder] autorelease]; 
      [DBSession setSharedSession:dbSession]; 
     } 

     // unlink 
     [[DBSession sharedSession] unlinkAll]; 

     // set 'has run' flag 
     [[NSUserDefaults standardUserDefaults] setBool:YES forKey:HAS_RUN_KEY]; 
     [[NSUserDefaults standardUserDefaults] synchronize]; 
    } 
} 
+1

Mentre il mio problema era un caso più speciale (dropbox mantiene il collegamento nel simulatore se mac è collegato) la soluzione si applica anche a qualsiasi altro possibile problema di collegamento. Questo può prevenire un sacco di mal di testa. Grazie, lo integrerò nella mia app. – codingFriend1

+0

@ codingFriend1 Dovresti anche fare una risposta. Grazie, stavo impazzendo per questo. – fzwo

+0

cosa c'è HAS_RUN_KEY qui? – Bhushan