iOS APP在前台收到push,弹出系统框

      在iOS9以前,APP前台可以收到push的数据,但是没有UI展示,需要APP自己展示。iOS 10以后,苹果统一使用 UserNotifications ,以前的API都被标为弃用了。

在appdelegate 中添加代理和代理方法。

#import

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    if (@available(iOS 10.0, *)) {
        [UNUserNotificationCenter currentNotificationCenter].delegate=self;
    }
    //some code
}
/*实现前台弹出系统的push框*/
- (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler {
    
    completionHandler(UNNotificationPresentationOptionBadge
                      |UNNotificationPresentationOptionAlert);
}

删除系统通知栏中的push消息

[[UNUserNotificationCenter currentNotificationCenter] getDeliveredNotificationsWithCompletionHandler:^(NSArray * _Nonnull notifications) {
        UNNotification* item = notifications.firstObject;//举例,删除第一条(最上面的一条)
        [[UNUserNotificationCenter currentNotificationCenter] removeDeliveredNotificationsWithIdentifiers:@[item.request.identifier]];
    }];

还有类似的功能:

• 取消还未展示的通知
• 更新还未展示的通知
• 移除已经展示过的通知(即上面代码)
• 更新已经展示过的通知

 

参考:https://onevcat.com/2016/08/notification/ 活久见的重构 - iOS 10 UserNotifications 框架解析

你可能感兴趣的:(iOS,UI层,iOS,push开发专栏)