模拟Android GCM

6
我是Android开发的新手,想要添加推送通知服务器和客户端(APK)。根据我在网上看到的,我需要在console.developers.google注册一个项目,然后获取一些ID来允许发送或接收推送通知。但是,我想在我的本地机器上模拟完整的环境并进行测试。这可行吗?例如,一个推送服务在本地主机上注册并发送通知,并且我的应用程序(WIP)接收并再次将消息推送到服务 - 假设本地主机未连接到互联网。

你的本地计算机和移动设备是否有互联网访问? - Yazan
我确实有,只是想模拟没有网络连接的情况。 - john0609
2个回答

2
由于推送通知是通过Google服务器发送并分发到设备的,因此不可能在本地完成。然后它们会被操作系统接收,并交给任何会响应其意图的应用程序。因此,本地无法完成此操作。
有关更多信息,请参阅此处的文档。
编辑:
根据您编写的评论(这是一个非常酷的解决方法),我发现我可以通过执行以下操作来发送通知:
adb shell am broadcast -a com.google.android.c2dm.intent.RECEIVE com.myapp

我的做法跟你的不一样,区别在于我不使用-c选项,因为它会设置类别。要查看所有可能的选项,请执行以下操作:
adb shell

然后输入

am broadcast

假设您只有一个设备插入。(请注意,您不需要订阅通知,您必须将该通知发送到应用程序。然后,该应用程序被编程为响应任何带有操作com.google.android.c2dm.intent.RECEIVE的意图。)
这有帮助吗?

2
我能够使用本地adb工具广播数据。命令是:'adb shell am broadcast -c com.myapp -a com.google.android.c2dm.intent.RECEIVE -e data "SomeData"'. 问题在于我需要多次调用此方法来广播数据。还有,如何订阅我的应用程序以接收此通知? - john0609
我正在使用一个独立的Java服务和上述命令来模拟本地的c2dm服务器。完成后,我会更新这个帖子。 - john0609

1
您可以使用ADB模拟向Android设备发送推送通知。
1.首先安装ADB。
sudo apt-get install adb
2.从manifest.xml中删除SEND权限。
android:permission="com.google.android.c2dm.permission.SEND" > 3.使用shell命令发送通知。
adb shell am broadcast -c com.myapp -a com.google.android.c2dm.intent.RECEIVE -e data "SomeData"
4.根据需要更改包名(com.myapp)和"SomeData"。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接