UIFileSharingEnabled сохранить только файлы - PullRequest
0 голосов
/ 16 августа 2011

В моем iOS-приложении я бы хотел, чтобы этот пользователь мог скачать какой-нибудь jpg-файл через iTunes. Итак, я включил UIFileSharingEnabled. Но пользователи теперь могут помещать файлы в мое приложение. Я хотел бы заблокировать это. Есть ли способ сделать это?

Спасибо!

1 Ответ

1 голос
/ 16 августа 2011

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

Добавьте немного кода, подобного примеру ниже - заполните тест, чтобы избежать удаления файлов, которые вы хотите иметь в iTunes.

Вызовите это из applicationDidBecomeActive: в делегате приложения.

Если вы более осторожны, возможно, вы захотите убедиться, что пользователь не удалил файл jpg с тем же именем, что и файл, который вы там припарковали. Вы можете проверить одинаковость даты или что-то подобное, или, если у вас не так много файлов, просто удалите все и напишите их снова, когда приложение станет активным.

- (void) removeUnwantedFiles;
{    
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];

    NSArray* directoryContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:inboxPath error:NULL];

    if (!directoryContents || [directoryContents count] == 0)
    {
        return;
    }

    for (NSString* fileName in directoryContents)
    {
        if ( /* some test of filename to see if it's one of my kosher files */ ) continue;

        NSString* filePath = [documentsDirectory stringByAppendingPathComponent:fileName];
        NSError* error = nil;
        BOOL success = [[NSFileManager defaultManager] removeItemAtPath:filePath error:&error];
        // NSLog(@"Deleting (%@): %@", success ? @"succeeded" : @"failed", [filePath lastPathComponent]);
        if (!success)
        {
            NSLog(@"Error: %@", [error localizedDescription]);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...