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,下次不再发送)。

  • 相关阅读:
    .Net开发中IIS启动后,网站不能访问。0x80004005 无法执行程序。所执行的命令为 .....问题
    .Net开发中项目无法引用/项目引用失败/引用文件出现黄色警告图标,并生成失败的问题
    Mac系统安装Docker
    小程序开发----微信小程序实现下拉刷新功能
    小程序开发----微信小程序navigate跳转没反应
    小程序开发----小程序点击复制文本内容到剪贴板
    小程序开发----微信小程序直接写 设置空格无效
    python字符串的反转
    python2项目迁移到python3
    robotframework废弃的关键词以及替代的关键词(关键词找不到,可能已经过期了)
  • 原文地址:https://www.cnblogs.com/fkunlam/p/4387118.html
Copyright © 2011-2022 走看看