只需将应用程序更新为API 27,并将com.urbanairship.android:urbanairship-gcm:9.1.0添加到build.gradle文件中。我可以在Android N及以下版本上收到推送通知,但在Android O及以上版本上进行尝试时不起作用,我已经为通知分配了一个通道,但是仍然无法正常工作,这是AutoPilot的代码如下:
public class UrbanAirshipAutoPilot extends AutoPilot {
@Override
public void onAirshipReady(@NonNull UAirship airship) {
airship.getPushManager().setUserNotificationsEnabled(true);
// Android O
if (Build.VERSION.SDK_INT >= 26) {
Context context = UAirship.getApplicationContext();
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
NotificationChannel channel = new NotificationChannel(UAConstants.DEFAULT_CHANNEL,
context.getString(R.string.custom_channel_name,
NotificationManager.IMPORTANCE_DEFAULT);
notificationManager.createNotificationChannel(channel);
}
airship.getPushManager().setPushEnabled(true);
airship.getPushManager().setUserNotificationsEnabled(true);
}
@Override
public AirshipConfigOptions createAirshipConfigOptions(@NonNull Context context) {
AirshipConfigOptions options = new AirshipConfigOptions.Builder()
.setDevelopmentAppKey(UAConstants.DEV_PROD_KEY)
.setDevelopmentAppSecret(UAConstants.DEV_SECRET_KEY)
.setProductionAppKey(UAConstants.PROD_APP_KEY)
.setProductionAppSecret(UAConstants.PROD_SECRET_KEY)
.setFcmSenderId(UAConstants.GCM_PROJECT_ID)
.setNotificationIcon(R.drawable.ic_notification)
.setNotificationAccentColor(ContextCompat(getContext(), R.color.accent))
.setNotificationChannel(UAConstants.DEFAULT_CHANNEL)
.build();
return options;
}
}
我还向清单中添加了AutoPilot,它被称为在任何android版本上都可以正常工作并且初始化正确,但是由于某种原因通知无法在Android O上到达。
我们目前仍在使用GCM
答案 0 :(得分:1)
我们看到城市飞艇和GCM存在相同的问题。我们现在已经在城市飞艇上使用Firebase进行了测试,并且通知似乎可以正常工作。
由于其他类似的问题,例如here,我想问题不在于Urban Airship,而是在Android中,因为GCM只是越野车,并且由于不推荐使用而无法得到解决。