(七十三)iOS本地推送通知的实现
2015-07-16 21:57
459 查看
iOS的推送通知分为本地推送和网络推送两种,如果App处于挂起状态,是可以发送本地通知的,如果已经被杀掉,则只有定时通知可以被执行,而类似于QQ的那种网络消息推送就无法实现了,因为App的网络模块在被杀掉后是无法执行的,这时候就要借助远程通知,通过苹果的服务器转发通知到手机,本文只介绍本地通知的用法。
①对于iOS8及以上的版本,需要注册本地通知才能使用,一般在AppDelegate中注册:
其中settingsForTypes是一系列可以并列的参数,实现原理就是多个二进制位表示多个功能,每个功能在不同的位,当各个位相或,相应的位被置1,从而开启功能,这里开启的是Alert通知和声音提示。categories是一个NSSet,官方给出的解释是通知包含的一系列行为,一般写nil即可。
②发送一条通知,需要设置alertBody(消息体),fireDate(发送时间),soundName(提示音,一般填default)。
最后利用UIApplication单例调用scheduleLocalNotification方法发送通知:
①对于iOS8及以上的版本,需要注册本地通知才能使用,一般在AppDelegate中注册:
if ([[UIDevice currentDevice].systemVersion doubleValue] >= 8.0) { UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeSound categories:nil]; [application registerUserNotificationSettings:settings]; }
其中settingsForTypes是一系列可以并列的参数,实现原理就是多个二进制位表示多个功能,每个功能在不同的位,当各个位相或,相应的位被置1,从而开启功能,这里开启的是Alert通知和声音提示。categories是一个NSSet,官方给出的解释是通知包含的一系列行为,一般写nil即可。
②发送一条通知,需要设置alertBody(消息体),fireDate(发送时间),soundName(提示音,一般填default)。
最后利用UIApplication单例调用scheduleLocalNotification方法发送通知:
UILocalNotification *localNoti = [[UILocalNotification alloc] init]; localNoti.alertBody = [NSString stringWithFormat:@"%@:%@",message.fromStr,message.body]; localNoti.fireDate = [NSDate date]; localNoti.soundName = @"default"; [[UIApplication sharedApplication] scheduleLocalNotification:localNoti];一般的通知都是在应用处于后台时才被发送,因此在发送之前应该判断是否后台,判断方法如下:
[UIApplication sharedApplication].applicationState != UIApplicationStateActive
相关文章推荐
- (七十三)iOS本地推送通知的实现
- ios感想
- iOS的主要框架介绍
- IOS模拟器点击fieldText 不弹出软键盘
- [译] 二、开始iOS编程之前,你还需要做什么?
- [iOS 利用MapKit和CoreLocation框架打造精简的定位和导航]
- iOS前期OC训练OC_02继承,便利构造器,初始化方法
- iOS前期OC训练OC_02可见度,方法
- iOS前期OC训练OC_01类和对象
- iOS AvPlayer AvAudioPlayer音频的后台播放问题
- iOS学习第一天
- iOS学习笔记--(c基础2)
- iOS 录音并播放,使用AFN发送文件
- VT-x is disabled in the BIOS. (VERR_VMX_MSR_VMXON_DISABLED).
- iPhone 6/plus iOS Safari fieldset border 边框消失
- 【iOS学习】二、实现直播技术学习
- iOS_关联详解
- iOS 设置程序的图片 以及启动画面
- iOS开发系列--让你的应用“动”起来--动画
- iOS开发系列--并行开发其实很容易--多线程