ios - ios 如何在应用程序关闭时接收本地通知

标签 ios objective-c storyboard uilocalnotification

我正在使用本地通知作为警报系统,但在处理本地通知时遇到一些问题,当我单击警报通知(应用程序关闭时)时,它会启动应用程序,但问题是它应该转到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)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    UILocalNotification *localNotif = [launchOptions objectForKey: UIApplicationLaunchOptionsLocalNotificationKey];
    if (localNotif) 
    {
        NSLog(@"Recieved Notification %@",localNotif);
    }
    return YES;
}                                   
- (void)applicationWillResignActive:(UIApplication *)application 
{
}
- (void)applicationDidEnterBackground:(UIApplication *)application 
{
}
- (void)applicationWillEnterForeground:(UIApplication *)application 
{
}
- (void)applicationDidBecomeActive:(UIApplication *)application 
{
}
- (void)applicationWillTerminate:(UIApplication *)application 
{
}
-(void) application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification 
{
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:notification.alertAction message:notification.alertBody delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alertView show];
}
@end

最佳答案

这是不可能的,当您的应用没有运行通知时,它不会直接对通知使用react。

didFinishLaunchingWithOptions 仅当用户通过此通知打开您的应用程序时才会包含有关通知的信息。如果他取消它并通过仪表板图标打开您的应用程序,您将不会在此方法中看到此内容。

不幸的是,如果您需要对用户上次打开应用程序时发生的所有通知使用react,唯一的方法是构建您自己的跟踪逻辑并根据时间获取过去的所有事件。 此外,甚至无法获取您为应用程序安排的通知列表,因此通常最好构建基于时间的事件逻辑并在其之上使用通知,但所有逻辑都在您自己的时间发生基于代码。这样,即使用户禁用通知,您的关键逻辑也将起作用。

当应用程序在后台运行时,您将通过application:didReceiveRemoteNotification收到通知。如果您想在用户从后台返回应用程序后在应用程序中为这些通知执行任何特定操作,您可以在应用程序内收集这些通知,并在 applicationDidBecomeActive 上处理它们。

关于ios - ios 如何在应用程序关闭时接收本地通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25075141/

相关文章:

ios - 当应用程序关闭时如何从推送通知中获取数据?

ios - 我在保存单个对象时遇到问题,而不是将所有对象保存在 NSMangedObject 堆栈中??

iphone - 以编程方式更改 UITableview 页眉/页脚的内容

iphone - SQLite - 从表中检索经纬度集

objective-c - 如何右对齐 UILabel 文本?

swift - xCode Swift 文件变灰并带有红色文本

ios - 在 Storyboard中使用本地化字符串

ios - iOS 6 中的自定义 URL 方案不起作用?

ios - 在 iOS 上将图像和文本内联居中

ios - 访问 Storyboard View 1 和 3 之间的数据