2

我读过这篇文章:

Apple 向特定用户推送通知

我需要将推送发送到特定设备,但我的问题是登录我的应用程序的用户由生成的 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 或设备令牌获取?

非常感谢!

4

1 回答 1

3

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

要记住的事情:

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

在我们开始创建任何类型的推送通知服务器之前,确实需要了解这 4 点。

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

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

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

代码:

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

于 2012-08-28T16:03:04.377 回答