zoukankan      html  css  js  c++  java
  • (七十三)iOS本地推送通知的实现

    iOS的推送通知分为本地推送和网络推送两种,如果App处于挂起状态,是可以发送本地通知的,如果已经被杀掉,则只有定时通知可以被执行,而类似于QQ的那种网络消息推送就无法实现了,因为App的网络模块在被杀掉后是无法执行的,这时候就要借助远程通知,通过苹果的服务器转发通知到手机,本文只介绍本地通知的用法。

    ①对于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



  • 相关阅读:
    maven创建父子工程
    webservice之jersey简单实用
    EL表达式处理字符串
    oracle不等于1怎么查?
    day_07 搭建Tomcat服务器使用Servlet服务,后端接受前端请求过来的表单数据并使用
    Day_06 流程控制-循环结构-嵌套循环结构的原理解析
    Day05_流程控制02 循环结构
    day_5 流程控制 选择结构的两种常用语句的使用语法
    day_04 运算符详解
    day_03 变量的数据类型详解
  • 原文地址:https://www.cnblogs.com/aiwz/p/6154135.html
Copyright © 2011-2022 走看看