android 6 推送权限,android – fcm推送通知无法在一个加6手机中工作

当设备处于后台,前台以及通过从托盘中滑动关闭应用程序时,FCM推送通知正在以下设备中正常工作.

品牌名称(

android-版本)

Micromax(5.1)

摩托罗拉(7.1.1)

诺基亚(8.1.0)

三星(8.0.0)

Nexus(8.1.0)

小米(7.1.2)

但是对于oneplus,当通过从托盘滑动关闭应用程序时fcm通知不起作用,但是当应用程序处于前台和后台时正常工作.

设备版本

OnePlus 8.1.0

但是当我手动关闭我的应用程序的电池优化选项时,在所有情况下fcm推送通知在Oneplus设备中正常工作

我的androidManifest.xml是

xmlns:android="http://schemas.android.com/apk/res/android"

package="com.demo.Notification"

android:installLocation="auto">

android:allowBackup="false"

android:icon="@mipmap/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme">

android:name="com.google.firebase.messaging.default_notification_icon"

android:resource="@mipmap/ic_launcher" />

android:name="com.google.firebase.messaging.default_notification_channel_id"

android:value="@string/default_notification_channel_id"/>

android:name=".MyFirebaseMessagingService">

android:name="com.demo.Notification.MainActivity">

我的MyFirebaseMessagingService.java

package com.demo.Notification;

import android.app.NotificationChannel;

import android.app.NotificationManager;

import android.app.PendingIntent;

import android.content.Context;

import android.content.Intent;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.graphics.Color;

import android.media.RingtoneManager;

import android.net.Uri;

import android.os.Build;

import android.support.annotation.RequiresApi;

import android.support.v4.app.NotificationCompat;

import android.support.v4.app.NotificationManagerCompat;

import com.google.firebase.messaging.FirebaseMessagingService;

import com.google.firebase.messaging.RemoteMessage;

import org.json.JSONObject;

public class MyFirebaseMessagingService extends FirebaseMessagingService

{

private static final String NOTIFICATION_MESSAGE_KEY = "MESSAGE";

private NotificationManager notificationManager;

@Override

public void onMessageReceived(RemoteMessage remoteMessage)

{

sendNotification(remoteMessage.getData().get(NOTIFICATION_MESSAGE_KEY));

}

private void sendNotification(String msg)

{

String notification_message_title = "";

String notification_message_text = "";

int notification_id = 1;

String channel_id = getString(R.string.default_notification_channel_id);

try

{

JSONObject jsonObject = new JSONObject(msg);

if(jsonObject.has("notification_message_title"))

{

notification_message_title = jsonObject.getString("notification_message_title");

notification_message_title = (notification_message_title != null) ? notification_message_title.trim() : "";

}

if(jsonObject.has("notification_message_text"))

{

notification_message_text = jsonObject.getString("notification_message_text");

notification_message_text = (notification_message_text != null) ? notification_message_text.trim() : "";

}

if("".equals(notification_message_title))

{

return;

}

if("".equals(notification_message_text))

{

return;

}

}

catch(Exception e)

{

return;

}

notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)

{

setupChannels();

}

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this,channel_id);

mBuilder.setAutoCancel(true);

mBuilder.setPriority(NotificationCompat.PRIORITY_MAX);

mBuilder.setContentTitle(notification_message_title);

mBuilder.setContentText(notification_message_text);

mBuilder.setColor(Color.BLUE);

mBuilder.setSmallIcon(R.mipmap.ic_launcher);

Bitmap largeIcon = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);

mBuilder.setLargeIcon(largeIcon);

Uri notificationSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);

mBuilder.setSound(notificationSound);

Intent resultIntent = new Intent(this, MainActivity.class);

resultIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

PendingIntent resultPendingIntent =

PendingIntent.getActivity(

this,

notification_id,

resultIntent,

PendingIntent.FLAG_UPDATE_CURRENT

);

mBuilder.setContentIntent(resultPendingIntent);

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)

{

mBuilder.setChannelId(channel_id);

}

NotificationManagerCompat notificationManagerCompat = NotificationManagerCompat.from(this);

notificationManagerCompat.notify(notification_id, mBuilder.build());

//SEND Notification END

}

@RequiresApi(api = Build.VERSION_CODES.O)

private void setupChannels(){

String channel_id = getString(R.string.default_notification_channel_id);

CharSequence channelName = getString(R.string.default_notification_channel_name);

NotificationChannel channel = new NotificationChannel(channel_id, channelName, NotificationManager.IMPORTANCE_MAX);

channel.enableLights(true);

channel.setLightColor(Color.BLUE);

channel.enableVibration(true);

if (notificationManager != null) {

notificationManager.createNotificationChannel(channel);

}

}

}

我的应用程序级别build.gradel

apply plugin: 'com.android.application'

android {

compileSdkVersion 27

buildToolsVersion "27.0.3"

defaultConfig {

applicationId "com.demo.Notification"

minSdkVersion 19

targetSdkVersion 27

versionCode 1

versionName "1.0.0"

}

buildTypes {

release {

minifyEnabled true

proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

}

}

sourceSets { main { assets.srcDirs = ['src/main/assets', 'src/main/assets/'] } }

}

dependencies {

compile fileTree(dir: 'libs', include: ['*.jar'])

compile 'com.android.support:appcompat-v7:27.1.1'

compile 'com.google.code.gson:gson:2.2.4'

compile 'com.google.firebase:firebase-messaging:17.3.0'

}

apply plugin: 'com.google.gms.google-services'

我的项目级build.gradle

buildscript {

repositories {

jcenter()

maven {

url "https://maven.google.com"

}

}

dependencies {

classpath 'com.android.tools.build:gradle:2.2.3'

classpath 'com.google.gms:google-services:4.1.0'

}

}

allprojects {

repositories {

jcenter()

maven {

url "https://maven.google.com"

}

}

}

我正以这种方式向服务器发送令牌

public void registerDevice()

{

FirebaseInstanceId.getInstance().getInstanceId()

.addOnCompleteListener(new OnCompleteListener() {

@Override

public void onComplete(@NonNull Task task)

{

String registrationId = task.getResult().getToken();

sendTokenToServer(registrationId);

}

});

}

任何小帮助将不胜感激

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值