我正在使用iOS Dropbox SDK并想检查我的应用是否已经与Dropbox帐户相关联。所以我这样做:
if (self.isLinked) {
NSLog(@"linked");
}
但self.isLinked
始终返回YES
。即使在清洁和重置iPhone模拟器后也是如此。
仅当在iOS模拟器中运行而不是在真实设备上运行时才会发生这种情况。我不知道为什么会这样,但如果主机Mac与Dropbox帐户链接,模拟器上的Dropbox SDK也会被链接。
要在模拟器中获得逼真的行为,请在Dropbox首选项中取消链接Mac。
答案 0 :(得分: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];
}
}