2016-04-20 3 views
0

Ich habe eine iOS-App, die Datendateien von Webseiten herunterlädt. Oft wird ein Benutzer auf die Webseite stoßen, aber noch nicht die App haben. Anstatt sie dazu zu bringen, die App herunterzuladen und dann die Webseite innerhalb der App wiederzufinden, möchte ich die Datendatei herunterladen und die App dann bei der Installation abholen lassen. Von dem, was ich sammeln kann, muss ich diese Datei in die iCloud einfügen. Aber wenn ich versuche, die Datei mit Safari herunterzuladen, sagt sie mir, dass sie die Datei nicht herunterladen kann. Wenn ich Chrome verwende, möchte ich, dass GoogleDrive zum Speichern der Datei verwendet wird. Gibt es eine Möglichkeit, wie eine Webseite eine Datei in iCloud speichern kann? Oder gibt es eine andere Möglichkeit, der App mitzuteilen, welche Datei heruntergeladen werden soll, wenn sie installiert wurde?So laden Sie eine Datei von einer Website in die iCloud eines Benutzers

+0

Überprüfen Sie die Lösung hier mit diesem [link] (http://stackoverflow.com/questions/21456210/icloud-integration-for-uploading-and-downloading-files) – Simmy

+0

Danke, aber das sagt mir nicht, wie eine Webseite kann eine Datei auf einen Benutzer iCloud herunterladen. Ich kann dies in meiner App tun. Aber ich möchte die Datei vom Browser heruntergeladen werden. – Melchester

Antwort

0

gehört einfach das offizielle Wort von Apple. Es gibt KEINE Möglichkeit, eine Datei (Bild oder anderes) von einer Internetseite auf die iCloud des Benutzers zu kopieren, zu übertragen oder herunterzuladen.

Durch Experimente habe ich entdeckt, dass Safari einige Dateitypen (zB JPEGs) von einer Webseite herunterladen wird, andere Dateitypen geben den in der Frage erwähnten Fehler, aber KEINE Dateien werden in der iCloud platziert. Und so werden keine Dateien für meine App verfügbar sein.

0

Ich bin neu in ios app Entwicklung, aber ich versuche, diese .please Verwendung folgenden Code zu beantworten:

- (void)download:(NSURL *)url 
{ 
    dispatch_queue_t q_default; 
    q_default = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); 
    dispatch_async(q_default, ^{ 

     NSError *error = nil; 
     BOOL success = [[NSFileManager defaultManager] startDownloadingUbiquitousItemAtURL:url error:&error]; 
     if (!success) 
     { 
      // failed to download 
     } 
     else 
     { 
      NSDictionary *attrs = [url resourceValuesForKeys:@[NSURLUbiquitousItemIsDownloadedKey] error:&error]; 
      if (attrs != nil) 
      { 
       if ([[attrs objectForKey:NSURLUbiquitousItemIsDownloadedKey] boolValue]) 
       { 
        // already downloaded 
       } 
       else 
       { 
        NSMetadataQuery *query = [[NSMetadataQuery alloc] init]; 
        [query setPredicate:[NSPredicate predicateWithFormat:@"%K > 0", NSMetadataUbiquitousItemPercentDownloadedKey]]; 
        [query setSearchScopes:@[url]]; // scope the search only on this item 

        [query setValueListAttributes:@[NSMetadataUbiquitousItemPercentDownloadedKey, NSMetadataUbiquitousItemIsDownloadedKey]]; 

        _fileDownloadMonitorQuery = query; 

        [[NSNotificationCenter defaultCenter] addObserver:self 
                  selector:@selector(liveUpdate:) 
                   name:NSMetadataQueryDidUpdateNotification 
                   object:query]; 

        [self.fileDownloadMonitorQuery startQuery]; 
       } 
      } 
     } 
    }); 
} 

- (void)liveUpdate:(NSNotification *)notification 
{ 
    NSMetadataQuery *query = [notification object]; 

    if (query != self.fileDownloadMonitorQuery) 
     return; // it's not our query 

    if ([self.fileDownloadMonitorQuery resultCount] == 0) 
     return; // no items found 

    NSMetadataItem *item = [self.fileDownloadMonitorQuery resultAtIndex:0]; 
    double progress = [[item valueForAttribute:NSMetadataUbiquitousItemPercentDownloadedKey] doubleValue]; 
    NSLog(@"download progress = %f", progress); 

    // report download progress somehow.. 

    if ([[item valueForAttribute:NSMetadataUbiquitousItemIsDownloadedKey] boolValue]) 
    { 
     // finished downloading, stop the query 
     [query stopQuery]; 
     _fileDownloadMonitorQuery = nil; 
    } 
} 
+0

Danke, aber ich möchte die Webseite die Datei in iCloud herunterladen. Vielleicht hätte ich die App gar nicht erwähnen sollen. Ich brauche keine Hilfe mit der App, die die Datei in iCloud entdeckt. Ich muss nur die Datei auf die iCloud (in?) Bringen, bevor meine App installiert wird. Wenn es nur eine Art Pass-Through-Parameter gäbe, die Sie über den App Store senden könnten. – Melchester

Verwandte Themen