NKAssetDownload destinationURL не существует как файл или каталог - PullRequest
1 голос
/ 02 января 2012

Я пытаюсь перейти на NewsstandKit, чтобы получить выгоду от фоновой загрузки.

Я могу запустить NKAssetDownload и установить делегата.Но когда дело доходит до загрузки загруженного контента, я не могу получить его из файловой системы.

Я запрашиваю CMS для контента с определенными параметрами, и он возвращает загрузку файла.Загрузка обычно продолжается, НО файл впоследствии нигде не будет найден.

Этот код соответствует делегату загрузки:

- (void)connectionDidFinishDownloading:(NSURLConnection *)connection destinationURL:(NSURL *)destinationURL {

#if DEBUG 
    NSLog(@"NewsstandTracker.m connectionDidFinishDownloading destinationURL:%@",destinationURL);

    NSLog(@"========= destination url contents =======");


    NSFileManager *manager = [[[NSFileManager alloc] init] autorelease];

    NSError *error = nil;
    BOOL isdir = 0;
    BOOL exists = [manager fileExistsAtPath:[destinationURL absoluteString] isDirectory:&isdir];
    NSLog(@"file exists: %d isDir:%d",exists,isdir);
    NSLog(@"error: %@",error);
    NSString *f = [[[assetDownload URLRequest] URL] lastPathComponent];
    NSDirectoryEnumerator * enumerator = [manager enumeratorAtPath:[[destinationURL absoluteString]stringByAppendingPathComponent:f]];

    for (NSString *url in enumerator) {

        NSLog(@"%@",url);
    }



    NSLog(@"======= contentURL contents =======");

    manager = [[[NSFileManager alloc] init] autorelease];
    NSDirectoryEnumerator * en = [manager enumeratorAtPath:[[[self getNewsstandIssue] contentURL] absoluteString]];


    for (NSString *url in en) {

        NSLog(@"%@",url);
    }

#endif
//do more stuff according to NewsstandKit docs

Это вывод консоли

2012-01-02 16:01:45.843[499:707] NewsstandKit: cleaning up abandoned asset downloads: (
    "<NKAssetDownload: 0x36dc510> -> {identifier: '75F48F44-ADF9-4F83-ABF6-5C03F57524C1/508E80A2-A8AA-4DD1-A979-715395E4E8DD'  request: <NSURLRequest http://server-content/getFreeIssue/a_product_id>  downloading: NO}"
)
2012-01-02 16:02:43.613[499:707] NewsstandTracker.m connectionDidFinishDownloading destinationURL:file://localhost/private/var/mobile/Applications/992490C5-2607-4942-B06D-4EE9CD6226E4/Library/Caches/bgdl-499-2e4c509b06864f5c.issue23
2012-01-02 16:02:43.614[499:707] ========= destination url contents =======
2012-01-02 16:02:43.614[499:707] file exists: 0 isDir:0
2012-01-02 16:02:43.615[499:707] error: (null)
2012-01-02 16:02:43.616 GSMagazine[499:707] ======= contentURL contents =======

Кажется, что-то проясняет загрузку, прежде чем я смогу что-то с ней сделать.

Есть какие-нибудь подсказки?

Ответы [ 3 ]

1 голос
/ 12 января 2012

паку Попробуйте использовать [destinationURL path] вместо [destinationURL absoluteString]. Файловый менеджер ожидает путь, а не URL в формате строки

0 голосов
/ 21 января 2013

Вам необходимо восстановить закачки:

    NKLibrary *nkLib = [NKLibrary sharedLibrary];
for(NKAssetDownload *asset in [nkLib downloadingAssets]) {
    NSLog(@"Asset to downlaod: %@",asset);
    [asset downloadWithDelegate:Downloader];
}

в didFinishLaunchingWithOptions приложения UIA.

К сожалению, для меня это работает только до инициализации UIView и Controller. Я пытался поместить этот код в applicationDidBecomeActive, но он не работает должным образом, когда приложение работает в автономном режиме.

0 голосов
/ 21 марта 2012

Это та же проблема, с которой я столкнулся после перехода на загрузку NewsStand.iOS отменяет все ожидающие загрузки, которые вы не запускаете снова при запуске приложения.Это должно быть сделано в методе didFinishLaunchingWithOptions

    NSUInteger count  = [[NKLibrary sharedLibrary] downloadingAssets].count;
        for(NSUInteger i = 0 ; i < count ; i++)
        {
            MAZDebugLog(@"We have some pending downloads");
            NKAssetDownload *asset = [[[NKLibrary sharedLibrary] downloadingAssets] objectAtIndex:i];

[asset downloadWithDelegate:self];

        }
...