9

iOS Dropbox SDKを使用していて、アプリがすでにDropboxアカウントにリンクされているかどうかを確認したいと思います。私もです:

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

ただしself.isLinked、常に。を返しますYES。iPhoneシミュレータをクリーニングしてリセットした後でも。


これは、実際のデバイスではなくiOSシミュレーターで実行している場合にのみ発生します。なぜこれが発生するのかわかりませんが、ホストMacがDropboxアカウントにリンクされている場合、シミュレータ上のDropboxSDKもリンクされます。

シミュレータで現実的な動作を得るには、Dropboxの設定でMacのリンクを解除します。

4

1 に答える 1

15

2012年半ばのある時点で(iOS SDKバージョンログが見つかりません)、Dropbox iOS SDKの動作が変更され、アプリのアンインストール/再インストール(デバイス上でも)を通じて「リンク」ステータスが保持されます。その結果、「リンクされた」コールバックの受信時に何らかのアクションを実行するアプリ(私のような)は、再インストール後に機能しなくなります。

1つの解決策は、初回実行時にリンクを解除することです。そのようなもの:

- (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];
    }
}
于 2012-10-30T09:29:58.840 に答える