必威-必威-欢迎您

必威,必威官网企业自成立以来,以策略先行,经营致胜,管理为本的商,业推广理念,一步一个脚印发展成为同类企业中经营范围最广,在行业内颇具影响力的企业。

推送通知的呈现效果总结,推送通知的呈现效果

2019-09-17 13:22 来源:未知
  • 注意:这里说的推送通知跟NSNotification有所区别NSNotification是抽象的,不可见的
  • 推送通知是可见的

图片 1

推送通知

iOS中提供了2种推送通知

  • 本地推送通知(LocalNotification)
  • 远程推送通知(RemoteNotification)

图片 2

注意:这里说的推送通知跟NSNotification有所区别

推送通知的作用

图片 3推送通知的作用.png

图片 4

NSNotification是抽象的,不可见的

推送通知的呈现效果总结

  • 总结一下,推送通知有5种不同的呈现效果
    • 在屏幕顶部显示一块横幅
    • 在屏幕中间弹出一个UIAlertView
    • 在锁屏界面显示一块横幅(锁屏状态下,显示具体内容)
    • 更新app图标的数字
    • 播放音效

推送通知的呈现效果总结

推送通知是可见的(能用肉眼看到)

推送通知的呈现效果设置

图片 5推送通知的呈现效果设置.png

  • 推送通知有5种不同的呈现效果
    1、在屏幕顶部显示一块横幅(显示具体内容)
    2、在屏幕中间弹出一个UIAlertView(显示具体内容)
    3、在锁屏界面显示一块横幅(锁屏状态下,显示具体内容)
    4、更新app图标的数字(说明新内容的数量)
    5、播放音效(提醒作用)

iOS中提供了2种推送通知

推送通知的使用细节

  • 发出推送通知时,如果当前程序正运行在前台,那么推送通知就不会被呈现出来
  • 点击推送通知后,默认会自动打开发出推送通知的app
  • 不管app打开还是关闭,推送通知都能如期发出
  • 什么是本地推送通知
    • 顾名思义,就是不需要联网就能发出的推送通知(不需要服务器的支持)
  • 本地推送通知的使用场景
    • 常用来定时提醒用户完成一些任务,比如
    • 清理垃圾、记账、买衣服、看电影、玩游戏

推送通知的呈现效果设置

•显示横幅还是UIAlertView,取决于用户的设置

图片 6

图片 7

本地推送通知(Local Notification)

2.1-如何发出本地推送通知

  • 创建本地推送通知对象UILocalNotification *ln = [[UILocalNotification alloc] init];
  • 设置本地推送通知属性
  • 推送通知的触发时间@property(nonatomic,copy) NSDate *fireDate;

  • 推送通知的具体内容@property(nonatomic,copy) NSString *alertBody;

  • 在锁屏时显示的动作标题(完整标题:“滑动来” + alertAction)@property(nonatomic,copy) NSString *alertAction;

  • 音效文件名@property(nonatomic,copy) NSString *soundName;

  • app图标数字@property(nonatomic) NSInteger applicationIconBadgeNumber;

  • 调度本地推送通知(调度完毕后,推送通知会在特地时间fireDate发出)[[UIApplication sharedApplication] scheduleLocalNotification:ln];

  • 获得被调度的所有本地推送通知@property(nonatomic,copy) NSArray *scheduledLocalNotifications;(已经发出且过期的推送通知就算调度结束,会自动从这个数组中移除)

  • 取消调度本地推送通知-cancelLocalNotification:(UILocalNotification *)notification;-cancelAllLocalNotifications;

  • 立即发出本地推送通知-presentLocalNotificationNow:(UILocalNotification *)notification;

推送通知的使用细节

•发出推送通知时,如果当前程序正运行在前台,那么推送通知就不会被呈现出来
•点击推送通知后,默认会自动打开发出推送通知的app
•不管app打开还是关闭,推送通知都能如期发出

远程推送通知(Remote Notification)

2.2-本地推送通知的其他属性

  • 每隔多久重复发一次推送通知@property(nonatomic) NSCalendarUnit repeatInterval;

  • 点击推送通知打开app时显示的启动图片@property(nonatomic,copy) NSString *alertLaunchImage;

  • 附加的额外信息@property(nonatomic,copy) NSDictionary *userInfo;

  • 时区@property(nonatomic,copy) NSTimeZone *timeZone;(一般设置为[NSTimeZone defaultTimeZone],跟随手机的时区)

本地推送通知

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

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

    • 常用来定时提醒用户完成一些任务,比如
      清理垃圾、记账、买衣服、看电影、玩游戏

推送通知的呈现效果总结

2.3-点击本地推送通知

  • 当用户点击本地推送通知,会自动打开app,这里有2种情况

    • app并没有关闭,一直隐藏在后台

      • 让app进入前台,并会调用AppDelegate的下面方法(并非重新启动app)-application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification;
    • app已经被关闭

      • 启动app,启动完毕会调用AppDelegate的下面方法-application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
        • launchOptions参数通过UIApplicationLaunchOptionsLocalNotificationKey取出本地推送通知对象

如何发出本地推送通知

  • 创建本地推送通知对象
    UILocalNotification *ln = [[UILocalNotificationalloc] init];

  • 设置本地推送通知属性

    • 推送通知的触发时间(何时发出推送通知)
      @property(nonatomic,copy) NSDate*fireDate;
    • 推送通知的具体内容
      @property(nonatomic,copy) NSString*alertBody;
    • 在锁屏时显示的动作标题(完整标题:“滑动来”+ alertAction)
      @property(nonatomic,copy) NSString*alertAction;
    • 音效文件名
      @property(nonatomic,copy) NSString*soundName;
    • app图标数字
      @property(nonatomic) NSIntegerapplicationIconBadgeNumber;
  • 调度本地推送通知(调度完毕后,推送通知会在特地时间fireDate发出)
    [[UIApplicationsharedApplication] scheduleLocalNotification:ln];

  • 获得被调度(定制)的所有本地推送通知
    @property(nonatomic,copy) NSArray*scheduledLocalNotifications;
    (已经发出且过期的推送通知就算调度结束,会自动从这个数组中移除)

  • 取消调度本地推送通知
    -(void)cancelLocalNotification:(UILocalNotification*)notification;
    -(void)cancelAllLocalNotifications;

  • 立即发出本地推送通知
    -(void)presentLocalNotificationNow:(UILocalNotification*)notification;

  • 本地推送通知的其他属性

    • 每隔多久重复发一次推送通知
      @property(nonatomic) NSCalendarUnitrepeatInterval;
    • 点击推送通知打开app时显示的启动图片
      @property(nonatomic,copy) NSString*alertLaunchImage;
    • 附加的额外信息
      @property(nonatomic,copy) NSDictionary*userInfo;
    • 时区
      @property(nonatomic,copy) NSTimeZone*timeZone;
      (一般设置为[NSTimeZonedefaultTimeZone] ,跟随手机的时区)
  • 点击本地推送通知
    当用户点击本地推送通知,会自动打开app,这里有2种情况

    • app并没有关闭,一直隐藏在后台
      让app进入前台,并会调用AppDelegate的下面方法(并非重新启动app)
      -(void)application:(UIApplication)application didReceiveLocalNotification:(UILocalNotification)notification;
    • app已经被关闭(进程已死)
      启动app,启动完毕会调用AppDelegate的下面方法
      -(BOOL)application:(UIApplication)application didFinishLaunchingWithOptions:(NSDictionary)launchOptions;
      launchOptions参数通过UIApplicationLaunchOptionsLocalNotificationKey取出本地推送通知对象

iOS 8.0的变化

  • 在iOS 8.0中,如果要使用本地通知,需要得到用户的许可
  • 在didFinishLaunchingWithOptions方法中添加如下代码:
    UIUserNotificationSettings*settings = [UIUserNotificationSettingssettingsForTypes:UIUserNotificationTypeBadge| UIUserNotificationTypeSound| UIUserNotificationTypeAlertcategories:nil];
    [application registerUserNotificationSettings:settings];

总结一下,推送通知有5种不同的呈现效果

2.4-iOS8.0的变化

  • 在iOS 8.0中,如果要使用本地通知,需要得到用户的许可在didFinishLaunchingWithOptions方法中添加如下代码:
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert categories:nil];[application registerUserNotificationSettings:settings];

远程推送通知

  • 什么是远程推送通知
    顾名思义,就是从远程服务器推送给客户端的通知(需要联网)
    远程推送服务,又称为APNs(Apple Push Notification Services)

    • 为什么需要远程推送通知?
      传统获取数据的局限性
      只要用户关闭了app,就无法跟app的服务器沟通,无法从服务器上获得最新的数据内容

    • 远程推送通知可以解决以上问题
      不管用户打开还是关闭app,只要联网了,都能接收到服务器推送的远程通知

  • 远程推送通知使用须知
    所有的苹果设备,在联网状态下,都会与苹果的服务器建立长连接

    • 什么是长连接
      只要联网了,就一直建立连接

    • 长连接的作用
      时间校准
      系统升级
      查找我的iPhone
      .....

    • 长连接的好处
      数据传输速度快
      数据保持最新状态

  • 远程推送通知的作用

![](https://upload-images.jianshu.io/upload_images/2229471-cec5d150a7c6e616.png)
  • 获得deviceToken的过程
![](https://upload-images.jianshu.io/upload_images/2229471-b6b680302ee7c3f6.png)

图片 8

  • 从获得 deviceToken 到 推送消息给设备 的过程
![](https://upload-images.jianshu.io/upload_images/2229471-465254d37c76ff35.png)

一.开发iOS程序的推送功能, iOS端需要做的事
1.请求苹果获得deviceToken
2.得到苹果返回的deviceToken
3.发送deviceToken给公司的服务器
4.收到远程推送通知后的处理

二.调试iOS的远程推送功能, 必备条件:
1、真机
2、调试推送需要的证书文件
1> ios_development.cer : 让电脑具备真机调试的能力(调试设备)
2> aps_development.cer : 某台电脑就能调试某个app的推送服务
3> itcast.mobileprovision : 某台电脑就能利用某台设备调试某个程序

三.发布具有推送服务的app
1> ios_distribution.cer : 让电脑具备发布程序的能力
2> aps_production.cer : 如果发布的程序中包含了推送服务,就必须安装这个证书
3> itcast.mobileprovision : 某台电脑就能发布某个程序

  • 证书配置01 – 创建App ID
![](https://upload-images.jianshu.io/upload_images/2229471-2bb13d6e46c1d278.png)
  • 证书配置02 – 为App ID创建APNs SSL证书
![](https://upload-images.jianshu.io/upload_images/2229471-6990926b0bc6df29.png)

图片 9

图片 10

图片 11

图片 12

  • 注册远程推送通知
    • 客户端如果想接收APNs的远程推送通知,必须先注册(得到用户的授权)
    • 一般在App启动完毕后就马上注册
-(BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {

    // 注册远程通知
    UIRemoteNotificationTypetype = UIRemoteNotificationTypeAlert| UIRemoteNotificationTypeBadge| UIRemoteNotificationTypeSound;
    [application registerForRemoteNotificationTypes:type];

    returnYES;
}
  • 如果是第一次注册,会弹出右边的对话框

图片 13

  • 注册成功后会调用AppDelegate的下面方法,得到设备的deviceToken
- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken {
    NSLog(@"%@", deviceToken);
}
  • 点击远程推送通知
    当用户点击远程推送通知,会自动打开app,这里有2种情况
    • app并没有关闭,一直隐藏在后台
      让app进入前台,并会调用AppDelegate的下面方法(并非重新启动app)
      -(void)application:(UIApplication)application didReceiveRemoteNotification:(NSDictionary)userInfo;
    • app已经被关闭(进程已死)
      启动app,启动完毕会调用AppDelegate的下面方法
      -(BOOL)application:(UIApplication)application didFinishLaunchingWithOptions:(NSDictionary)launchOptions;
      launchOptions参数通过UIApplicationLaunchOptionsRemoteNotificationKey取出服务器返回的字典内容

图片 14

图片 15

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

3.1-什么是远程推送通知

  • 顾名思义,就是从远程服务器推送给客户端的通知
  • 远程推送服务,又称为APNs(Apple Push Notification Services)
  • 为什么需要远程推送通知?
    • 传统获取数据的局限性
    • 只要用户关闭了app,就无法跟app的服务器沟通,无法从服务器上获得最新的数据内容
    • 远程推送通知可以解决以上问题
    • 不管用户打开还是关闭app,只要联网了,都能接收到服务器推送的远程通知

PushMeBaby

  • PushMeBaby是一款用来测试ANPs的开源Mac项目
    它充当了服务器的作用,用法非常简单
    它负责将内容提交给苹果的APNs服务器,苹果的APNs服务器再将内容推送给用户的设备
![](https://upload-images.jianshu.io/upload_images/2229471-439bd1e2cc37abeb.png)

PushMeBaby的主页
phttps://github.com/stefanhafeneger/PushMeBaby

  • PushMeBaby的使用步骤
    • 注释掉不要的错误
    ![](https://upload-images.jianshu.io/upload_images/2229471-d055923c7075bee8.png)

-   填写必要信息  
    pdeviceToken:用于找到设备的令牌  
    ppayload:推送的内容



    ![](https://upload-images.jianshu.io/upload_images/2229471-0f093f48658d8504.png)

-   将推送的调试证书改为名apns.cer,添加到PushMeBaby项目中



    ![](https://upload-images.jianshu.io/upload_images/2229471-9dc784d21557cae1.png)

-   command + R启动程序,然后点击Push

-   接下来就可以在设备上接收到远程推送通知



    ![](https://upload-images.jianshu.io/upload_images/2229471-be5771922534e857.png)

图片 16

图片 17

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

3.2-远程推送通知使用须知

  • 所有的苹果设备,在联网状态下,都会与苹果的服务器建立长连接

  • 什么是长连接

    • 只要联网了,就一直建立连接
  • 长连接的作用

    • 时间校准
    • 系统升级
    • 查找我的iPhone
    • .....
  • 长连接的好处

    • 数据传输速度快
    • 数据保持最新状态

JPush

  • 什么是JPush
    一套远程推送解决方案,支持android和iOS两个平台
    它能够快捷地为iOS App增加推送功能,减少集成APNs需要的工作量、开发复杂度

  • 更多的信息,可以参考JPush官方网站:https://www.jpush.cn

  • 集成iOS SDK的步骤可以参考

phttp://docs.jpush.cn/pages/viewpage.action?pageId=2621727

图片 18

  • JPush的集成步骤

    • 注册帐号,创建应用
    ![](https://upload-images.jianshu.io/upload_images/2229471-80d50d35265c263e.png)

-   填写iOSApp的必要信息



    ![](https://upload-images.jianshu.io/upload_images/2229471-11962f3151dc29a7.png)

-   iOS开发证书和iOS生产证书必须是p12格式的交换证书



    ![](https://upload-images.jianshu.io/upload_images/2229471-d431ea317e580077.png)
  • 利用JPush发送通知

    • JPush会自动记录和管理所有安装过此app的设备deviceToken

    • 利用JPush,可以轻易地给所有设备发送远程推送通知

    ![](https://upload-images.jianshu.io/upload_images/2229471-b2634d7c4446fb05.png)

在锁屏界面显示一块横幅(锁屏状态下,显示具体内容)

3.3-获得deviceToken的过程

图片 19获得deviceToken的过程.png图片 20获得deviceToken的过程.png图片 21从获得deviceToken 到 推送消息给设备 的过程.png图片 22全过程详细图.png

更新app图标的数字(说明新内容的数量)

3.3-开发iOS程序的推送功能

播放音效(提醒作用)

一. iOS端需要做的事
  • 1.注册苹果获得deviceToken
  • 2.得到苹果返回的deviceToken
  • 3.发送deviceToken给公司的服务器
  • 4.监听用户对通知的点击

推送通知的使用细节

二.调试iOS的远程推送功能, 必备条件:
  • 1.真机
  • 2.调试推送需要的证书文件
    • 1>aps_development.cer: 某台电脑就能调试某个app的推送服务
    • 2> iphone5_qq.mobileprovision: 某台电脑就能利用某台设备调试某个程序

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

三.发布具有推送服务的app
  • 1>aps_production.cer: 如果发布的程序中包含了推送服务,就必须安装这个证书
  • 2> qq.mobileprovision : 某台电脑就能发布某个程序

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

四.注册远程推送通知

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

注册远程推送通知
  • 客户端如果想接收APNs的远程推送通知,必须先注册
// 一般在App启动完毕后就马上注册- application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ //注册远程通知 UIRemoteNotificationType type = UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound; [application registerForRemoteNotificationTypes:type]; return YES;}
  • 如果是第一次注册,会弹出右边的对话框

    图片 23对话框.png

  • 注册成功后会调用AppDelegate的下面方法,得到设备的deviceToken
-application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken deviceToken{ NSLog(@"%@", deviceToken);}
  • 当用户点击远程推送通知,会自动打开app,这里有2种情况

    • app并没有关闭,一直隐藏在后台让app进入前台,并会调用AppDelegate的下面方法(并非重新启动app)-application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo;

    • app已经被关闭启动app,启动完毕会调用AppDelegate的下面方法-application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;``// launchOptions参数通过UIApplicationLaunchOptionsRemoteNotificationKey取出服务器返回的字典内容

图片 24创建App ID.png图片 25为App ID创建APNs SSL证书1.png图片 26为App ID创建APNs SSL证书2.png图片 27为App ID创建APNs SSL证书3.png图片 28生成描述文件.png图片 29安装.png

  • 远程推送应用配置过程

1.创建支持远程推送功能的App ID2.创建调试证书,并选中刚刚创建的App ID3.下载CER文件,并导入钥匙串管理4.创建发布证书,并选中刚刚创建的App ID5.下载CER文件,并导入钥匙串管理6.检查App ID,确认证书已经指定7.生成描述文件

格式:{"aps":{"alert":"This is some fancy message.","badge":1,"sound":"default"}}

  • 远程推送应用程序开发过程

    1.新建应用程序2.指定AppID,在developer.apple.com上设置的AppID

if(系统版本 >= 8.0){ // 注册接收通知的类型 UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil]; [application registerUserNotificationSettings:settings]; // 注册允许接收远程推送通知 [application registerForRemoteNotifications];}else{ // 如果是iOS7.0,使用以下方法注册 [application registerForRemoteNotificationTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound];}// 当得到苹果的APNs服务器返回的DeviceToken就会被调用// 7040f7d5 5a974598 c5cf31b5 3e340b39 68affd25 122f0ce1 3f315226 396c2e5b- application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:deviceToken { NSLog(@"deviceToken是:%@", deviceToken);}// 接收到远程通知,触发方法和本地通知一致- application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { NSLog(@"%@", userInfo);}
  • 使用后台的远程消息推送

1- 在Capabilities中打开远程推送通知2- 实现代理方法

远程消息数据格式: {"aps" : {"content-available" : 1},"content-id" : 42}

/*********** * 当接收到远程通知时调用(iOS7.0之后使用) * * 当前在前台时; 或者app在后台\app被彻底退出状态下,点击通知打开app进入前台; 都可以执行以下方法 * * * 执行completionHandler 作用 * * 1> 系统会估量App消耗的电量,并根据传递的UIBackgroundFetchResult 参数记录新数据是否可用 * 2> 调用完成的处理代码时,应用的界面缩略图会自动更新 * * 如果想要接收到通知后,不要用户点击通知, 就执行以下代码, 那么必须有三个要求: 1> 必须勾选后台模式Remote Notification ; 2> 告诉系统是否有新的内容更新 3> 设置发送通知的格式("content-available":"随便传") 注意:接收到远程通知到执行完网络请求之间的时间不能超过30秒***********/- application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^ (UIBackgroundFetchResult))completionHandler{ if  { int contentId = [userInfo[@"content-id"] intValue]; ViewController *vc = (ViewController *)application.keyWindow.rootViewController; [vc loadDataWithContentID:contentId completion:^(NSArray *dataList) { vc.dataList = dataList; NSLog(@"刷新数据结束"); completionHandler(UIBackgroundFetchResultNewData); }]; } else { completionHandler(UIBackgroundFetchResultNoData); }
  1. 远程推送测试

     > PushMeBaby 1. 编译会出现错误, 直接把错误行注释即可; 2. 需要填写对应的deviceToken; 3. 需要将推送测试证书改名为aps.cer 拖入项目中;
    
  2. 第三方推送极光推送个推信鸽

具体集成步骤以及使用方法, 请查看对应的官方文档, 非常详细;第三方服务合集:

如有不足之处,欢迎指出,谢谢

本地推送通知

什么是本地推送通知

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

本地推送通知的使用场景

常用来定时提醒用户完成一些任务,比如

清理垃圾、记账、买衣服、看电影、玩游戏

如何发出本地推送通知

创建本地推送通知对象

UILocalNotification*ln = [[UILocalNotificationalloc]init];

设置本地推送通知属性

推送通知的触发时间(何时发出推送通知)

@property(nonatomic,copy)NSDate*fireDate;

推送通知的具体内容

@property(nonatomic,copy)NSString*alertBody;

在锁屏时显示的动作标题(完整标题:“滑动来”+ alertAction)

@property(nonatomic,copy)NSString*alertAction;

音效文件名

@property(nonatomic,copy)NSString*soundName;

app图标数字

@property(nonatomic)NSIntegerapplicationIconBadgeNumber;

如何发出本地推送通知

调度本地推送通知(调度完毕后,推送通知会在特地时间fireDate发出)

[[UIApplicationsharedApplication]scheduleLocalNotification:ln];

获得被调度(定制)的所有本地推送通知

@property(nonatomic,copy)NSArray*scheduledLocalNotifications;

(已经发出且过期的推送通知就算调度结束,会自动从这个数组中移除)

取消调度本地推送通知

- (void)cancelLocalNotification:(UILocalNotification*)notification;

- (void)cancelAllLocalNotifications;

立即发出本地推送通知

- (void)presentLocalNotificationNow:(UILocalNotification*)notification;

本地推送通知的其他属性

每隔多久重复发一次推送通知

@property(nonatomic)NSCalendarUnitrepeatInterval;

点击推送通知打开app时显示的启动图片

@property(nonatomic,copy)NSString*alertLaunchImage;

附加的额外信息

@property(nonatomic,copy)NSDictionary*userInfo;

时区

@property(nonatomic,copy)NSTimeZone*timeZone;

(一般设置为[NSTimeZonedefaultTimeZone],跟随手机的时区)

点击本地推送通知

当用户点击本地推送通知,会自动打开app,这里有2种情况

app并没有关闭,一直隐藏在后台

让app进入前台,并会调用AppDelegate的下面方法(并非重新启动app)

- (void)application:(UIApplication*)application didReceiveLocalNotification:(UILocalNotification*)notification;

app已经被关闭(进程已死)

启动app,启动完毕会调用AppDelegate的下面方法

- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions;

launchOptions参数通过UIApplicationLaunchOptionsLocalNotificationKey取出本地推送通知对象

远程推送通知(难)

什么是远程推送通知

顾名思义,就是从远程服务器推送给客户端的通知(需要联网)

远程推送服务,又称为APNs(Apple Push Notification Services)

为什么需要远程推送通知?

传统获取数据的局限性

只要用户关闭了app,就无法跟app的服务器沟通,无法从服务器上获得最新的数据内容

远程推送通知可以解决以上问题

不管用户打开还是关闭app,只要联网了,都能接收到服务器推送的远程通知

远程推送通知使用须知

所有的苹果设备,在联网状态下,都会与苹果的服务器建立长连接

什么是长连接

只要联网了,就一直建立连接

长连接的作用

时间校准

系统升级

查找我的iPhone

.. ...

长连接的好处

数据传输速度快

数据保持最新状态

一.开发iOS程序的推送功能, iOS端需要做的事

1.请求苹果获得deviceToken

2.得到苹果返回的deviceToken

3.发送deviceToken给公司的服务器

4.监听用户对通知的点击

二.调试iOS的远程推送功能,必备条件:

1.真机

2.调试推送需要的证书文件

1>aps_development.cer:某台电脑就能调试某个app的推送服务

2>ios_development.cer:让电脑具备真机调试的能力(调试设备)

3>iphone5_qq.mobileprovision:某台电脑就能利用某台设备调试某个程序

三.发布具有推送服务的app

1>aps_production.cer:如果发布的程序中包含了推送服务,就必须安装此证书

2>ios_distribution.cer:让电脑具备发布程序的能力

3>qq.mobileprovision:某台电脑就能发布某个程序

注册远程推送通知

注册成功后会调用AppDelegate的下面方法,得到设备的deviceToken

- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken

{

NSLog(@"%@", deviceToken);

}

点击远程推送通知

当用户点击远程推送通知,会自动打开app,这里有2种情况

app并没有关闭,一直隐藏在后台

让app进入前台,并会调用AppDelegate的下面方法(并非重新启动app)

- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo;

app已经被关闭(进程已死)

启动app,启动完毕会调用AppDelegate的下面方法

- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions;

launchOptions参数通过UIApplicationLaunchOptionsRemoteNotificationKey取出服务器返回的字典内容

JPush

什么是JPush

一套远程推送解决方案,支持android和iOS两个平台

它能够快捷地为iOS App增加推送功能,减少集成APNs需要的工作量、开发复杂度

更多的信息

一.推送通知

1.什么是推送通知?

>首先明确:**此处的推送通知跟我们的”NSNotification”没有半毛钱关系

>可以理解为:向用户推送一条信息来通知用户某件事情

>作用:可以在APP退到后台,或者关闭时;继续推送一条消息告诉用户某件事情

2.推送通知的应用场景?

(1)一些任务管理APP,会在任务时间即将到达时,通知你做该任务;

(2)健身App定时提醒你应该健身了;

(3)买过电影票后,提前半小时告诉你,电影即将开场;

(4)当你QQ或者微信收到消息时,即使退到后台,或者关闭APP,也可以收到信息通知告诉我们;

TAG标签:
版权声明:本文由必威发布于必威-编程,转载请注明出处:推送通知的呈现效果总结,推送通知的呈现效果