我正在使用iOS DropBox SDK,并检查我的应用程序是否已经与DropBox帐户相关联.所以我做:
if (self.isLinked) { NSLog(@"linked"); }
但是,self.isLinked始终返回YES.即使清洁和重置iPhone模拟器.
这只会在iOS模拟器上运行时不在真实设备上.我不知道为什么会发生这种情况,但是如果主机Mac与DropBox帐户相关联,则模拟器上的DropBox SDK也会相关联.
解决方法
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]; } }