ios中的推送通知

注意:

这里的推送通知和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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值