当应用未运行时,Firebase不会显示通知

时间:2017-01-29 16:33:05

标签: android firebase push-notification

快速提问

当我的应用根本没有运行(但已安装)时,我能够收到默认的Android Notifications菜单(当您向下滑动状态栏时出现)的通知。如果是的话 - 我该怎么办?

详细说明

我已将Firebase通知实施到我的Android应用中。以下是:

的Manifest.xml

<service
    android:name=".utils.FireBase">
    <intent-filter>
        <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
    </intent-filter>
</service>
<service
    android:name=".utils.FireBaseService">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT"/>
    </intent-filter>
</service>

<meta-data
    android:name="com.google.firebase.messaging.default_notification_icon"
    android:resource="@mipmap/ic_launcher" />
<meta-data
    android:name="com.google.firebase.messaging.default_notification_color"
    android:resource="@color/colorAccent" />

FireBaseService.java

public class FireBaseService extends FirebaseMessagingService {
    private static final String TAG = FireBaseService.class.getSimpleName();

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        Log.d(TAG, "onMessageReceived: " + remoteMessage.getData().get("message")); 
    }
}

FireBase.java

public class FireBase extends FirebaseInstanceIdService {

    @Override
    public void onTokenRefresh() {
        // I used this token in rest.
        Log.e("FirebaseToken", FirebaseInstanceId.getInstance().getToken());
    }
}

很好,现在我想发送通知:

curl -X POST --data "$DATA" https://fcm.googleapis.com/fcm/send --header "Content-Type:application/json" --header "Authorization:key=$KEY"

$ DATA

{
  "notification":{ 
      "body": "My notification!"
  },
  "to": "KEY_FROM:FirebaseInstanceId.getInstance().getToken()"
}

响应

{
  "multicast_id": 7830342176959972827,
  "success": 1,
  "failure": 0,
  "canonical_ids": 0,
  "results": [
    {
      "message_id": "0:1485706467606270%8a47512d8a475125"
    }
  ]
}

现在,当我的应用程序正在运行时,我能够接收通知。当我的应用程序进入后台时 - 通知转到Android notifications。现在我关闭我的应用程序(它既不在前台也不在后台)(我的意思是关闭 - 按SQUARE硬件按钮 - >向左滑动应用程序,这样我的应用程序就不再在任务管理器中了。我希望从firebase收到Android notifications菜单的通知。但是,当我打电话给休息服务时,什我不关心布局,所以我只想通知用户。

我尝试使用不同的设备发送通知:

  1. 真正的Android设备:基于android 5.1的小米mi4c。
  2. 基于Android 7.0 + playmarket安装的Genymotion模拟器。
  3. 基于andoriod 4.4 + playmarket安装的Genymotion模拟器。
  4. 通知根本就没有显示。我观察了控制台,我甚至没有找到关于它们的日志。我阅读了很多stackoverflow帖子,据我所知,我应该能够这样做。

    如何归档此目标?如果我无法通过firebase接收通知 - 也许我应该使用GCM代替?

    致以最诚挚的问候,

1 个答案:

答案 0 :(得分:1)

实际上对此主题进行了积极的讨论,因为这种行为似乎是基于制造商执行的Android操作系统自定义而发生的。

这是Fireit成员在GitHub上的答案之一:first comment,但正如您在此处last comment所见,尚未找到针对Firebase通知的常规解决方案。

如果它不能正常工作(假设你没有在某处犯错),那么不应该是你的错;如果您感到幸运,并且您有一个可以手动启用通知的设备,即使应用程序被杀,您也可以阅读here

相关问题