Экспо Пуш Уведомление с PHP - PullRequest
0 голосов
/ 23 октября 2018

Я пытаюсь отправить Push-уведомление в свое собственное приложение, использующее PHP, приведенный ниже код отправляет слишком много пользователей, которые зарегистрировали свой токен, и одновременно отправляет большое количество уведомлений, хотя токен предназначен для определенного устройства, но он продолжает выдвигатьуведомление всем

$key = "ExponentPushToken[0GAEokJazChx21MOxeC1l2]";
$title = "title";
$interestDetails = ['https://exp.host/--/api/v2/push/send',$key];

  try{

      $expo = \ExponentPhpSDK\Expo::normalSetup();

  // Subscribe the recipient to the server
      $expo->subscribe($interestDetails[0], $interestDetails[1]);

  // Build the notification data

    $notification = ['title' => $title,'body' => $msg];

  // Notify an interest with a notification
   $expo->notify($notification);

  $status = 'success';
}catch(Exception $e){



}


   ?>

Я пытался изменить свой код следующим образом:

<?php

$key = "ExponentPushToken[0GAEokJazChx21MOxeC1l2]";
$title = "title";


  try{

      $expo = \ExponentPhpSDK\Expo::normalSetup();



  // Build the notification data

  $notification = ['to' => $key,'title' => $title,'body' => $msg];

  // Notify an interest with a notification
 $expo->notify('https://exp.host/--/api/v2/push/send',$notification);

  $status = 'success';
}catch(Exception $e){
    echo $e;
}




  echo $status;


  ?>

Он был отправлен определенному пользователю, но все равно продолжает отправлять большое количество уведомлений сразу?

Ответы [ 2 ]

0 голосов
/ 13 апреля 2019

Без expo php sdk это можно сделать таким образом.

  <?php

    $payload = array(
        'to' => 'ExponentPushToken[xxborxxxxxxxxxx]',
        'sound' => 'default',
        'body' => 'hello',
    );

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://exp.host/--/api/v2/push/send",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode($payload),
  CURLOPT_HTTPHEADER => array(
    "Accept: application/json",
    "Accept-Encoding: gzip, deflate",
    "Content-Type: application/json",
    "cache-control: no-cache",
    "host: exp.host"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
?>
0 голосов
/ 24 октября 2018

Попробуйте это

$key = "ExponentPushToken[0GAEokJazChx21MOxeC1l2]";
$userId = 'userId from your database';
$notification = ['title' => $title,'body' => $msg];
  try{

      $expo = \ExponentPhpSDK\Expo::normalSetup();
      $expo->notify($userId,$notification);//$userId from database
      $status = 'success';
}catch(Exception $e){
        $expo->subscribe($userId, $key); //$userId from database
        $expo->notify($userId,$notification);
        $status = 'new subscribtion';
}

  echo $status;
  ?>
...