Как получить локальное уведомление, если папка определена как не пустая? - PullRequest
0 голосов
/ 09 сентября 2011

Я хотел бы знать, как получать локальные уведомления, когда NSTimer моего приложения работает в фоновом режиме.Мой NSTimer проверяет определенную папку на наличие файлов каждую секунду в течение 10 минут в фоновом режиме.Как мне получить локальное уведомление, если файл найден?

РЕДАКТИРОВАТЬ: Код:

- (void) createTimeThread: (float) pIntervalTime
{
    [NSThread detachNewThreadSelector:@selector(startTimerThread) 
                             toTarget:self withObject:nil];
}

- (void) startTimerThread
{
    UIBackgroundTaskIdentifier bgTask = [[UIApplication sharedApplication]
                                         beginBackgroundTaskWithExpirationHandler:^{}];

    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
    NSRunLoop* runLoop = [NSRunLoop currentRunLoop];

    myTimer = [NSTimer scheduledTimerWithTimeInterval:1
                                               target:self
                                             selector:@selector(conditionChecking:)
                                             userInfo:nil
                                              repeats:YES]; 

     [runLoop runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]];
     [pool release];

    [[UIApplication sharedApplication] endBackgroundTask:bgTask];
}

- (void)conditionChecking:(NSIndexPath *)indexPath
{
    NSString *pathForFile = @"/User/Library/Logs/CrashReporter"; 

    NSFileManager *fileManager = [NSFileManager defaultManager];

    if ([fileManager fileExistsAtPath:pathForFile]) { // Directory exists
        NSArray *listOfFiles = [fileManager contentsOfDirectoryAtPath:pathForFile error:nil];

        if (!listOfFiles || !listOfFiles.count)
        {
            NSLog(@"No Core Dumps found....."); 
        }
        else
        {
            NSLog(@"Core Dump(s) found! :%@", listOfFiles);
        }
    }
}

1 Ответ

0 голосов
/ 09 сентября 2011

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

Следующие шаги могут сделать это за вас.

  1. напишите следующую строку при инициализации классагде вы хотите получать уведомление.

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkFiles:) name:@"FILES_AVAILABLE" object:nil];

  1. Написать методы checkFiles со следующей подписью в том же классе.

    -(void)checkFiles:(id)sender

  2. Добавьте следующую строку в класс таймера, когда файлы доступны.

    [[NSNotificationCenter defaultCenter] postNotificationName:@"FILES_AVAILABLE" object:self];

Если это не помогает, тогдаВы можете использовать NSUserDefault для хранения статуса приложения (файлы доступны или нет в вашем случае).ИЛИ Если вы заинтересованы в шаблонах проектирования, прочитайте о Observer Pattern.

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

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Notifications/Articles/NotificationQueues.html#//apple_ref/doc/uid/20000217-CJBCECJC

Пишите здесь, если вам нужна дополнительная помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...