Android 通过GCM(谷歌云消息)在两个不同的应用程序之间进行通信

Android 通过GCM(谷歌云消息)在两个不同的应用程序之间进行通信,android,push-notification,android-notifications,google-cloud-messaging,Android,Push Notification,Android Notifications,Google Cloud Messaging,我有两个应用程序C和D。我想要实现的是通过GCM从C(在一台设备上)发送通知到D(在另一台设备上)。当用户单击为应用程序D接收的通知时,应用程序D内的活动开始。我不知道我能不能做到。我能够在安装在不同设备上的应用程序中发送和接收通知,但在我看来,不同应用程序之间的通信有点棘手。任何帮助都将不胜感激 是的,您可以为两个应用使用相同的发件人ID。但当您发送消息时,您会指定一个注册ID,该ID隐式链接到生成它的app+设备的包名。只有请求注册ID的应用程序才会收到您的消息。最后,您必须为两个应用程序输

我有两个应用程序C和D。我想要实现的是通过GCM从C(在一台设备上)发送通知到D(在另一台设备上)。当用户单击为应用程序D接收的通知时,应用程序D内的活动开始。我不知道我能不能做到。我能够在安装在不同设备上的应用程序中发送和接收通知,但在我看来,不同应用程序之间的通信有点棘手。任何帮助都将不胜感激

是的,您可以为两个应用使用相同的发件人ID。但当您发送消息时,您会指定一个注册ID,该ID隐式链接到生成它的app+设备的包名。只有请求注册ID的应用程序才会收到您的消息。最后,您必须为两个应用程序输入相同的程序包名称

注意:您不能在Android设备上安装两个具有相同软件包名称的应用程序

根据评论进行编辑:

若您知道另一个应用程序的包名,则可以执行此操作。比如说:

    com.example.myappD
现在,使用意图并启动默认启动器活动:

Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage("com.example.myappD");
startActivity(LaunchIntent);

在launcher activity
onCreate()
中,只需检查导航到此活动的位置。如果收到通知,请启动所需的活动。

您可以通过以下方式执行此操作:

这两个应用程序可以使用相同的发件人ID,也可以使用不同的发件人ID。如果他们使用不同的发件人ID,您的服务器将需要为每个发件人ID使用不同的API密钥。这两个应用没有理由具有相同的包名

您的服务器将接受两个应用程序的注册ID。您必须将每个注册ID存储在一个字段中,该字段指示它属于哪个应用程序


如果一台设备上的应用程序C希望向另一台设备上的应用程序D发送GCM消息,它将向服务器发送消息(以某种方式指示收件人设备和应用程序的标识符-由您决定如何识别收件人)。然后,服务器将找到应用程序D的收件人设备的注册ID,并使用与此应用程序匹配的API密钥将消息发送到该设备。

您的问题很好,但很棘手。您知道如何做到这一点吗?是的,但首先您需要实现
GCM
,然后我们将处理这些内容。我已经完成了,谢谢Manish。我已经做到了。但问题是如何将挂起的意图(当用户单击通知时打开)作为来自不同应用程序的活动传递。谢谢Manish。这真的很有帮助:)而且我认为,我必须在接收应用程序的清单文件中指定一些权限,让它从不同的应用程序获得通知。如果我错了,请纠正我。你能告诉我我需要提供什么样的许可吗。我非常困惑:汉克斯·埃兰。将尝试:)请告诉我是否需要在接收应用程序中添加一些权限(本例中为D)。@Puneetr90您不需要任何特殊权限。您需要使用GCM的任何应用程序所需的常规权限。