iOS开发笔记--App 推送

一直对推送不是很了解,所以想借项目间隙了解一下推送的相关知识。没有目标的学习是低效率的搜索,这次学习的目标是充分理解App推送的发送机制,Token的生成与什么相关,如何生成?推送的消息是后台自定义的吗?应用程序在前台,后台,退出情况下,收到推送的展示形式,以及点击icon和点击推送中心进入App会具体走哪些API?具体注册推送的代码怎么写?

iOS 推送全解析,你不可不知的所有 Tips!,参考文章pikacode的关于推送的文章,专注推送研究的一个大神,解决了我上面的困惑,写下这篇是为了记录学习,目前只是前人栽树,我乘凉,希望以后我也能慢慢的加入自己深入学习和实践之后的知识。

1.推送准备

  • 需要创建推送证书,分为APNs Development iOS,APNs Distribution iOS,分别对应测试环境的推送和正式环境的推送。

2. 苹果推送机制,以及推送Token由什么唯一标识

  • 在第一次运行注册推送的代码的时候会弹出询问用户是否允许推送的弹框,当用户点击允许按钮时,iOS系统将App包+设备的唯一标识符+证书发送给APNs,然后APNs返回一个由设备和App组成的唯一标识Token,当后台服务器需要发送推送消息的时候就将Token和消息传送给APNs,最后由APNs将消息分发到相应用户手机上,以横幅,消息中心,角标,声音的形式展示给用户;
  • Token:由APNs通过iOS系统发送的App包+设备的唯一标识符+证书 生成的与App和设备唯一相关的唯一标识符;
  • Token的有效期:暂时不知道。
  • 推送的消息:消息是由后台定义的,但是具体发送是由APNs下发的。

3.用户在不同状态下收到推送点击进入会走的方法。

七鱼消息推送验证结果

  • 应用在后台:

    • 点击icon进入,不走任何代码;
    • 点击横幅通知进入,
    -(void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)(void))completionHandle
    
  • 应用退出:

    • 点击icon进入,
    1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions//launchOptions为null
    2. - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
    
    • 点击通知横幅进入
     1. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions API,并且launchOptions传有通知的内容
     2. - (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)(void))completionHandle
     3. - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
    

总结:无论是在后台还是退出应用,点击icon进入程序,无法获得推送的内容。点击消息横幅进入程序,在iOS10.0以后,点击都会走didReceiveNotificationResponse:方法,并且可以获取到消息内容。

4. 推送的分类

  • 推送通知分为本地和远程通知
  • 本地通知:可以指定推送时间,在该时间准时弹出推送通知。
  • 远程通知,分为 普通推送/后台推送/静默推送 3 种类型。

5. 具体实现推送注册的代码

  • iOS本地推送与远程推送详解参照这个即可,讲解很详细。

你可能感兴趣的:(iOS开发笔记--App 推送)