首页 文章

iOS本地通知 - 在后台进行回调

提问于
浏览
4

上下文:我的iOS应用程序使用本地通知我安排本地通知,然后在通知触发时通过didRecieveLocalNotifications回复 .

这应用程序在 foreground 时工作正常但是当应用程序进入 background 时,我收到iOS通知 but no call back .

我的问题:当应用程序处于后台时,如何从iOS获得回调 .

这是回拨代码 -

- (void)application:(UIApplication *)application didReceiveLocalNotification:    (UILocalNotification *)notification
{

    //call your method that you want to do something in your app
    NSLog (@"Received Notification");
    [UIApplication sharedApplication].applicationIconBadgeNumber = 1;
    [myRootController HandleLocalNotifications:notification];

}

1 回答

  • 9

    你在描述 application:didReceiveLocalNotification: . 这在iOS 10中已弃用 . 您应该更新到UserNotification框架 .

    接着 .

    如果您的应用程序位于最前端,则用户不会收到警报 . 相反,你得到 application:didReceiveLocalNotification: .

    如果您的应用不在最前面,则用户会收到提醒 . 因此,您没有获得 application:didReceiveLocalNotification: 因为通知已被触发 . 但是,如果用户收到通知并通过点击通知提醒召唤您的应用,您就会得到它 . 如果用户这样做,即使在后台也会得到 application:didReceiveLocalNotification: .

    但是,如果您的应用程序在后台终止,您将获得 application:didFinishLaunchingWithOptions: (并且您可以检查 options 以了解您是否因为通知而被启动) .

    如果您的应用程序在后台运行或未运行,并且用户未点击通知并召唤您的应用程序,您将什么也得不到,并且无法知道该通知已被触发 . 这是因为通知不是为了您的利益,而是一种向用户发送消息的方式 . (听起来,从您的问题来看,好像您可能滥用本地通知作为向自己发送消息的方式 . 这不是它们的用途 . )

相关问题