如何将推送通知发送到特定设备

时间:2012-08-28 15:31:33

标签: objective-c ios5

我已将这篇文章读到:

Apple Push Notifications to specific Users

我需要将推送发送到特定设备,但我的问题是登录到我的应用程序的用户是由生成的UDID标识的,而不是使用已弃用的UIDevice。我看到easyAPNS将这些值存储到MySQL中:

CREATE TABLE `apns_device_history` (
2
  `pid` int(9) unsigned NOT NULL auto_increment,
3
  `appname` varchar(255) NOT NULL,
4
  `appversion` varchar(25) default NULL,
5
  `deviceuid` char(40) NOT NULL,
6
  `devicetoken` char(64) NOT NULL,
7
  `devicename` varchar(255) NOT NULL,
8
  `devicemodel` varchar(100) NOT NULL,
9
  `deviceversion` varchar(25) NOT NULL,

我不知道如何将注册的应用用户链接到此表,以实现向特定用户发送推送。是否可以通过代码用户pid或设备令牌获取?

非常感谢!

1 个答案:

答案 0 :(得分:3)

开发任何级别的APNS都是一项艰巨的任务,除非您对服务器端和客户端方面的内容有很多了解。

要记住的事情:

  1. 服务器端必须考虑到设备标识符(令牌)在更新或恢复设备时会在每台设备上发生变化 - 甚至可以获得新设备!
  2. 客户端必须考虑必须在App Delegate中实现的委托方法,以正确接受和处理这些推送通知,并开始启动它们。 (例子如下)。
  3. 如果您没有设置正确的“反馈”服务,服务器必须再次意识到您可以将推送通知证书列入黑名单。这样做是检查该标识符是否存在,如果没有,则将其从数据库中取出,这样您就不会再继续尝试向该用户发送推送通知。
  4. 在服务器上,您可以一次发送一个通知(每个通知之间有时间),也可以将它们排成大量并“流式”传输这些通知。实际上你必须遵循这个或者你可能会被黑名单,并且无法再次向你的用户发送推送通知。
  5. 在开始创建任何类型的推送通知服务器之前,确实需要了解这4点。

    id (int)
    token (int - 32 length)
    dateChanged (dateTime)
    

    三个列出的字段实际上是基本推送通知服务器所需的全部内容。数据库中的个人标识,设备条目的标记,以便您知道谁将收到推送消息,而dateChanged是可选的,但很高兴知道您在数据库中有多长时间。

    回到“流式”推送通知的概念 - 你应该真正研究如何使用基本的PHP脚本一次发送多个通知(我已经在PHP中完成了一个包含少于100行代码的整个服务器,所以基于类的PHP可以很简单。

    <强> CODE:

    不幸的是,它需要占用大量空间来放置基本推送服务所需的所有代码,但我强烈建议您查看我上面提到的要点以及下面列出的这项任务的一些非常棒的教程: