2015-09-18 5 views
5

Ecco il mio codice:condivisione di alcuni tipi di file (con zip) in Cocoa utilizzando NSSharingServiceNameComposeMessage

  NSSharingService *service = [NSSharingService sharingServiceNamed: NSSharingServiceNameComposeMessage]; 
      tempURL = [NSURL fileURLWithPath:[NSHomeDirectory() stringByAppendingPathComponent:@"test.zip"]] 
      [service performWithItems:@[@"test", tempURL]]; 

La finestra di messaggio viene correttamente visualizzato, così come il testo di 'test', ma il file non è incluso nel messaggio.

Cosa funziona:

  • So che l'URL va bene perché è visualizzato correttamente quando si utilizza il servizio denominato NSSharingServiceNameComposeEmail invece
  • il file zip è valido; è un file di prova che sto usando già in una posizione nota, e ho già controllato che possa essere espanso correttamente; è anche un file molto piccolo
  • So che un messaggio può avere un file allegato: il precedente funziona per PDF, documenti di Pages, ecc ...
  • So che il mio setup per Messaggi va bene e può funzionare con file zip : il pulsante 'Condividi' nel Finder funziona bene quando viene utilizzato con un file zip e selezionare l'opzione 'Invia un Messaggio'

problemi simili:

  • i tipi di file sconosciuti, inoltre, non funzionano
  • stesso problema quando si utilizza il servizio di Airdrop e NSSharingServiceNameSendViaAirDrop

Qualche idea che altro potrei provare? Grazie!

risposta

2

Apparentemente è possibile condividere un file zip ma non viene visualizzato nel foglio di condivisione.

L'ho provato e quando ho inviato il messaggio a me stesso ho ottenuto il file zip allegato.

- (IBAction)shareZipFile:(id)sender { 
    NSOpenPanel *openPanel = [NSOpenPanel openPanel]; 
    openPanel.allowedFileTypes = @[@"zip"]; 
    openPanel.prompt = @"Share"; 
    [openPanel runModal]; 

    NSSharingService *service = [NSSharingService sharingServiceNamed:NSSharingServiceNameComposeMessage]; 
    NSArray *items = @[openPanel.URL.lastPathComponent.stringByDeletingPathExtension, openPanel.URL]; 

    if (![service canPerformWithItems:items]) { 
     NSLog(@"Can't share that kind of stuff, sorry!"); 
     return; 
    } 

    [service performWithItems:items]; 
} 
+1

In effetti e duh! Grazie per la tua risposta. Era confuso perché Finder ** ** mostra l'icona di un file zip. – charles