世博会推送通知未在Android手机中弹出(浮动通知)

时间:2018-08-20 15:11:54

标签: android react-native push-notification expo

编辑:我发现这些被称为浮动通知。有谁知道如何通过Android设备上的应用(通过权限等)在默认情况下启用它们?

我目前正在Android设备上测试推送通知,但注意到尽管收到了推送通知,但它们并未在屏幕上弹出,而是停留在后台(我需要根据图片向下拖动顶部状态栏) 。我认为这是没有用的,因为如果用户正在使用电话,并不会真正得到通知:

enter image description here

在iPhone上,弹出窗口正确显示,没有任何问题。

2 个答案:

答案 0 :(得分:4)

我终于通过Expo.Notifications.createChannelAsync使用priority: "max"使其工作,并且在发送消息时添加channelId: "mychannel"

答案 1 :(得分:0)

要显示所谓的浮动通知,应用必须具有SYSTEM_ALERT_WINDOW权限。

权限是用户提供的东西。因此,无法从应用程序默认启用它们。您可以带用户进入设置页面。




检查您是否已经具有权限

推荐的方法是使用Settings#canDrawOverlays(Context)。此权限仅在API级别23中引入。因此,根据文档,无需检查旧设备中的权限。

但是,可以看出,在像小米Mi 2之类的某些棉花糖之前的设备中,这种方法无法正常工作。因此,最好按照this post中的说明进行操作。

如果没有权限,将用户带到设置页面

如果该应用程序的目标是API级别23或更高级别,则该应用程序用户必须通过权限管理屏幕向该应用程序明确授予此权限。该应用通过发送具有动作Settings.ACTION_MANAGE_OVERLAY_PERMISSION的意图来请求用户的批准。

Intent intent = new Intent();
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setData(Uri.parse("package:" + context.getPackageName()));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
context.startActivity(intent);