ios中的推送通知

来源:互联网 发布:mac玩游戏卡 编辑:程序博客网 时间:2024/04/30 21:21

注意:

这里的推送通知和NSNotificaton有所区别。NSNotification是抽象的不可见的。推送通知是可见的(能用肉眼看见的)

推送通知分两种:本地推送通知(local notification)和远程推送通知(remote notification)

推送通知:可以让不在前台运行的app(在后台,或者是关闭),告知用户app内部发生了什么事情。

本地推送通知:不需要联网就能发出的推送通知(不需要服务器的支持)。常用于定时提醒用户一些事情。

远程推送通知:不管打开还是关闭app,只要联网都能接收到服务器的远程消息。手机把设备的udid和app的bundle id发送给苹果服务器,苹果服务器通过加密生成devicetoken。手机通过app给服务器发送消息时候把devicetoken顺便发送过去,服务器保存此devicetoken。当app关闭时候,服务器把消息和devicetoken发送给苹果服务器,苹果服务器通过此devicetoken推送给手机。

****不管是调试还是发布带有推送功能的app,都要配置推送证书和描述文件。

先获取一个许可,然后注册一个远程通知,然后在代理方法中接收devicetoken


注意事项:ios8以上必须注册一个用户许可才可发送通知。(下面截图代码,不管是本地或者远程ios8以上都必须加)


1.本地通知具体代码:

@implementation ViewController- (void)viewDidLoad {    [super viewDidLoad];    //把app右上角的显示的通知数字删除    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];}- (IBAction)addLocalNote {
<span style="white-space:pre"></span>//本地通知对象的属性如下:    /*     @property(nonatomic,copy) NSDate *fireDate; // 设置本地推送的时间     @property(nonatomic,copy) NSTimeZone *timeZone; // 时区          @property(nonatomic) NSCalendarUnit repeatInterval;     // 重复多少个单元发出一次     @property(nonatomic,copy) NSCalendar *repeatCalendar;   // 设置日期          @property(nonatomic,copy) CLRegion *region NS_AVAILABLE_IOS(8_0);  // 比如某一个区域的时候发出通知     @property(nonatomic,assign) BOOL regionTriggersOnce NS_AVAILABLE_IOS(8_0); // 进入区域是否重复          @property(nonatomic,copy) NSString *alertBody;      消息的内容     @property(nonatomic) BOOL hasAction;                是否显示alertAction的文字(默认是YES)     @property(nonatomic,copy) NSString *alertAction;    设置锁屏状态下,显示的一个文字     @property(nonatomic,copy) NSString *alertLaunchImage;   启动图片          @property(nonatomic,copy) NSString *soundName;      UILocalNotificationDefaultSoundName          @property(nonatomic) NSInteger applicationIconBadgeNumber;  应用图标右上角的提醒数字          // user info     @property(nonatomic,copy) NSDictionary *userInfo;     */    // 1.创建本地通知    UILocalNotification *localNote = [[UILocalNotification alloc] init];        // 1.1.设置什么时间弹出    localNote.fireDate = [NSDate dateWithTimeIntervalSinceNow:5];        // 1.2.设置弹出的内容    localNote.alertBody = @"吃饭了吗?";        // 1.3.设置锁屏状态下,显示的一个文字    localNote.alertAction = @"快点打开";        // 1.4.显示启动图片    localNote.alertLaunchImage = @"123";        // 1.5.是否显示alertAction的文字(默认是YES)    localNote.hasAction = YES;        // 1.6.设置音效    localNote.soundName = UILocalNotificationDefaultSoundName;        // 1.7.应用图标右上角的提醒数字    localNote.applicationIconBadgeNumber = 999;        // 1.8.设置UserInfo来传递信息    localNote.userInfo = @{@"alertBody" : localNote.alertBody, @"applicationIconBadgeNumber" : @(localNote.applicationIconBadgeNumber)};        // 2.调度通知    [[UIApplication sharedApplication] scheduleLocalNotification:localNote];}

添加需求:当用户通过点击通知打开app时候跳到指定页面(点击应用图标打开app还正常跳到主页面)(下面两幅图结合)。


注意点:不管用过通过何种方式打开app都会进入如下方法。但是当通过点击app图标打开时候,方法的参数launchOptions为nil。除此之外的其他方法(本地通知,远程通知,应用间跳转等等)打开app的时候参数launchOptions里面对应的键有值。


2.远程通知

具体代码:



远程推送不需要专门的后端用第三方库即可:用极光推送。进入极光推送官网,下载iosSDK。在根据网站上的指南创建一个自己的应用得到app key,根据步骤操作就可以了。


0 0
原创粉丝点击