问题
我正在接收GCM通知,但是当我的屏幕被锁定或关闭时,我的振动和声音无法正常工作。 我试图添加唤醒锁,但是通过GCMListenerService的外观,在触发通知时已经有了一个清醒的意图。 我该怎么做才能让它发挥作用?我遗失的那一块在哪里?
编辑
GcmListenerService
负责接收GCM推送通知,看起来wakelock被删除了(下面的代码) Bundle var2 = var1.getExtras();
var2.remove("message_type");
var2.remove("android.support.content.wakelockid");
CODE
Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_notification_icon)
.setContentTitle(getString(R.string.new_notification))
.setContentText(body)
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setVibrate(new long[] {1000, 1000, 1000})
.setColor(ContextCompat.getColor(getApplicationContext(), R.color.colorPrimary))
.setContentIntent(pendingIntent);
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = notificationBuilder.build();
notification.defaults |= Notification.DEFAULT_VIBRATE;
notification.defaults |= Notification.DEFAULT_SOUND;
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "TAG");
wl.acquire(10000);
notificationManager.notify(0, notification);
答案 0 :(得分:0)
您需要在服务器端代码中添加此标志delay_while_idle=true
。
见here
答案 1 :(得分:0)
所以事实证明,当您的通知包含data payload
和notification payload
时,Android处于锁定模式时即使您从Playload创建通知,即使您已为自定义代码编码。
不需要唤醒锁 - GcmListenerService
只要你有<uses-permission android:name="android.permission.WAKE_LOCK" />
答案 2 :(得分:0)
我正在使用FCM,经过大量的努力(我猜测缺少文档)后,我通过从发送到FCM的字段中删除通知来解决问题,并且仅使用$fields = array(
'to' => 'topics/all',
'data' => array(
'priority' => 'high',
'title' => $title,
'body' => $body,
'type' => $type));
。这是我的代码与php:
high
此外,您必须将优先级设置为def moving_average(df, col_name='Price', k=3):
ma_cols = []
mb_cols = []
temp_df = DataFrame()
for i in range(0, k+1):
ma_col = 'M_A_{}'.format(i)
ma_cols.append(ma_col)
mb_col = 'M_B_{}'.format(i)
mb_cols.append(mb_col)
temp_df[ma_col] = df[col_name].shift(i)
temp_df[mb_col] = df[col_name].shift(-i)
df['M_A'] = temp_df[ma_cols].mean(axis=1, skipna=True, numeric_only=True)
df['M_B'] = temp_df[mb_cols].mean(axis=1, skipna=True)
print (df)
return df
moving_average(df)
,以便在设备锁定时振铃并振动。
答案 3 :(得分:0)
确保已在清单文件中声明了默认通知通道。
<meta-data android:name="com.google.firebase.messaging.default_notification_channel_id"
android:value="YOUR_CHANNEL_ID"/>