7

从 2018 年 8 月起,Google Play 上的所有新应用都必须以 Android 8(API 级别 26)或更高版本为目标,并且从 2018 年 11 月起,Google Play 上的所有应用更新必须与 Google Play 上的相同应用一致。

现在,您必须上传针对 Android 8 的新应用程序的唯一方法是编辑文件 AndroidManifest.template.xml 并将 targetSdkVersion = "% targetSdkVersion%" 替换为: Android: targetSdkVersion = "26"

问题是,从那一刻起,应用程序就受到了 Android O 引入的限制。被认为是危险的权限(相机、位置、短信等)不会仅仅因为将它们包含在 AndroidManifest 中而授予应用程序文件。告别相机,告别 GPS,...

在这个网站上,您可以按照几个简单的步骤开始向用户请求权限:http: //delphiworlds.com/2018/05/targeting-android-8-and-higher/

然而,目标 Android 8 有更多的含义。我的应用程序,仅仅因为将 targetSDKVersion 从 25 更改为 26 在应用程序未运行(或在后台)时不会收到推送通知。

我的测试很简单:我更改了 targetSDK,但它不再工作了。我倒带它再次工作,无论是在应用程序运行还是应用程序在后台或关闭时。

关键是 TARGETSDKVERSION 的变化,因为我一直尝试在 SDK Manager 中选择 SDK 24.3.3。

我认为主要原因之一是 Android O 中后台服务的消失,正如他们在https://blog.klinkerapps.com/android-o-background-services/中解释的那样,但我不确定。

我的大问题。

我刚刚将 Android 7(25 级)应用程序上传到 Google Play。问题是,截至 2018 年 11 月,如果我不将 TARGETSDKVERSION 更改为 26 级,我将无法上传更新。但如果我这样做......我将停止接收推送通知,并且没有推送通知,我的应用程序不起作用为了任何东西。

我承认我对此有点害怕

对不起我的英语。

非常感谢您。

4

1 回答 1

1

您必须确保您的通知具有高优先级,FCM 会立即发布

FCM 尝试立即传递高优先级消息,允许 FCM 服务在必要时唤醒睡眠设备并运行一些有限的处理(包括非常有限的网络访问)。高优先级消息通常会导致用户与您的应用进行交互。如果 FCM 检测到他们没有检测到的模式,您的消息可能会被取消优先级

如果您的用户与通知进行交互,FCM 不会延迟它。在某些情况下,Android O 中可能不允许后台服务,但这并不意味着您不能发送通知

如果您不使用通知渠道,也不会显示您的通知,您可以使用此代码创建通知渠道

public void initChannels(Context context) {
if (Build.VERSION.SDK_INT < 26) {
    return;
}
NotificationManager notificationManager =
        (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
NotificationChannel channel = new NotificationChannel("default",
                                                      "Channel name",
                                                      NotificationManager.IMPORTANCE_DEFAULT);
channel.setDescription("Channel description");
notificationManager.createNotificationChannel(channel);

}

于 2018-05-27T10:12:59.047 回答