9

enter image description hereUIDocumentInteractionController Предотвратить Десантный в «Открыть в» листе

В моем приложении, я позволяя пользователям обмениваться фотографиями через Instagram, который требует использования UIDocumentInteractionController. Airdrop автоматически обнаруживается, если телефон поддерживает его. Как удалить его из этого листа действий «Открыть в»?

Даже если я начну процесс совместного доступа с помощью UIActivityViewController и вызову setExcludedActivityTypes :, в конечном итоге я должен использовать UIDocumentInteractionController, и когда я это сделаю, Airdrop появится снова. Вот код, когда кнопка совместного доступа используется:

NSURL *instagramURL = [NSURL URLWithString:@"instagram://location?id=1"]; 

if ([[UIApplication sharedApplication] canOpenURL:instagramURL]) { 
    NSString *documentsDirectory = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]; 
    NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:@"Image.igo"]; 

    NSData *imageData = UIImagePNGRepresentation(imageToShare); 
    [imageData writeToFile:savedImagePath atomically:YES]; 
    NSURL *imageUrl = [NSURL fileURLWithPath:savedImagePath]; 
    docController = [[UIDocumentInteractionController alloc] init]; 
    docController.UTI = @"com.instagram.exclusivegram"; 
    docController.URL = imageUrl; 
    [docController presentOpenInMenuFromRect:CGRectZero inView:self.view animated:YES]; 

} 
else 
{ 
    NSLog(@"no insta"); 
} 
+0

Такая же проблема. – n13

ответ

2

Насколько я могу вам сказать, вы не можете. Мне также нужно отключить этот параметр. Но в UIDocumentInteractionController он полностью недоступен. Довольно плохой опыт API в моей книге.

Если пользователь выбирает приложение в списке ваше приложение получает обратные вызовы

-(void)documentInteractionController:(UIDocumentInteractionController *)controller willBeginSendingToApplication:(NSString *)application 

-(void)documentInteractionController: (UIDocumentInteractionController *)controller didEndSendingToApplication:(NSString *)application 

Если пользователь выбирает десантный вы не получите никакого уведомления.

+0

Одна вещь, которую я заметил, это то, что при нажатии AirDrop часто даже когда я и кто-то в комнате не включаются. – EHNole

0

Это не может быть удалено, и яблоко все еще пытается сделать воздухозаборник доступным везде, поэтому нам, возможно, придется увидеть это еще в нескольких местах. Начиная с версии 7.1, она наверняка войдет в UIDocumentInteractionController независимо от статуса airdrop (включено или выключено на устройстве)

И еще одна плохая вещь - нет обратного вызова для совместного использования эфирного времени, что означает, что ваше приложение никогда не знает о статусе совместного доступа , Делегат ниже 2 не будет работать на долю.

-(void)documentInteractionController:(UIDocumentInteractionController *)controller willBeginSendingToApplication:(NSString *)application 

-(void)documentInteractionController: (UIDocumentInteractionController *)controller didEndSendingToApplication:(NSString *)application 

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

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

  • Нет связанных вопросов^_^