博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS10推送适配完整说明
阅读量:5877 次
发布时间:2019-06-19

本文共 2855 字,大约阅读时间需要 9 分钟。

一年一度的iOS大版本更新又开始了,对于不明真相吃瓜群众来说真是太好啦!对于我们程序员却意味着disaster...这次的推送架构完全推翻以往,所以得从新适配,话不多说,开始吧。 1.在targets的Capabiliies内Push Notifications选项开关打开

然后Background Modes打开如下几个选项

友情提示上图几个选项,如果你应用内没有需要在后台音频播放或者位置更新,第一和第二项还是别勾上了,免得被App Store审核bb...我的刚提交两天就给我干下来返工了,555

General内导入UserNotifications.framework

2.进入Appdelegate.m文件

2.1) #import <UserNotifications/UserNotifications.h>

遵循UNUserNotificationCenterDelegate协议

@interface AppDelegate()<UNUserNotificationCenterDelegate>

2.2)

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

方法内调用registRemoteNotifications方法

//20160930 注册通知APNS

[self registRemoteNotifications];

该方法具体如下

1.- (void)registRemoteNotifications {        if ([[[UIDevice currentDevice] systemVersion]floatValue]>=10.0) {        //申请用户同意        UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];        center.delegate = self;        [center requestAuthorizationWithOptions:(UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert) completionHandler:^(BOOL granted, NSError * _Nullable error) {            if (!error) {                NSLog(@"succeeded!");            }            if (granted) {                                [center getNotificationSettingsWithCompletionHandler:^(UNNotificationSettings * _Nonnull settings) {                                        NSLog(@"remoteNotificationSetting: %@", settings);                                    }];            }        }];            }    float ios_version = [[[UIDevice currentDevice] systemVersion] floatValue];        if (ios_version >= 8.0){//iOS8-iOS10        [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];        [[UIApplication sharedApplication] registerForRemoteNotifications];    }    else {        [[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeSound|UIRemoteNotificationTypeAlert];    }    }复制代码

2.3) 再实现如下两个代理方法 #pragma mark --ios10推送回调 //前台回调

1)- (void)userNotificationCenter:(UNUserNotificationCenter*)center willPresentNotification:(UNNotification*)notification withCompletionHandler:(void(^)(UNNotificationPresentationOptions))completionHandler{    [self application:[UIApplication sharedApplication] didReceiveRemoteNotification:notification.request.content.userInfo];}//后台回调2)   - (void)userNotificationCenter:(UNUserNotificationCenter*)center didReceiveNotificationResponse:(UNNotificationResponse*)response withCompletionHandler:(void(^)())completionHandler{    [self application:[UIApplication sharedApplication] didReceiveRemoteNotification:response.notification.request.content.userInfo];}复制代码

完成

转载地址:http://jjkix.baihongyu.com/

你可能感兴趣的文章
Netty 4.1.35.Final 发布,经典开源 Java 网络服务框架
查看>>
详解Microsoft.AspNetCore.CookiePolicy
查看>>
SCDPM2012 R2实战一:基于SQL 2008 R2集群的SCDPM2012 R2的安装
查看>>
SQL SERVER中字段类型与C#数据类型的对应关系
查看>>
Linux lsof命令详解
查看>>
SVG path
查看>>
js判断checkbox是否选中
查看>>
多系统盘挂载
查看>>
MySQL函数怎么加锁_MYSQL 函数调用导致自动生成共享锁问题
查看>>
MR1和MR2的工作原理
查看>>
Eclipse中修改代码格式
查看>>
GRUB Legacy
查看>>
关于 error: LINK1123: failure during conversion to COFF: file invalid or corrupt 错误的解决方案...
查看>>
python实现链表
查看>>
java查找string1和string2是不是含有相同的字母种类和数量(string1是否是string2的重新组合)...
查看>>
Android TabActivity使用方法
查看>>
Eclipse的 window-->preferences里面没有Android选项
查看>>
《麦田里的守望者》--[美]杰罗姆·大卫·塞林格
查看>>
遇到的那些坑
查看>>
央行下属的上海资信网络金融征信系统(NFCS)签约机构数量突破800家
查看>>