无需用户操作即可发送 ios 推送消息

Posted

技术标签:

【中文标题】无需用户操作即可发送 ios 推送消息【英文标题】:sending ios push message without user action 【发布时间】:2012-01-03 19:36:42 【问题描述】:

我想收集设备属性并使用推送通知将它们发送到 mdm 服务器。

涉及的步骤是:

    使用 mdm 有效负载创建配置文件 获取设备令牌 使用苹果推送通知服务向设备发送通知。 取回设备属性 对公司管理的多个设备执行相同操作

问题:

    用户是否总是需要对消息执行操作,或者我可以在无需用户操作的情况下将消息发送到设备并完成工作? 我需要设备上的应用程序来发回令牌吗?

【问题讨论】:

【参考方案1】:

听起来您正在尝试使用推送通知来轮询 ios 设备并返回信息。

推送通知不提供无需用户交互即可在设备上执行代码的机制。您必须在设备上加载一个应用程序,并且用户必须从通知中点击进入您的应用程序。

在 iOS 中,除非用户主动与应用程序交互,否则应用程序通常不会运行。有一些例外情况(例如背景音频。)

您确实需要运行应用程序才能获取设备令牌。你打电话给registerForRemoteNotificationTypes。请参阅APNs docs 了解更多信息。

已编辑以添加更多信息:

看起来 MDM 协议使用推送通知来执行您所描述的操作。但是,Apple 的“本地和推送通知编程指南”(上面链接)中没有任何内容。

显然,Apple 严格控制 MDM 文档(请参阅 here 和 here)。

但是,我确实从 blackhat 中找到了 this paper,描述了系统的工作原理。

我之前关于不在没有用户交互的设备上执行任意代码的观点仍然适用。可以执行的命令是有限的(参见附录 A)。

【讨论】:

我们的目标是每天在设备上运行一次 DeviceInformation 命令。使用设备上的应用程序,我们将获得设备令牌,我们可以发送命令。现在的问题是每天都会通知用户。我们不想那样做,我一直在寻找出路。看起来还没有解决方案。 根据我添加的附加信息,听起来您可以每天查询设备,而无需安装应用程序。但是,您必须执行本文中详细介绍的其他一些设置。请参阅标题为“MDM 注册资料”的部分。 感谢您的帮助。你提到的论文很有帮助。现在设备将 UUID 推送到 MDM 服务器。 有没有办法知道传入 UUID 的电话号码是什么。由于我将在许多手机上安装配置文件,因此我必须将电话号码映射到 UUID。在服务器从设备获取 UUID 之前,它不知道 UUID。它只知道电话号码。我需要一种方法来了解给定 UUID 的电话号码,以便我可以映射它们并将其用于推送通知【参考方案2】:

我在搜索iOS push notification access payload without user interaction 时遇到了这个问题 - 只是想补充一点,在 iOS 7 及更高版本中,可以向应用发送静默推送通知,应用无需用户交互即可处理它们。

但是,我还在SO post 中发现了一些讨论,说静默推送通知无法可靠传递。这就是为什么我仍在寻找替代方法来检索正常远程推送通知的有效负载。好像没有办法。

【讨论】:

以上是关于无需用户操作即可发送 ios 推送消息的主要内容,如果未能解决你的问题,请参考以下文章

使用 socket.io 技术实现消息实时推送

如何实现消息推送功能

没有设备令牌的 ios 推送通知/消息

ios 消息推送流程

Parse.com - 从 Parse.com 向 iOS 应用程序发送消息,不像推送通知

微信服务号开发模式下怎么发送推送消息