objective-c - 如何向特定设备发送推送通知

标签 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或设备 token ?

非常感谢!

最佳答案

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

注意事项:

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

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

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

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

回到“流式”推送通知的概念 - 您应该真正研究如何使用基本 PHP 脚本一次发送多个通知(我用 PHP 编写了一个不到 100 行代码的整个服务器,因此使用基于类的 PHP 可以非常简单)。

代码:

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

关于objective-c - 如何向特定设备发送推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12162650/

相关文章:

iphone - Cocos2d:CCLabelTTF调用函数?

iPhone UITableView 在顶部添加内容无需滚动

objective-c - MIDI : cross-fade via channel volume message?

ios - 此类与键 [Tableview 错误] 的键值编码不兼容

ios - UITextView:如何真正禁用编辑?

c++ - NSString & unichar 常量去重

ios - 尝试向 View 添加 subview ,但 subview 未显示

iphone - 是否有API调用可为您提供iPhone用户的“我的信息”联系人数据库记录?

iphone - 如何在ios中使图像的某些部分可点击?

ios - UIBezierPath 未绘制平滑曲线