zoukankan      html  css  js  c++  java
  • 本地推送和远程推送

    1.本地推送

    本地通知是有本地应用触发的,它是基于时间行为的一种通知形式,例如闹钟定时、代办事项提醒,又或者一个应用在一段时间后不使用通常

    会提示用户使用此应用等都是本地通知。创建一个本地通知通常分为以下几个步骤:

      1.创建UILocalNotification。

      2.设置处理通知的时间fireDate。

      3.配置通知的内容:通知主体、通知声音、图表数字等。

      4.配置通知传递的自定义数据参数userInfo(这一步可选)。

      5.调用通知,可以使用scheduleLocalNotification:按计划调度一个通知,也可以使用presentLocalNotificationNow立即调用通知。

    2.远程推送

    和本地推送不同,远程推送通知是由应用服务提供商发起的,通过苹果的APNS(Apple Push Notification Server)发送到应用客户端。

    PushNotification_FlowChart

    远程通知的过程可以分为以下几步:

      1.应用服务提供商从服务器端把要发送的消息和设备令牌(device token)发送给苹果的消息推送服务器APNS。

      2.APNS根据设备令牌在已注册的设备(iPhone、iPad、iTouch、mac等)查找对应的设备,将消息发送给相应的设备。

      3.客户端设备接收到的消息传递给相应的应用程序,应用程序根据用户设置弹出通知消息。

    当然,这只是一个简单的流程,有了这个流程我们还无从下手编写程序,将上面的流程细化可以得到如下流程图,在这个过程中会提到如何在程序中完成这些步骤:

    PushNotification_FlowChartDetail

    1.应用程序注册APNs推送消息。

    说明:

    a.只有注册过的应用才有可能接收到消息,程序中通常通过UIApplication的registerUserNotificationSettings:方法注册,iOS8中通知注册的方法发生了改变,如果是iOS7及之前版本的iOS请参考其他代码。

    b.注册之前有两个前提条件必须准备好:开发配置文件(provisioning profile,也就是.mobileprovision后缀的文件)的App ID不能使用通配ID必须使用指定APP ID并且生成配置文件中选择Push Notifications服务,一般的开发配置文件无法完成注册;应用程序的Bundle Identifier必须和生成配置文件使用的APP ID完全一致。

    2.iOS从APNs接收device token,在应用程序获取device token。

    说明:

    a.在UIApplication的-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken代理方法中获取令牌,此方法发生在注册之后。

    b.如果无法正确获得device token可以在UIApplication的-(void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error代理方法中查看详细错误信息,此方法发生在获取device token失败之后。

    c.必须真机调试,模拟器无法获取device token。

    3.iOS应用将device token发送给应用程序提供商,告诉服务器端当前设备允许接收消息。

    说明:

    a.device token的生成算法只有Apple掌握,为了确保算法发生变化后仍然能够正常接收服务器端发送的通知,每次应用程序启动都重新获得device token(注意:device token的获取不会造成性能问题,苹果官方已经做过优化)。

    b.通常可以创建一个网络连接发送给应用程序提供商的服务器端, 在这个过程中最好将上一次获得的device token存储起来,避免重复发送,一旦发现device token发生了变化最好将原有的device token一块发送给服务器端,服务器端删除原有令牌存储新令牌避免服务器端发送无效消息。

    4.应用程序提供商在服务器端根据前面发送过来的device token组织信息发送给APNs。

    说明:

    a.发送时指定device token和消息内容,并且完全按照苹果官方的消息格式组织消息内容,通常情况下可以借助其他第三方消息推送框架来完成。

    5.APNs根据消息中的device token查找已注册的设备推送消息。

    说明:

    a.正常情况下可以根据device token将消息成功推送到客户端设备中,但是也不排除用户卸载程序的情况,此时推送消息失败,APNs会将这个错误消息通知服务器端以避免资源浪费(服务器端此时可以根据错误删除已经存储的device token,下次不再发送)。

  • 相关阅读:
    VirtualBox设置共享文件夹和镜像访问的方法
    虚拟机文件越来越大解决方案
    linux磁盘清理方法 Linux 下垃圾清理工具 BleachBit
    linux上怎么切换不同版本的arm-linux-gcc?只需改一行函数
    windows桌面添加右键环境
    各种机械键盘轴的差别,究竟什么轴好
    XML是什么,它能够做什么?——写给XML入门者
    MATLAB中导入数据:importdata函数
    理解ThreadLocal
    Leetcode:best_time_to_buy_and_sell_stock_II题解
  • 原文地址:https://www.cnblogs.com/fkunlam/p/4387118.html
Copyright © 2011-2022 走看看