Android Oreo - GCM

时间:2018-04-11 08:58:42

标签: android broadcastreceiver android-8.0-oreo android-8.1-oreo

以下代码是从谷歌引用以支持GCM,

        <receiver
        android:name="com.google.android.gms.gcm.GcmReceiver"
        android:exported="true"
        android:permission="com.google.android.c2dm.permission.SEND" >
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
            <category android:name="com.example.gcm" />
        </intent-filter>
        </receiver>

        <service
        android:name="com.example.MyGcmListenerService"
        android:exported="false" >
        <intent-filter>
            <action android:name="com.google.android.c2dm.intent.RECEIVE" />
        </intent-filter>
        </service>

        <service
        android:name="com.example.MyInstanceIDListenerService"
        android:exported="false">
        <intent-filter>
            <action android:name="com.google.android.gms.iid.InstanceID" />
        </intent-filter>
        </service>

查询1.根据Google文档,Background execution limits会对Android Oreo产生任何影响吗?或者它可以按预期工作而不进行任何代码更改?

此外,正如谷歌在下面建议的那样,

  

如果您在应用开发中定位Android 8.0(API级别26)或更高版本,请使用Firebase云消息传递(FCM)。否则,使用JobIntentService类而不是IntentService来处理令牌刷新。

查询2.根据以上说法,以下方法是否正确?

@Override
public void onTokenRefresh() {

if (Build.VERSION.SDK_INT >= 26) {

 //start JobIntentService

} else {
 // start intent service
}

如果是,那么谁是enqueueWork的调用者?

注意:由于某些限制,无法转移到FCM。

1 个答案:

答案 0 :(得分:1)

无需检查版本。只需启动JobIntentService即可。如果它低于Oreo那么它将像一个简单的IntentService一样工作。