我正在开发一个应用程序,它执行一些计算繁重的任务,需要很长时间。当任务完成时,我想用本地推送通知通知用户。这可能吗?我能在网上找到的唯一信息是在特定时间/日期触发通知,或者应用程序是否已进入后台或终止,所有这些都是在appDelegate中完成的。在我自己的课堂上有没有办法做到这一点?
谢谢。
我不是100%确定你正在寻找一个UILocalNotification
的例子,因为帖子标题提到推送通知。无论哪种方式,你都可以从任何你想要的类调度本地通知
- (void)throwLocalNotificationWithMessage:(NSString*)message {
UILocalNotification *localNotification = [[UILocalNotification alloc] init];
NSDate *now = [NSDate date];
localNotification.fireDate = now;
localNotification.alertBody = message;
localNotification.soundName = UILocalNotificationDefaultSoundName;
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
[UIApplication sharedApplication].applicationIconBadgeNumber++;
}
此外,出于我的需要,当区域监控检测到边界进入/退出更改时,我抛出这些本地通知。这段代码运行时,我的应用程序在后台,以及,在这种情况下,他们看起来像推送通知。
上面Aaron的回答很好,但是不要忘记请求本地通知的许可。在我的例子中,我在AppDelegate
(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
这是iOS8和iOS9的代码
if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) {
[application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]];
}