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;
?>

0 ответов

Другие вопросы по тегам