2016-03-25 15 views
1

Ich habe Dokumente über Kinvey hier lesen: http://devcenter.kinvey.com/ios/guides/files#DownloadingtoCachesDirectoryHerunterladen von Dateien aus Kinvey in iOS

Sie haben auch zur Verfügung Beispielfunktion:

[KCSFileStore downloadData:@"myId" completionBlock:^(NSArray *downloadedResources, NSError *error) { 
if (error == nil) { 
    KCSFile* file = downloadedResources[0]; 
    NSData* fileData = file.data; 
    id outputObject = nil; 
    if ([file.mimeType hasPrefix:@"text"]) { 
     outputObject = [[NSString alloc] initWithData:fileData encoding:NSUTF8StringEncoding]; 
    } else if ([file.mimeType hasPrefix:@"image"]) { 
     outputObject = [UIImage imageWithData:fileData]; 
    } 
    NSLog(@"downloaded: %@", outputObject); 
} else { 
    NSLog(@"Got an error: %@", error); 
} 
} progressBlock:nil]; 

Aber wenn ich „myid“ mit Datei-ID ersetzt es gab mir dieser Fehler:

Error Domain=KCSServerErrorDomain Code=401 "The credentials used to authenticate this request are not authorized to run this operation. Please retry your request with appropriate credentials" 

Während ich andere Sammlungen zugreifen kann ich über Kinvey erstellt haben (gleiche Benutzer) mit dem gleichen Anmeldeinformationen (Geheimnis, api_key)

Gibt es vor dem Aufruf dieser Funktion noch weitere Anforderungen?

Dank

Antwort

1

Ich hatte das gleiche Problem. Ich habe mich vom Support-Team von kinvey ausgesandt und got help.

Ich löste das Problem, indem ich die "acl" für jede Datei, die ich hochlade, setzte. Nach der iOS Files guide under upload options: "Standardmäßig ist die Datei nur für den Benutzer zur Erstellung verfügbar.", das war, was das Problem für mich verursacht hat.

ich Upload von Dateien nun wie folgt:

let metadata = KCSMetadata() 
    metadata.setGloballyReadable(true) 

    let data = UIImagePNGRepresentation(image) 

    KCSFileStore.uploadData(
     data, 
     options: options: [KCSFileACL : metadata], 
     completionBlock: {KCSFileUploadCompletionBlock!}, 
     progressBlock: nil) 

Diese anyuser, dass bestimmte Datei lesen können. I Verwenden Sie eine KCSUser.createAutogeneratedUser(), um die Dateien danach zu lesen.

Ja, Sie haben Zugriff auf andere Sammlungen unter derselben kinvey-App, aber die Berechtigungen müssen für die Dateisammlung festgelegt werden. Die Datei, die Sie als "myId" beschreiben, muss über die erforderlichen Berechtigungen verfügen, bevor sie von einem anderen Benutzer als dem Benutzer heruntergeladen werden kann, der die Datei hochgeladen hat.

0

Sie müssen einen aktiven Benutzer für den Aufruf dieser Funktion. Sie müssen nur sicherstellen, dass Sie sich erfolgreich angemeldet haben.

+0

Ja, Sie haben Recht. Man sollte zum Download aktiv sein und bin es auch, aber ich bin in dieser Fehlermeldung gelandet. – iAhmed

Verwandte Themen