史上最全的推送

来源:互联网 发布:游戏编程常用算法 编辑:程序博客网 时间:2024/06/05 11:03

史上最全的推送简介

推送的原理

长连接的作用:

  1. 时间校准
  2. 系统升级
  3. 查找我的iPhone

长连接的好处:

  1. 数据的传输速度快
  2. 互数据保持最新的状态

推送通知使用须知

  • 所有的苹果设备, 在联网状态下, 都会与苹果的服务器建立长连接
  • 推送的过程
    • 把自己手机的deviceToken发给服务器
      1. 只要我想获取deviceToken, app就会自己把UDID和Apple ID发给APNs, APNs利用算法, 生成deviceToken.
      2. APNs把deviceToken传给手机, 手机再传给自己的服务器.
      3. 每次都要更新deviceToken发给服务器(服务器判断和上次不一致, 就会进行更新)
        1. 这样就会导致服务器的压力非常大, 因此推送借助JPush完成
    • 服务器把 deviceToken和要推送的内容给 APNs
    • APNs 把这个消息 推送给手机


每次都要更新deviceToken发给服务器(服务器判断和上次不一致, 就会进行更新),这样就会导致服务器的压力非常大, 因此推送借助JPush完成

推送必备条件

  1. 在哪个应用做推送
  2. 给哪个手机做推送 (可以在手机调试, 现在已经不需要证书了)
  3. 在哪台设备上调试推送服务 (下载推送的证书, 生成证书的时候Bundle ID 要和xcode里面的一模一样, 否则推送会失败))
  4. 我们把证书下载好之后给服务器人员

推送过程

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    // 注册远程通知 (第一次注册服务的时候会弹出提醒框, 让用户授权)    // 只要是调用了这句代码, 注册了推送, 他内部就会给APNs服务器发请求, APNs会自动计算deviceTocken    // 计算完成之后, 会通过application:didRegisterForRemoteNotificationsWithDeviceToken这个代理给app    [application registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert];    // 程序关闭, 推送过来之后, 打开就要处理    NSDictionary *dict = launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey];    return YES;}// 获取设备的deviceTocken-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {    NSLog(@"注册远程推送成功: %@", deviceToken);    // deviceToken发给公司的服务器//    [JPUSHService handleRemoteNotification:userInfo];}// 接收到远程推送通知就会调用- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {}

集成极光推送


拷贝代码


参考博客: http://blog.csdn.net/shenjie12345678/article/details/41120637



0 0