在iPhone上收到通知时会触发哪种方法(而不是在通知被点击和打开后)?

时间:2015-05-15 10:24:37

标签: ios apple-push-notifications

我现在正在使用didReceiveRemoteNotification来获取从Parse推送的通知的有效负载,但是,只有在点击并打开通知时才会触发它。

我正在尝试做的是启动警报以提醒用户通知已到达,所以我猜didReceiveRemoteNotification不是我正在寻找的。我应该为此目的考虑哪种方法?

谢谢!

4 个答案:

答案 0 :(得分:3)

  

来自 2014年WWDC的文字 iOS通知中的新内容

     

本地和推送通知允许后台或非活动应用通知用户发生了感兴趣的事件,或者应用为其提供了新信息。

WWDC 2013 多任务的新功能告诉我们如何开展这项工作。

•在 info.plist

中添加UIBackgroundModes : remote-notification

enter image description here

•在从服务器发送时,在您的有效负载中添加`content-available:1

enter image description here

•让iOS处理它以打开您的应用程序以进行后台模式

enter image description here

对于iOS 10及更高版本,您必须从目标开启Background Modes - >在功能下,选中标记必填字段。

enter image description here

现在您可以根据需要设置闹钟。您可以设置预定的本地通知,直到用户与应用程序进行交互

答案 1 :(得分:0)

除非用户点击通知横幅该应用位于前台,否则您无法对推送通知执行任何操作。在后台,你没有控制权。参考Apple Push Notification setting up Remote Notifications method overrides other methods

答案 2 :(得分:0)

您必须在app delegate中查找此方法: -

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

现在检查您的应用是否已收到任何推送通知

UILocalNotification *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
    if (notification) {
        NSLog(@"app received a notification %@",notification);
        [self application:application didReceiveRemoteNotification:(NSDictionary*)notification];
    }else{
        NSLog(@"app did not receive a notification");
    }

答案 3 :(得分:0)

在iOS中收到远程通知时,将调用以下方法。

func application(_ application: UIApplication,
                 didReceiveRemoteNotification userInfo: [AnyHashable : Any],
                 fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
    // do something
}

除了用于远程通知的基本设置之外,您还应该在通知有效载荷中的标记下方设置

"content-available": 1