当应用程序处于后台时,如何接收消息?(Android、Unity、GCM)

当应用程序处于后台时,如何接收消息?(Android、Unity、GCM),android,background,unity3d,google-cloud-messaging,Android,Background,Unity3d,Google Cloud Messaging,我对Unity和iOS非常有经验,我可以将我的Unity应用程序部署到Android上。但我对安卓原生的东西一无所知 我的问题是当android应用程序在后台时,接收GCM消息并显示通知。我实现了它,当应用程序位于前台时,它工作得非常完美,但当应用程序位于后台时,我的GCM消息侦听器不会被触发,并且我无法显示通知 我使用此插件接收GCM消息: 我用它来显示通知: 我试图联系这些插件的作者,但他们很长时间没有回复…您可能会发现事件总线的概念很有趣。我将尝试向您展示一个示例,尽管我以前从未在通知中使

我对Unity和iOS非常有经验,我可以将我的Unity应用程序部署到Android上。但我对安卓原生的东西一无所知

我的问题是当android应用程序在后台时,接收GCM消息并显示通知。我实现了它,当应用程序位于前台时,它工作得非常完美,但当应用程序位于后台时,我的GCM消息侦听器不会被触发,并且我无法显示通知

我使用此插件接收GCM消息: 我用它来显示通知:


我试图联系这些插件的作者,但他们很长时间没有回复…

您可能会发现事件总线的概念很有趣。我将尝试向您展示一个示例,尽管我以前从未在通知中使用过它。我将使用Toast消息作为替代,因为这是我可以接受的

这个想法相当简单,因为任何对象(
活动
)都可以“乘坐巴士”:

当总线发出“哔”声(发出事件)时,您需要订阅服务器方法来运行:

当一个物体需要下车时:

bus.unregister(this);
另外,要使总线发出“嘟嘟”声:

这会在总线上有座位的每个对象中触发对
onEvent(NotificationEvent)
方法的调用。您可以添加不同的订阅者方法(例如
onEvent(LocationEvent event)
),并且这些方法将仅在发出相同类型的事件时运行
bus.post(new LocationEvent())
对于可以在总线上注册的对象数量没有限制


只要稍加修改,我看不出有什么理由不能将其应用于通知方法,并根据您的程序触发事件。

我使用asset store中StansAssets的“Android本机”插件解决了我的问题。通过他的实现,即使应用程序在后台,当云消息到达时,android设备也会显示一个通知。点击通知打开应用程序。

@Steven:Unity是产品名称。只有他们的域名是unity3d.com,但有关Unity游戏引擎的标签应在下询问,而有关Microsoft模式与实践Unity IoC库的问题应在下询问。标签没有撒谎,我也没有创建那些标签。我不得不打断我的问题,因为我仍然没有希望…我不得不说我不太明白你在解释什么。正如我在问题中所说的,我没有任何本地android体验。这包括java、android sdk及其类。我根本不碰它们。我想做的就是在应用程序处于后台时能够接收GCM消息。在iOS上做这件事非常容易。我不明白为什么安卓平台这么难。把总线想象成一个不断运行的过程。通过将通知附加到总线,您可以确保它能够从您的应用程序发送到通知中心。您的程序触发通知,总线接收通知并将其发送给用户。还有,你认为Android很难吗?请尝试后端Symbian:)
public void onEvent(NotificationEvent event) {
Toast.makeText(this, 
    event.payload.getString("message"), 
    LENGTH_SHORT)
.show();
}
bus.unregister(this);
NotificationEvent event = new NotificationEvent(bundle);
bus.post(event);