2014-02-28 22 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