android - 在背景和内容available=1中,android没有使用应用程序接收GCM通知

  显示原文与译文双语对照的内容
107 5

我正在开发一个 2位应用程序并在 Android 模拟器 上测试。

应用程序处于后台且通知没有标题时,没有消息和content-available=1应直接发送到应用程序通知处理程序。但没有发生。

我可以在前台收到应用程序的通知。

如果我有一个标题和一个消息,我将在通知区域中收到通知。但我需要在无提示模式下直接将通知发送到应用程序,而不通过通知区域。

以下是发送推送通知的代码:

{
"delay_while_idle": true,
"priority":"high",
"sound":"default",
"color":"FFFF00",
//payload 
"data": {
"content-available":"1",
"some_var":"some_value",
"ohter_var":"other_value", 
 }
}

我如何向 Android 应用 发送无声通知?

时间:原作者:0个回答

136 5

应用背景时,Android GCM和FCM也工作。

因为你需要在清单中添加 Intent 过滤器下面的服务类。

<!-- [START gcm_listener] -->
 <service
 android:name=".gcm.GcmListener"
 android:exported="false">
 <intent-filter>
 <action android:name="com.google.android.c2dm.intent.RECEIVE"/>
 </intent-filter>
 </service>
 <service
 android:name=".gcm.TokenRefreshService"
 android:exported="false">
 <intent-filter>
 <action android:name="com.google.android.gms.iid.InstanceID"/>
 </intent-filter>
 </service>
 <service
 android:name=".gcm.RegistrationIntentService"
 android:exported="false"/>
 <!-- [END gcm_listener] -->
public class GcmListener extends GcmListenerService {
}
public class TokenRefreshService extends InstanceIDListenerService {
 @Override
 public void onTokenRefresh() {
 super.onTokenRefresh();
 Intent intent = new Intent(this, RegistrationIntentService.class);
 startService(intent);
 }
}

要获取令牌:

public class RegistrationIntentService extends IntentService {
//TODO: Rename actions, choose action names that describe tasks that this
 private String TAG ="RegistrationIntentService";
 public RegistrationIntentService() {
 super("RegistrationIntentService");
 }
 @Override
 protected void onHandleIntent(Intent intent) {
 InstanceID instanceID = InstanceID.getInstance(this);
 String token = instanceID.getToken("PRODUCT_ID",
 GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);
}
}
原作者:
...