我正在为警报系统使用本地通知,但在处理本地通知时遇到了一些问题,当我单击警报通知(当应用程序关闭时)它启动应用程序时,问题是它应该转到 didFinishLaunchingWithOptions 函数,但它没有进入 appDelegate 中的任何函数(我使用断点进行检查)。
我正在使用带有导航 Controller 的 Storyboard,我想在应用关闭时在通知点击时打开一个特定的 View Controller 。
但是当我正常启动该应用程序时,它会进入 didFinishLaunchingWithOptions 函数。
请提出建议。
任何帮助将不胜感激。
main.m
#import "DEMOAppDelegate.h"
int main(int argc, char * argv[])
{
@autoreleasepool
{
return UIApplicationMain(argc, argv, nil, NSStringFromClass([DEMOAppDelegate class]));
}
}
DEMOAppDelegate.m
#import "DEMOAppDelegate.h"
@implementation DEMOAppDelegate
- (BOOL)applicationUIApplication *)application didFinishLaunchingWithOptionsNSDictionary *)launchOptions
{
UILocalNotification *localNotif = [launchOptions objectForKey: UIApplicationLaunchOptionsLocalNotificationKey];
if (localNotif)
{
NSLog(@"Recieved Notification %@",localNotif);
}
return YES;
}
- (void)applicationWillResignActiveUIApplication *)application
{
}
- (void)applicationDidEnterBackgroundUIApplication *)application
{
}
- (void)applicationWillEnterForegroundUIApplication *)application
{
}
- (void)applicationDidBecomeActiveUIApplication *)application
{
}
- (void)applicationWillTerminateUIApplication *)application
{
}
-(void) applicationUIApplication *)application didReceiveLocalNotificationUILocalNotification *)notification
{
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:notification.alertAction message:notification.alertBody delegate:self cancelButtonTitle"OK" otherButtonTitles:nil];
[alertView show];
}
@end
Best Answer-推荐答案 strong>
这是不可能的,当您的应用未运行通知时,它不会直接对通知使用react。
didFinishLaunchingWithOptions 仅在用户通过此通知打开您的应用时才会包含有关通知的信息。如果他取消它并通过仪表板图标打开您的应用程序,您将不会在此方法中看到这一点。
不幸的是,如果您需要对用户上次打开应用时发生的所有通知使用react,唯一的方法是构建您自己的跟踪逻辑并根据时间获取过去的所有事件。
此外,甚至无法获取您为应用程序安排的通知列表,因此通常最好构建基于时间的事件逻辑并在其之上使用通知,但所有逻辑都在您自己的时间发生- 基于代码。这样,即使用户禁用通知,您的关键逻辑也将起作用。
当应用程序在后台运行时,您将通过 application:didReceiveRemoteNotification 收到通知。您可以在应用中收集这些通知,并在用户从后台返回应用后,如果您想在应用中为它们执行任何特定的操作,则在 applicationDidBecomeActive 上对其进行处理。
关于ios - 关闭应用程序时如何在ios中接收本地通知,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/25075141/
|