• 本地通知和远程推送《转载http://www.bubuko.com/infodetail-967791.html》


    //也可以参考http://www.cnblogs.com/kenshincui/p/4168532.html  崔江涛讲的 很不错哦

     

    推送通知和NSNotification是有区别的:

    NSNotification:是看不到的

    推送通知:是可以看到的

    IOS中提供了两种推送通知

    本地推送通知:(Local Notification):手机应用本身的通知,比如:闹铃

    远程推送通知:(Remote Notification)从服务器发送过来的通知

     

    推送通知的作用:让不在前台运行的App,告知用户App内部发生了什么事情.比如我们正在聊微信,突然界面上面出现了黑色半透明横幅(QQ好友给你发送的消息)这就是一个推送通知.

     

    推送通知的呈现效果:

    1:在屏幕顶部显示一块横幅(显示具体内容)

    2:在屏幕中间弹出一个UIAlertView(显示具体内容)

    3:还可以在呈现推送通知的同时播放音效(提醒作用)

    4:屏幕锁屏时也照样呈现(显示具体内容)

    5:呈现推送通知的同时,还可以更新App图标右上角的数字(说明新内容的数量)

    6:用户接收的推送通知,都会展示在通知中心(手指从屏幕顶部往下拉的窗口)(显示具体的内容)

     

    推送通知的使用细节:

    StartFragment

    1:发出推送通知时,如果当前程序正运行在前台,那么推送通知就不会被呈现出来

     

    2:点击推送通知后,默认会自动打开发出推送通知的app

     

    3:不管app打开还是关闭,推送通知都能如期发出

    什么是本地推送通知:

    顾名思义,就是不需要联网的就能发出的推送通知(不需要服务器的支持)

    本地推送通知的使用场景:

    常用来定时提醒用户完成一些任务,比如:清理垃圾,记账,购物,买衣服,看电影

    如何发出本地推送通知:

    步骤:

    1:注册通知类型(IOS8以后)

    2:创建本地推送通知对象

    3:定制一个通知

     

    #import "ViewController.h"

     

    @interface ViewController ()

     

    @end

     

    @implementation ViewController

     

    - (void)viewDidLoad {

        [super viewDidLoad];

        //1 :IOS8以后需要注册通知类型,包含哪些(声音,图标文字,)信息,

        /*

         UIUserNotificationTypeNone    = 0

         UIUserNotificationTypeBadge   = 1 << 0 包含图标文字(左上角的数字)0001

         UIUserNotificationTypeSound   = 1 << 1 声音 ----------------->0010

         UIUserNotificationTypeAlert   = 1 << 2 主题内容--------------->0100

         目前是:0111,这个值是数值,下面的|||之间的内容相当于数值

         */

        // |:位移运算符 

        UIUserNotificationSettings *seting=[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert categories:nil];

        

        [[UIApplication sharedApplication]registerUserNotificationSettings:seting];    

    }

     

    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{

        //告诉它有一个本地通知

        //2:创建一个本地推送通知对象

        UILocalNotification*local=[[UILocalNotification alloc]init];

        /*

         // timer-based scheduling  特定的时间发出通知

         @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);决定区域的一个BOOL

         // alerts警告

         @property(nonatomic,copy) NSString *alertBody; 提醒的主题

         @property(nonatomic) BOOL hasAction; NO不显示滑动解锁按钮  反之显示

         @property(nonatomic,copy) NSString *alertAction; 滑动解锁的文字     

         @property(nonatomic,copy) NSString *alertLaunchImage;  点击通知横幅的时候启动程序的启动 图片

         @property(nonatomic,copy) NSString *alertTitle 提示的标题文字NS_AVAILABLE_IOS(8_2);

         // sound

         @property(nonatomic,copy) NSString *soundName; 伴随的声音,默认的是UILocalNotificationDefaultSoundName

         // badge

         @property(nonatomic) NSInteger applicationIconBadgeNumber;图标右上角的数字

         // user info

         @property(nonatomic,copy) NSDictionary *userInfo;用户指定的携带参数,转换成键值对放在字典里面

         @property (nonatomic, copy) NSString *category NS_AVAILABLE_IOS(8_0);分类

         */

     

        //给这些属性赋值才能让通知有特定的内容

        local.alertBody=@"女神:在吗?";

        //特定的时间让显示出来(从现在5秒后显示出来)

        local.fireDate=[NSDate dateWithTimeIntervalSinceNow:5];

        //滑动解锁的文字(在推送通知信息的下面一小行字)

        local.alertAction =@"";

        //有声音给声音,没声音用默认的

        local.soundName=@"UILocalNotificationDefaultSoundName";

        //设置图标右上角数字

        local.applicationIconBadgeNumber=19;

        //用户信息

        local.userInfo=@{@"name":@"女神",@"content":@"在不",@"time":@"20180101"};

        //3:定制一个通知 

        

        [[UIApplication sharedApplication]scheduleLocalNotification:local];

        

    }

     

    @end

     什么是远程推送?

    远程:从远程服务器推送给客户端的通知(需要联网)

    1、应用程序注册APNS消息推送。

    2、iOS从APNS Server获取devicetoken,应用程序接收device token。

    3、应用程序将device token发送给程序的PUSH服务端程序。

    4、服务端程序向APNS服务发送消息。

    5、APNS服务将消息发送给iPhone应用程序。

    参考

    http://www.cocoachina.com/industry/20130321/5862.html

  • 相关阅读:
    JUnit快速入门
    CoreJava笔记之线程
    CoreJava笔记之JavaBean、静态方法static和final
    CoreJava基础之构造器
    JAVA环境配置
    软件测试工程师应该具备的能力
    Apache和Tomcat的整合过程(转载)
    ios界面适配和图标的各种大小
    iPhone6和iPhone6 plus的iOS8设计尺寸参考指南
    博主写的非常详细的ios网络请求、uiwebview与js交互
  • 原文地址:https://www.cnblogs.com/liuyang666/p/5289676.html
Copyright © 2020-2023  润新知