Dropbox Error在设备上打开另一个应用程序,而不是在模拟器上打开

时间:2013-03-08 10:29:33

标签: ios objective-c cocoa-touch dropbox-api

我有三个将文件上传到Dropbox的应用。这三个代码相同。它们都共享相同的文件夹,因此我使用了相同的密钥等

这是奇怪的地方

1。一切都很好几个月

2。现在,在用户尝试登录的应用2和3上打开第一个应用?

3。退出,没有任何帮助,只是说Theres连接到Dropbox时出错并稍后再试

我尝试了什么

为所有三个应用程序创建单独的密钥等,然后共享相同的内容,仍然会得到相同的行为?

对此的一些研究表明Dropbox已经改变了通过应用程序链接到用户帐户的方式,即使您删除应用程序也链接了提醒?还有其他人有过这方面的经验吗?

的appDelegate

NSString* appKey = @"00000000000";
NSString* appSecret = @"0000000000";
NSString *root = kDBRootAppFolder;

DBSession* session = 
[[DBSession alloc] initWithAppKey:appKey appSecret:appSecret root:root];
session.delegate = self; // DBSessionDelegate methods allow you to handle re-authenticating
[DBSession setSharedSession:session];

[DBRequest setNetworkRequestDelegate:self];

viewController中的按钮处理程序

LogCmd();
self.publishButtonPressed = YES;
if (![[DBSession sharedSession] isLinked]) {
    [self loginLogoutButtonPressed:nil];
} else {

    DBRestClient *restClient = [[DBRestClient alloc] initWithSession:[DBSession sharedSession]];
    restClient.delegate = self;
    NSError *error = nil;
    NSString *filePath = [ICUtils pathForDocument:self.fileName];
    [self.pdfData writeToFile:filePath options:0 error:&error];
    if (nil == error) {

        [restClient uploadFile:self.fileName
                        toPath:@"/"
                 withParentRev:nil
                      fromPath:filePath];
    } else {
        [ICUtils raiseAlertWithTitle:@"An error occurred" message:[error localizedDescription]];
    }
 }
}

注意在模拟器上运行正常,问题仅存在于设备上

1 个答案:

答案 0 :(得分:0)

这是因为您对多个应用程序使用相同的密钥。 Dropbox应用程序通过自定义URL方案与您的应用程序进行通信 - 启动您的应用程序(因为没有其他方法可以在iOS上以编程方式启动应用程序)。

换句话说,Dropbox应用程序告诉系统打开“db-yoursecretkey:// somemessage”,打开该自定义URL方案的注册应用程序。不幸的是,您的所有应用程序都使用相同的自定义方案,因为它们都使用相同的密钥,因此系统只选择一个:很可能是第一个。

但是,您可以授予您的应用访问Dropbox中所有文件夹的权限,从而有效地共享文件夹。因此,并不是真的有必要让所有三个应用程序使用相同的密钥。