我尝试使用NotificationCompat
推送通知:
NotificationCompat.Builder b = new NotificationCompat.Builder(this);
b.setAutoCancel(true)
.setDefaults(NotificationCompat.DEFAULT_ALL)
.setWhen(System.currentTimeMillis())
.setSmallIcon(this.getResources().
getIdentifier("ic_launcher", "mipmap", this.getPackageName()))
.setLargeIcon(BitmapFactory.decodeResource(this.getResources(),
this.getResources().
getIdentifier("ic_launcher", "mipmap", this.getPackageName())))
.setTicker("God Reacts")
.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
.setPriority(Notification.PRIORITY_MAX)
.setContentTitle(data.get("lineOne"))
.setContentText(data.get("lineTwo"))
.setContentInfo("Spread the message !");
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
new Intent(this,getMainActivityClass()),
PendingIntent.FLAG_UPDATE_CURRENT);
b.setContentIntent(contentIntent);
NotificationManager nm = (NotificationManager)
this.getSystemService(Context.NOTIFICATION_SERVICE);
nm.notify(1, b.build());
但在少数设备(三星,MI等)中,未显示通知横幅。 通知会在动作托盘中滑动并发出声音并振动。
但在少数设备中,当应用程序关闭/后台/前景时,它会完美显示。正确弹出的设备使用marshmallow。这是由于特定的操作系统?或者是与设备相关的问题?我需要添加什么额外的东西?
答案 0 :(得分:4)
由于电池优化,某些牛轧糖版设备可能会出现问题 例如三星Galaxy S8和S8 +,Oneplus,xaiomi等,但在Android版牛轧糖中, 您可以尝试一次,因为您必须检查一次设置
第1步:转到设置>
第2步:搜索"电池优化" >
第3步:点击"未优化的应用" ,然后切换到"所有应用。&# 34; 强>
第4步:搜索您的应用(其中您未收到通知)
第5步:点按您的应用名称并将其设置为未优化,以便它可以收到通知。
或强>
第1步:转到设置>应用
第2步:点击右上角的:菜单,选择> [特殊访问]
第3步:选择> 优化电池使用>
第4步:点击屏幕顶部的下拉菜单,其中显示:"未优化的应用[v]" - >更改为[所有应用]
第5步:选择您的应用并进行更改"未优化"。
答案 1 :(得分:3)
在MI或OPPO等中国设备中。系统关闭非白名单应用程序的通知服务。因此,您无能为力。只需要求他们将您的应用程序列入白名单(一般情况下发生的惨淡机会),或者使用hack始终将您的应用程序保存在内存中,比如运行一些空白的后台服务24 * 7
答案 2 :(得分:1)
首先尝试使用最小通知属性。尝试使用以下代码,该代码在我的应用中正常运行如果它有效,则可以通过启用一个通知属性来调试代码。
private void sendNotification(String messageBody) {
Intent intent = new Intent(this, NotificationActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent,
PendingIntent.FLAG_ONE_SHOT);
Uri defaultSoundUri= RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_action_notification)
.setContentTitle("Touchrooms Notification")
.setContentText(messageBody)
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setContentIntent(pendingIntent);
NotificationManager notificationManager =
(NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());
}
答案 3 :(得分:1)
当通知使用图标或图片并且无法加载该图标/图像时,我遇到了类似的问题。您可以通过res_id
更改那些将图标从资源设置为加载图标的行来轻松测试它,如下所示:
b.setSmallIcon(R.drawable.new_mail);
b.setLargeIcon(R.drawable.my_icon);
您当前加载这些图标的方法可能会在这些设备上失败,因此,通知会有声音和振动,但不会显示可见内容。
答案 4 :(得分:0)
问题出在某些设备的设置中。
需要在设置中启用“#!/usr/bin/env ruby
require 'rubyfunction1'
require 'rubyfunction2'
” - > app - >通知。
答案 5 :(得分:0)
有时设备设置中的“请勿打扰”选项仍处于开启状态。如果是这样,请将其关闭,您就可以开始了。