2012-10-23 20 views
9

我正在使用iOS Dropbox SDK,並且想要檢查我的應用程序是否已與Dropbox帳戶鏈接。所以,我做的:Dropbox iOS SDK對於isLinked總是返回'YES':

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

然而self.isLinked總是返回YES。即使在清理並重設iPhone模擬器之後。


這隻發生在iOS模擬器中運行而不是真實設備上時。我不知道爲什麼會發生這種情況,但如果其主機Mac與Dropbox帳戶鏈接,則模擬器上的Dropbox SDK也會鏈接。

要在模擬器中獲得真實的行爲,請在Dropbox首選項中取消Mac鏈接。

回答

15

在2012年年中的某個時候(無法找到iOS SDK版本日誌),Dropbox iOS SDK行爲更改爲通過卸載/重新安裝應用程序(甚至在設備上)保留「鏈接」狀態。因此,在接收「鏈接」回調(如我的)時執行某些操作的應用在重新安裝後將不起作用。

一種解決方案是在首次運行時取消鏈接。事情是這樣:

- (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

雖然我的問題是一個比較特殊的情況下(如果MAC地址被鏈接的Dropbox保持在模擬器鏈接)解決方案也適用於任何其他可能的連接問題。這可以防止很多頭痛。謝謝,我將把它集成到我的應用程序中。 – codingFriend1

+0

@ codingFriend1你也應該做出這個答案。謝謝,我正在討論這個問題。 – fzwo

+0

什麼是HAS_RUN_KEY在這裏? – Bhushan

相關問題