美文网首页
第十四章、消息相关

第十四章、消息相关

作者: Evans_Xiao | 来源:发表于2019-08-09 22:00 被阅读0次

    说一下远程推送的流程。苹果怎么知道远程推送给哪台设备?又如何知道推送给哪个应用?

    iOS远程推送通过APNs实现。APNsApple Push Notification service的简称,它由Apple独家提供。远程推送的服务的实现依据的是服务器和客户端的长连接,信息通过服务器主动推送(push)给客户端(我们的手机)。

    iOS的远程推送需要在真机上调试。使用SmartPush调试。

    • 详细流程:(以今日头条为例)

    1、在今日头条App的AppDelegate的didFinishLaunchingWithOptions方法中注册远程推送通知,此时只要iOS设备正常联网能够访问到外网,iOS设备默认就会和APNs建立长连接,就会把iOS设备的UDID(Unique Device Identifier:唯一设备标识码,用来标识唯一一台苹果设备)和今日头条的Bundle Identifier通过长连接发送给APNs服务器,然后苹果通过这两个的值根据一定的加密算法得出deviceToken,并将deviceToken返回给iOS设备。(注:APNs服务器会留有UDID+Bundle Identifier+deviceToken的映射表)
    2、实现UIApplicationDelegate代理中的有关于注册远程通知的相关方法,包括注册成功、注册失败、对接收到通知的处理等。
    3、如果注册成功,实现注册成功的代理方法,就能够接收到deviceToken,并将deviceToken发送给今日头条服务器,今日头条服务器将此deviceToken存储在数据库中(一般如果是及时通讯类应用那么还会与用户的账号进行映射)。
    4、如果注册失败,那么实现注册失败的协议方法,处理失败后的事情(包括发送给今日头条服务器注册失败等)。
    5、今日头条服务器接收到deviceToken之后,就可以根据这些deviceToken向APNs发送推送一条新闻简要消息。
    6、APNs接收到deviceToken和新闻简要消息之后,根据deviceToken查找映射表找到对应的UDIDBundle Identifier,根据UDID找到唯一一台苹果设备,再在找到的苹果设备上根据Bundle Identifier找到唯一的应用(此处为今日头条),然后推送消息。
    7、当设备接收到消息的时候,如果今日头条在前台也就是用户正在使用今日头条,那么不会在设备上方弹出横幅(如果使用了音效,还会触发音效的播放),直接调用我们实现的UIApplicationDelegate中的接收消息的方法。反之如果今日头条在后台或者未运行时就会在设备的上方弹出横幅(如果使用了音效,还会触发音效的播放),点击横幅才会触发调用我们实现的UIApplicationDelegate中的接收消息的方法,这个时候你直接点击应用图标进来是不会调用的。

    相关文章

      网友评论

          本文标题:第十四章、消息相关

          本文链接:https://www.haomeiwen.com/subject/navkjctx.html