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

时间:2014-07-24 16:30:30

标签: android background unity3d google-cloud-messaging

我在Unity和iOS上非常有经验,我可以将Unity应用程序部署到Android。但我对本机Android内容一无所知。

我的问题是关于接收GCM消息并在Android应用程序处于后台时显示通知。我实现了它,当应用程序处于前台时它工作正常,但当应用程序处于后台时我的GCM消息监听器没有被触发,我无法显示通知。

我使用此插件接收GCM消息:https://github.com/kskkbys/unity-gcm 我用它来显示通知:https://www.assetstore.unity3d.com/en/#!/content/9484

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

2 个答案:

答案 0 :(得分:1)

我使用" Android Native"解决了我的问题来自资产商店中StansAssets的插件。通过他的实现,Android设备在云消息到达时显示通知,即使应用程序在后台。点击通知会打开应用程序。

答案 1 :(得分:0)

您可能会发现事件总线的概念很有趣。我会试着向你展示一个例子,虽然我之前从未使用过它。我将使用Toast消息作为替代品,因为这是我很满意的。

这个想法很简单,因为任何对象(activity)都可以“乘坐公共汽车”:

bus.register(this)

当总线发出“嘟嘟”声(发出事件)时,您需要使用订阅者方法:

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);

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

通过少量修改,我认为没有理由不能将其改编为通知方法,并根据您的程序触发事件。