2013-10-02 16 views
9

enter image description hereUIDocumentInteractionController prevent Airdrop nella 'Apri in' foglio

Nella mia app, sto permettendo agli utenti di condividere le foto tramite Instagram, che richiede l'uso di UIDocumentInteractionController. Airdrop viene rilevato automaticamente se il telefono lo supporta. Come lo rimuovo da questo foglio di azione "Apri in"?

Anche se inizio il processo di condivisione con un UIActivityViewController e chiamo setExcludedActivityTypes, alla fine devo usare un UIDocumentInteractionController, e quando lo faccio, Airdrop appare di nuovo. Ecco il codice quando viene toccato il pulsante di condivisione:

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

Avendo lo stesso problema. – n13

risposta

2

Per quanto posso dire, non è possibile. Devo disabilitare anche questa opzione. Ma su UIDocumentInteractionController è completamente inaccessibile. Esperienza API piuttosto negativa nel mio libro.

Se l'utente seleziona un App nella lista vostra applicazione ottiene i callback

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

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

Se l'utente seleziona Airdrop non si ottiene una notifica a tutti.

+0

Una cosa che ho notato è che toccando AirDrop spesso non accade nemmeno quando io e qualcuno nella stanza è acceso. – EHNole

0

Questo non può essere rimosso e Apple sta ancora cercando di rendere accessibile l'airdrop ovunque, quindi dovremmo vederlo in pochi altri posti in futuro. Da 7.1 aggiornamento, sarà sicuramente venire in UIDocumentInteractionController indipendentemente dallo stato airdrop (acceso o spento il dispositivo)

e uno più cose cattive è che non c'è callback per la condivisione Airdrop, il che significa che la vostra applicazione non conosce lo stato di condivisione . Il delegato di sotto 2 non funzionerà per la condivisione.

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

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

Spero che Apple esponga alcuni metodi delegati per rendere questo possibile nelle versioni future.

Problemi correlati