PHP的世博推送通知

问题描述 投票:2回答:2

我正在尝试使用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;


  ?>

它确实发送给特定用户,但它仍然一次发送大量通知?

php react-native notifications expo
2个回答
2
投票

试试这个

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

0
投票

没有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;
}
?>
© www.soinside.com 2019 - 2024. All rights reserved.