Android-приложение не получает уведомления о Oreo One Plus 6
Я реализовал уведомление в моем проекте, но он не работает на одном устройстве плюс 6. Это нормально работает на устройствах MIUI, но когда я тестирую на одном устройстве плюс, оно работает в течение некоторого времени, и после некоторого показа ошибки ниже здесь - журнал ошибок
> W/GCM: broadcast intent callback: result=CANCELLED forIntent {
> act=com.google.android.c2dm.intent.RECEIVE flg=0x10000000
> pkg=com.packagename (has extras) }
>
Код класса MyFirebaseMessaging
public class MyFirebaseMessagingService extends FirebaseMessagingService {
private Context mContext;
private String f_Id;
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
JSONObject jsonObject = new JSONObject(remoteMessage.getData());
try {
f_Id = jsonObject.getString("fid");
Log.d(TAG, "F_ID" + f_Id);
} catch (JSONException e) {
e.printStackTrace();
}
mContext = getApplicationContext();
util = new Util(mContext);
back_suburllist = new ArrayList<>();
createNotificationChannel();
}
@Override
public void onNewToken(String s) {
super.onNewToken(s);
Log.d(TAG, "NewToken " + s);
TrackLib.getInstance().updateFCMToken(s);
}
/***
* createNotificationChannel for Oreo or upper
*/
private void createNotificationChannel() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
String CHANNEL_ID = mContext.getString(R.string.default_notification_channel_id);
CharSequence name = getString(R.string.channel_name);
String description = getString(R.string.channel_description);
int importance = NotificationManager.IMPORTANCE_HIGH;
NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance);
channel.setDescription(description);
NotificationManager notificationManager = getSystemService(NotificationManager.class);
assert notificationManager != null;
notificationManager.createNotificationChannel(channel);
}
}
Вот мой код сервера, который отправляет уведомление на регистрацию устройств
<?php
$path_to_fcm = "https://fcm.googleapis.com/fcm/send";
$skey='serverkey';
$headers = array(
'Authorization:key='.$skey,
'Content-Type:application/json'
);
$reg_id_array = array('token');
$mesg = array
(
'title'=>"This is Title",
'body'=> "This is Message",
'url'=>"Url",
'fid'=>"123".mt_rand(100,999),
);
$fields = array("registration_ids"=>$reg_id_array, 'data'=>$mesg,'priority' => 'high');
$payload = json_encode($fields);
$curl_session = curl_init();
curl_setopt($curl_session, CURLOPT_URL, $path_to_fcm);
curl_setopt($curl_session, CURLOPT_POST, true);
curl_setopt($curl_session, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl_session, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_session, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_session, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );
curl_setopt($curl_session, CURLOPT_POSTFIELDS, $payload);
$Qresult = curl_exec($curl_session);
echo '<pre>';
print_r($Qresult);
exit;
$httpcode = curl_getinfo($curl_session , CURLINFO_HTTP_CODE);
curl_close($curl_session);
if ($httpcode==200) {
echo "Success";
}
exit;
?>