代码之家  ›  专栏  ›  技术社区  ›  James

Android手机中没有弹出世博推送通知(浮动通知)

  •  8
  • James  · 技术社区  · 7 年前

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

    我目前正在Android设备上测试推送通知,注意到虽然我得到了推送通知,但它们不会出现在屏幕上,而是停留在后台(我需要根据图片向下拖动顶部状态栏)。我认为这是相当无用的,因为用户在使用手机时并没有得到真正的通知:

    enter image description here

    2 回复  |  直到 7 年前
        1
  •  5
  •   Bertram Gilfoyle    7 年前

    我终于成功了 Expo.Notifications.createChannelAsync priority: "max" 在发送消息时添加 channelId: "mychannel" .

        2
  •  0
  •   Bertram Gilfoyle    7 年前

    要显示所谓的浮动通知,应用程序必须具有 SYSTEM_ALERT_WINDOW .

    权限是由用户授予的。因此,无法从应用程序中默认启用它们。你所能做的就是把用户带到设置页面。




    建议的方法是使用 Settings#canDrawOverlays(Context) 。此权限仅在API级别23中引入。因此,根据doc,不需要检查旧设备中的权限。

    然而,在一些像小米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);
    
    推荐文章