以下代码是从谷歌引用以支持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。
答案 0 :(得分:1)
无需检查版本。只需启动JobIntentService即可。如果它低于Oreo那么它将像一个简单的IntentService一样工作。