无需设备或“真实”模拟器即可接收 iPhone / Android 的推送通知
Posted
技术标签:
【中文标题】无需设备或“真实”模拟器即可接收 iPhone / Android 的推送通知【英文标题】:Receive push notifications for iPhone / Android without a device, nor a "real" simulator 【发布时间】:2014-10-23 11:11:49 【问题描述】:我想自动测试发送推送通知的应用程序。
我希望能够从 Apple/Google 为 android 和 Apple 设备获取(或生成)一个令牌,该令牌将被 Apple 或 Google 的服务器接受,并将通知发送到我的测试程序。
也就是说,我正在运行我的程序(我们称之为 A)来测试一些服务器。测试相对复杂,涉及大量网络通信。我将服务器作为黑匣子进行测试,我无法模拟任何东西。我想用程序 A 模拟手机,该程序打开客户端应用程序并注册推送通知。然后,我希望能够看到在程序 A 上收到的这些通知。一切都应该在代码中完成,而不是依赖于真实设备。
这甚至可能吗? Apple/Google 是否允许这种类型的测试?我读过Android模拟器只要有一个活跃的谷歌帐户就能够接收通知,这很好。这可以在没有 Android 模拟器开销的情况下进行模拟吗?苹果的 iStuff 能做到吗?
【问题讨论】:
【参考方案1】:Push Notifications in Mavericks ios Simulator:看来你可以使用iOS模拟器来测试推送通知,但我知道你不想使用模拟器或设备。
Apple 不应允许您要求的内容,因为这意味着非 Apple 设备将被允许注册推送通知。根据https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/ApplePushService.html#//apple_ref/doc/uid/TP40008194-CH100-SW12,“APNs 使用唯一设备证书中包含的信息生成设备令牌。设备令牌包含设备的标识符。然后它使用令牌密钥加密设备令牌并将其返回给设备。”因此,为了创建所需的令牌,您需要一个唯一的设备证书——换句话说,一个真实的设备或 iOS 8 模拟器。如果您尝试在单个“设备”上进行测试,也许您可以伪造一个或从真实设备复制,但我确信这违反了 Apple 的政策。
【讨论】:
那么 Android 呢? 首先,添加到我之前的回答中,根据cloud.google.com/developers/articles/ios-push-notifications,您可以从 Google Cloud 推送到 iOS,但它与我的回答一致,即您需要一台实际的 iOS 设备。 其次,developer.android.com/google/gcm/gcm.html 表示您可以使用运行 Android 2.2 或更高版本并安装了 Google Play Store 应用程序的 Android 设备或运行带有 Google API 的 Android 2.2 的模拟器注册 Google 推送。这听起来不像模拟器算作“非真实”设备。您需要复制或伪造的部分是 Registration_ID——“注册 ID 与在特定设备上运行的特定 Android 应用程序相关联。”同样,可能违反了 Google 的政策。 我需要伪造“Registration_ID”是什么意思?那是什么?是否有可能获得 Android 设备和谷歌服务器之间的协议规范,以便我可以伪造手机? (我相信模拟器实现的协议与实际手机完全相同) Registration_ID的形式没有公布。 groups.google.com/forum/#!topic/android-c2dm/AUGlvmJPyMM 显示了对 ID 长度的一些猜测。 ***.com/questions/11324666/… 显示了一个 ID 示例。该 ID 与许多其他凭据一起使用(请参阅我之前评论中的链接),以确保所有各方都已通过身份验证并且推送到正确的位置。 Registration_ID 用于识别特定设备上的特定应用程序 - 因此是过程的一部分。以上是关于无需设备或“真实”模拟器即可接收 iPhone / Android 的推送通知的主要内容,如果未能解决你的问题,请参考以下文章
音频引擎仅在运行 iOS 10 的设备(iphone 6)上失败,在所有模拟器设备上运行良好或真实设备直到 iphone 6s
有啥方法可以在真实设备上测试 iphone 应用程序而无需向 Apple 支付 99 美元?
在 iOS 设备(iPhone / iPad)上安装应用程序或从 Xcode 创建 .ipa,无需代码签名和开发人员帐户
iPhone SDK:可以通过iPad设备访问Localhost吗? (调试时)
Xamarin.Forms 可以通过 Wi-FI 在 iPhone(真实设备)上工作,而无需连接到来自 VS 2019 CE Windows 10 的真实 Mac Os?