1  push 基本流程原理

   (1)启动 app  
   (2)注册远程通知
   (3)苹果服务器回调一个deviceToken "didRegisterForRemoteNotificationsWithDeviceToken:”
   (4)把该deviceToken传递给我们的服务器/第三方push服务接收deviceToken方法
   (5)当我们需要给用户推送消息的时候,服务器或者第三方就会给把这个用户的deviceToken和推送必要内容发送给苹果都得APNS服务器.然后APNS服务器再将消息推送到该deviceToken对应的这台手机上面.
 
2  deviceToken 认识
 
   "If the user restores backup data to a new device or computer, or reinstalls the operating system, the device token changes"  
    当手机重置刷机生系统,deviceToken会变化 ,开发者生产者证书的切换也会使deviceToken有变化.
    对于1的介绍, 也就是说发送远程push 对手机的识别基于deviceToken.来判断的. 那么 deviceToken是唯一的可用来作为主键的吗?
   个人认为:辩证看这个问题,deviceToken是会变化的,但是推送一定是拿deviceToken来做推送识别的.也就是说deviceToken是作为设备的唯一标示.
那么,这就是为什么注册远程通知的步骤是在启动app时候,每次都注册远程通知,这样即使deviceToken会变化(说明之前的deviceToken失效无法获得推送),或者之前由于网络等各种原因没有注册上都会重新获得deviceToken.
    所以,deviceToken是否变化理应不影响推送.
 
    那么下面两个问题是关键:
    
3  给同一个用户同一个手机推送推送多条推送 问题
    说明 deviceToken变化后,在旧deviceToken还未失效,那么服务端一条一条推送 就推送了多个... 那么当前情况就是应该推送当前用户当前应用一条有效推送,即告诉服务端哪个deviceToken才是有效的.
    这里解决方案是 获取当前设备的UUID + keychain + DeviceToken 来处理该问题.
    使用keychain能够保证用户当前设备不刷机情况,即使用户删掉应用重新安装仍然还能获取到keychain中的UUID,这样 告诉服务端 当前UUID 有效deviceToken 是哪一个即可
 
4  给同一用户 多个硬件端 推送问题
 
    如果有这样的用户 用同一个账号登了好几个硬件, 这个时候 是给几个硬件都发推送????还是只发其中一个??? 感觉有点蒙逼…
    首先要考虑第一点 3 中提到的问题, 其二 需求是只发一台 还是当前用户所有设备都发.
    都发:多台设备 多个UDID 就对应多个deviceToken  就是正常维护每个UDID对应的deviceToken 发送push即可
    如果只发一台:那么 服务端 需要纠结判断一下到底该给当前用户 哪个UDID 所维护最新deviceToken 发送 push呢???
 
    这个我们这里遵守规则维护当前时间戳最新的一条deviceToken的设备 发送push.
 
  推荐工具 : PushMeBaby  
                     noodlewerk/NWPusher 
                    除了使用push第三方外 测试 当前证书 当前测试机 调通 push功能 简单暴力 方便 直接
                    地址:
                    https://github.com/stefanhafeneger/PushMeBaby
                    https://github.com/noodlewerk/NWPusher
 

iOS 关于远程推送(push) 的几个问题的更多相关文章

  1. iOS导出远程推送所需要的P12 或pem文件

    http://www.saitjr.com/ios/ios-export-remote-notification-p12-pem-file.html iOS导出远程推送所需要的P12 或pem文件 h ...

  2. iOS注册远程推送消息证书后提示此证书签发者无效的解决办法

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 我们在编写关于远程推送消息的App时需要注册一个相关的证书,我 ...

  3. iOS APNs远程推送流程精简版

    1.去Apple Developer Center里创建应用的信息,指定APP ID(Bundle ID),配置里开启推送功能(Push Notifications). 后续步骤需要用到这个应用的包名 ...

  4. iOS APNS远程推送(史上最全步骤)

    /*****************************************1************************************************/ waterma ...

  5. ios远程推送和python版push server相关笔记

    今天研究了下ios的远程推送,网上的相关教程很多,做了一遍下来记录一下遇到的问题和注意事项(转载请注明) 1.证书及乱七八糟的配置 公钥:app id管理那儿的“Development Push SS ...

  6. iOS远程推送原理及实现过程

    ➠更多技术干货请戳:听云博客 推送通知,是现在的应用必不可少的功能.那么在 iOS 中,我们是如何实现远程推送的呢?iOS 的远程推送原理又是什么呢?在做 iOS 远程推送时,我们会遇到各种各样的问题 ...

  7. 包教包会:本地推送 & 远程推送

    什么是推送?注意,和我们常用的抽象通知不同(NSNotification): 可以让不在前台运行的app,告知用户app内部发生了什么事情:或者没有运行的app接收到服务器发来的通知..比如离线QQ接 ...

  8. iOS远程推送之友盟Push

    更新记录: 1.2015年10月23日上午10:10分更新,优化了该类,去除了不必要的方法. ----------------------------------------------------- ...

  9. iOS---iOS10适配iOS当前所有系统的远程推送

    一.iOS推送通知简介 众所周知苹果的推送通知从iOS3开始出现, 每一年都会更新一些新的用法. 譬如iOS7出现的Silent remote notifications(远程静默推送), iOS8出 ...

随机推荐

  1. Java 十进制和十六制之间的转化(负数的处理)

    原文: http://www.cnblogs.com/literoad/archive/2013/01/25/2875908.html 在一些情况下,我们需要将数字在十进制和十六制下互相转化. 在Ja ...

  2. hadoop入门博客链接

    http://blog.itpub.net/30066956/cid-175369-list-1/

  3. 2017-5-14 湘潭市赛 Strange Optimization

    Strange Optimization Accepted : Submit : Time Limit : MS Memory Limit : KB Strange Optimization Bobo ...

  4. DOM4J操作XML(包括封装和解析)

    DOM4J操作XML(包括封装和解析) 先来看看dom4j中相应XML的DOM树建立的继承关系 针对于XML标准定义.相应于图2-1列出的内容,dom4j提供了下面实现: 以下给出一个详细事例: pa ...

  5. 微信 oauth 授权3

    3. 请求 2的url会得到 { "access_token": "OezXcEiiBSKSxW0eoylIeAsR0GmYd1awCffdHgb4fhS_KKf2Cot ...

  6. linq to sql 动态构建查询表达式树

    通过Expression类进行动态构造lamda表达式. 实现了以下几种类型,好了代码说话: public Expression<Func<T, bool>> GetAndLa ...

  7. Unity3D学习笔记——NGUI之UISlider

    UISlider:用于创建简单的滑动块和进度条,并且可以添加一个拇指按钮. 效果图如下: 一:使用步骤 1.从上面的效果看出,这个工具由四部分组成:背景图,进度图,进度lable显示,拇指按钮. 2. ...

  8. PRINTDLG 打印对话框操作

    typedef struct tagPD { DWORD lStructSize; HWND hwndOwner; HGLOBAL hDevMode; HGLOBAL hDevNames; HDC h ...

  9. IOS开发之----常用加密方法

    本文转载至 http://blog.csdn.net/wildfireli/article/details/23191983 (AES.MD5.Base64) 分类: iPhone 2014-04-0 ...

  10. IOS7 UI Transition Guide 状态栏 statusbar

    本文转载至 http://blog.csdn.net/linzhiji/article/details/12233387 Redesign Your App for iOS 7 之 页面布局 iOS7 ...