2013-02-26 2 views
2

Мое приложение использует Dropbox, чтобы позволить пользователям делать резервные копии своего основного хранилища данных. Есть ли способ определить программно, если приложение Dropbox установлено, поэтому я могу предложить пользователям настроить резервную копию? Я не хочу, чтобы пользователи, которые не используют Dropbox, не хотят, но я хочу попытаться заставить как можно больше пользователей использовать резервные копии.Как определить, установлен ли Dropbox на устройстве iOS?

+1

Вам нужно проверить, можете ли вы получить доступ к его схеме URL. См. Http://www.stackoverflow.com/questions/9406546/does-dropbox-app-on-ios-has-a-url-scheme – Sean

ответ

7

Dropbox определить свою собственную схему URI, dbapi-1, и как таковой вы можете увидеть, если операционная система может открыть URL, используя эту схему, как это:

if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"dbapi-1://"]]) { 
    NSLog(@"Dropbox is installed."); 
} else { 
    NSLog(@"Dropbox is not installed."); 
} 
0

Принятая в настоящее время ответ не подходит. dbapi-1 может не всегда работать. Это действительно зависит от того, используете ли вы SDK или нет (что вам нужно).

Если вы читаете код DBChooser.m (https://github.com/dropbox/dropbox-ios-dropins-sdk/blob/master/DBChooser/DBChooser.m) вы увидите следующий метод:

+ (NSURL*)dbc_chooserURLForAppKey:(NSString*)appKey linkType:(DBChooserLinkType)linkType 
{ 
    NSString *baseURL = [NSString stringWithFormat:@"%@://%@/chooser", kDBCProtocol, kDBCAPIVersion]; 
    NSString *linkTypeString = [[self class] dbc_getLinkTypeString:linkType]; 

    return [NSURL URLWithString:[NSString stringWithFormat:@"%@?k=%@&linkType=%@", baseURL, appKey, linkTypeString]]; 
} 

kDBCProtocol Константа является то, что вам нужно. В настоящее время последнее - dbapi-3. Вы всегда должны использовать тот, который соответствует используемой структуре, если вы используете новейший Dropbox sdk.

Смежные вопросы