ios - 应用程序终止时处理推送通知

标签 ios objective-c iphone push-notification

当我的应用程序未运行并收到推送通知时,如果我单击该通知,应用程序将启动 - 但随后它不会使用我设置的警报 View 提示用户,询问他们是否需要是否查看通知的内容。它刚刚启动,并坐在那里。

当应用程序运行时,推送通知可以完美运行 - 无论是作为事件应用程序还是在后台运行 - 但当应用程序未运行时,则无法正常运行。

我尝试在应用程序中注销 launchOptions NSDictionary:didFinishLaunchingWithOptions: 以查看它带来的负载 - 但它显示为“(null)”。所以它基本上什么都不包含——这没有意义,因为它不应该包含通知的负载吗?

有人知道如何在应用未运行时让推送通知正常工作吗?

我的意思是当应用程序处于非运行状态时如何处理推送通知。如果,如果您收到很多通知并且您没有打开应用程序,您也没有点击系统的通知面板怎么办?您如何保留这些推送以供以后检索。

最佳答案

1) 当应用程序在后台运行时当应用程序在前台运行时 application:didReceiveRemoteNotification: 方法将如下调用。

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    if (application.applicationState == UIApplicationStateInactive)
    {
        // opened from a push notification when the app was on background
        NSLog(@"userInfo->%@", [userInfo objectForKey:@"aps"]);
    }
    else if(application.applicationState == UIApplicationStateActive)
    {
        // a push notification when the app is running. So that you can display an alert and push in any view
        NSLog(@"userInfo->%@", [userInfo objectForKey:@"aps"]);
    }
}

2) 当应用程序未启动(关闭) 然后 application:didFinishedLaunchingWithOptions 方法将被调用。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    if (launchOptions != nil)
    {
        // opened from a push notification when the app is closed
        NSDictionary* userInfo = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
        if (userInfo != nil)
        {
             NSLog(@"userInfo->%@", [userInfo objectForKey:@"aps"]);
        }
    }
    else
    {
        // opened app without a push notification.
    }
}

3) 目前无法删除特定通知。从您的应用程序中删除所有通知以便当用户从其中一个应用程序打开应用程序时它们不会显示在通知中心的方法是将应用程序角标(Badge)设置为 0。

关于ios - 应用程序终止时处理推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35058870/

相关文章:

ios - 仅在单击 'Save' 按钮时保存录制的视频

ios - UILabel 动画不正确

iphone - 在 Objective-C 和 iOS 中合并项目范围定义的最佳实践

iphone - 在没有支持变量的情况下在 Xcode 调试器中查看合成属性的值

objective-c - 处理 NSError 时理解 'potential null dereference'

iphone - 使用 NSPredicate 获取核心数据对象的问题

ios - 核心数据 NSPredicate for (select ... where not in (select))

ios - 获取一系列 NSDates 与另一个 NSDates 范围相交的天数

ios - 多个名为 'count' 的方法发现警告

ios - 当应用程序处于 InActive 模式时如何处理静默推送通知?在 Objective-C 中