Urban Airship Android GCM未在Android Oreo和Pie上收到推送通知

时间:2018-10-24 20:01:49

标签: android google-cloud-messaging android-8.0-oreo urbanairship.com

只需将应用程序更新为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

1 个答案:

答案 0 :(得分:1)

我们看到城市飞艇和GCM存在相同的问题。我们现在已经在城市飞艇上使用Firebase进行了测试,并且通知似乎可以正常工作。

由于其他类似的问题,例如here,我想问题不在于Urban Airship,而是在Android中,因为GCM只是越野车,并且由于不推荐使用而无法得到解决。