2014-02-28 23 views
0

我正在將Dropbox Sync SDK集成到我的iOS應用程序中。我想設置它,以便當用戶處於UIDocument中,然後應用程序變爲非活動狀態(主頁按鈕,鎖等),然後該文件由Dropbox中的其他人更改,然後用戶返回到該應用程序會通知他們在其他地方進行了更改。這是我現在有:iOS Dropbox Sync API - 檢測新狀態

在我viewDidLoad中我有:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkForNewerStatus) name:UIApplicationDidBecomeActiveNotification object:nil]; 

然後,我有這樣的方法:

- (void)checkForNewerStatus 
{ 
    if (self.dropboxFile.newerStatus) 
    { 
     //alert user of changes 
    } 
} 

這工作半理想。當應用第一次回來時,self.dropboxFile.newerStatus返回NO。如果我離開該應用並再次返回,則返回YES。但我需要它在應用第一次回來時返回YES。這不是時間相關的 - 我可以等幾分鐘才能回來,但它仍然是第一次失敗,併成功的第二次。有任何想法嗎?

非常感謝!

注意:只有當應用程序變爲非活動狀態然後文件發生更改時纔會出現此問題。如果文件在應用程序仍處於活動狀態時發生更改,然後應用程序離開並返回,則會按預期發送警報。

+1

不要這樣做。只需將一個觀察者添加到你的'DBFile'中,那麼只要文件狀態發生改變,你就會收到通知。 – rmaddy

回答

0

@ rmaddy上面的評論是正確的。只是把它移到答案中。

您需要在您的DBFile上添加觀察者才能在更改時收到通知。發生的事情是,您的應用程序正在重新啓動並且您立即檢查狀態,但是自應用程序剛剛啓動以來,它還沒有時間與服務器通話並瞭解新的文件內容。只要應用程序能夠與服務器通信並瞭解有關更改,DBFile的觀察者就會觸發。

+0

確實。感謝和@smarx。添加一個觀察者給文件時間來喚醒後檢測到一個變化。我不得不在短時間內刪除觀察者,儘管b/c我只想檢測喚醒的變化,而不是在編輯時。 – Hash88