一旦确定文件夹不为空,如何获得本地通知?
Posted
技术标签:
【中文标题】一旦确定文件夹不为空,如何获得本地通知?【英文标题】:How to get local notification once folder is determined to be not empty? 【发布时间】:2011-09-09 00:50:37 【问题描述】:我想知道如何在我的应用程序的 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);
【问题讨论】:
您的标签与您的问题冲突 - 您要求推送通知还是本地通知? 不知道您的问题到底是什么。您是在寻找NSTimer
的替代品还是只是想知道如何在找到文件时发出通知?
我只是想了解如何在后台获取通知。
你的定时器现在是如何工作的?让我们看看你的代码。
【参考方案1】:
我相信您想通知所有其他类文件夹已填充文件。
以下步骤可以为您做到这一点。
-
在您希望接收通知的类的初始化中写入以下行。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkFiles:) name:@"FILES_AVAILABLE" object:nil];
在同一类中编写具有以下签名的方法 checkFiles。
-(void)checkFiles:(id)sender
当文件可用时,在计时器类中添加以下行。
[[NSNotificationCenter defaultCenter] postNotificationName:@"FILES_AVAILABLE" object:self];
如果这没有帮助,那么您可以使用 NSUserDefault 来存储应用程序的状态(在您的情况下文件是否可用)。或者,如果您对设计模式感兴趣,请阅读观察者模式。
如果您想在应用程序处于后台模式时发布通知,并且某些仍在运行的进程会获得一些更新,则可以使用通知队列来实现。阅读以下链接。我不是在写代码,因为代码是在链接本身给出的。
http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Notifications/Articles/NotificationQueues.html#//apple_ref/doc/uid/20000217-CJBCECJC
如果您需要更多帮助,请在此处发布。
【讨论】:
其实我只是想在后台通知用户。通知应该唤醒手机并有两个按钮,这两个按钮都是可控的。这意味着我应该能够像控制 UIAlertView 中的按钮一样控制它们(通过向它们添加逻辑) 希望这会有所帮助...developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/…以上是关于一旦确定文件夹不为空,如何获得本地通知?的主要内容,如果未能解决你的问题,请参考以下文章