2015-03-18 25 views
9

Problema:iCloud UIDocumentPicker si blocca a intermittenza e si blocca

Quando si sceglie un documento da iCloud l'applicazione si blocca in modo casuale, per la maggior parte del tempo il seguente codice funzionerà, ma in rare occasioni fallirà.

Ho abilitato l'autorizzazione iCloud nell'app e non riesco a trovare il motivo per cui si interrompe a intermittenza. C'è un assegno che mi manca?

E 'anche appeso per evidenti 5 secondi circa nelle occasioni (di solito nel periodo fino a schiantarsi)

Codice:

#pragma mark - iCloud ======================================================================================================= 
- (void)documentPicker:(UIDocumentPickerViewController *)controller didPickDocumentAtURL:(NSURL *)url { 

BOOL fileUrlAuthozied = [url startAccessingSecurityScopedResource]; 
NSURL *ubiquityURL = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil]; 
NSLog(@"ubiquityURL - %@",ubiquityURL); 

if(fileUrlAuthozied){ 
    NSFileCoordinator *fileCoordinator = [[NSFileCoordinator alloc] init]; 
    NSError *error; 

    [fileCoordinator coordinateReadingItemAtURL:url options:0 error:&error byAccessor:^(NSURL *newURL) { 

     NSData *data = [NSData dataWithContentsOfURL:newURL]; 
     //Do something with data 
     selectedDocumentToUpload = [[UploadDocumentObj alloc] initWithiCloudDocument:data]; 
     [self performSegueWithIdentifier:@"goToRename" sender:nil]; 

    }]; 
    [url stopAccessingSecurityScopedResource]; 
}else{ 
    //Error handling 
    [Lib showErrorMessageWithTitle:@"Alert" message:@"E-Sign could not retrive the document!\nPlease try again." delegate:self]; 

} 
} 

Errore:

2015-03-18 16:22:15.955 E-Sign[6338:1860982] *** Assertion failure in -[UIDocumentPickerViewController _commonInitWithCompletion:], /SourceCache/UIKit/UIKit-3318.93/UIDocumentPickerViewController.m:66 
2015-03-18 16:22:15.960 E-Sign[6338:1860982] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Application initializing document picker is missing the iCloud entitlement. Is com.apple.developer.icloud-container-identifiers set?' 

Altri errori:

2015-03-18 16:33:45.884 E-Sign[6357:1864309] plugin com.apple.UIKit.fileprovider.default interrupted 
2015-03-18 16:33:45.885 E-Sign[6357:1864309] plugin com.apple.UIKit.fileprovider.default invalidated 

Qualcuno si imbatte in questo prima?

+0

Succede anche a me, non sono sicuro che si tratti di un problema di sviluppo, o si verifica anche in produzione –

+0

Succede in entrambi. I tester esterni continuano a riportare lo stesso problema, alla fine ho rimosso l'intera funzionalità di iCloud a causa della sua inaffidabilità. – AJ9

risposta

0

Sembra che si sia verificato il seguente errore perché iCloud non è stato impostato correttamente. Si prega di controllare di nuovo. L'app e le estensioni che la contengono devono trovarsi nello stesso gruppo di app. Abilita i gruppi di app da Funzionalità se non è abilitato. Se entrambi sono impostati correttamente e si ottiene comunque l'errore, non si ha idea di dove potrebbe accadere.

2015-03-18 16:22:15.960 E-Sign[6338:1860982] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Application initializing document picker is missing the iCloud entitlement. Is com.apple.developer.icloud-container-identifiers set?' 

Sono anch'io di fronte ad altri errori. Ecco perché sono qui.

+0

Come discusso nella domanda originale, l'autorizzazione iCloud è stata abilitata. La natura intermittente dell'errore è il problema. – AJ9

4

Recentemente ho stumpled opon lo stesso problema:

*** Assertion failure in -[UIDocumentPickerViewController _commonInitWithCompletion:]

è causato a causa della mancanza di App-funzionalità. Vai al tuo Costruire e scegliere Capabilities -> iCloud

attivarlo tramite l'interruttore sul lato destro e alternare iCloud Documents e CloudKit ON. (Avviso: Questo funziona solo con un account di sviluppatore pagato)

Rebuild-> Esegui

hanno anche in mente:

iCloud entitlements are available only to apps submitted to the App Store or to the Mac App Store. (Source)

0

Dopo la ricerca di un sacco sono arrivato a una conclusione importante:

Mi stavo occupando dello stesso tipo di problema e mi faceva davvero male. Quindi, dopo aver controllato il codice in profondità e aver eseguito il debug del risultato finale, è necessario gestire le modifiche dell'interfaccia utente che si stanno eseguendo durante la visualizzazione del selettore. La transizione della visualizzazione del selettore e delle modifiche dell'interfaccia utente genera un comportamento irritante e alla fine si blocca e si blocca.

Il mio problema è stato risolto dopo aver apportato tali modifiche.

-1

Quando si chiama il metodo, assicurarsi di chiamarlo in thread in background. Risolverà il problema.

dispatch_async (dispatch_get_global_queuue (DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0),^{// CALL TUO METODO });