Android中使用PHP的高优先级GCM消息?

时间:2016-06-27 22:19:17

标签: android json google-cloud-messaging

我的问题是......¿如何改变我的GCM优先级,就像google所说的那样?我看到的时候正在阅读 Google Developers ;

  

设置消息的优先级

     

您可以使用两种方法为下游消息分配传递优先级:普通和高优先级。传递高优先级和普通优先级消息的方式如下:

     

高优先级: GCM会尝试立即发送高优先级消息,允许GCM服务在可能的情况下唤醒休眠设备并打开与应用服务器的网络连接。例如,具有即时消息,聊天或语音呼叫警报的应用程序通常需要打开网络连接并确保GCM毫不拖延地将消息传递给设备。仅当消息对时间至关重要并且需要用户立即进行交互时才设置高优先级,并注意将消息设置为高优先级会导致电池消耗比普通优先级消息更多。

     

普通优先级:这是邮件传递的默认优先级。普通优先级消息不会打开睡眠设备上的网络连接,并且可能会延迟它们的传送以节省电池电量。对于时间敏感度较低的消息,例如新电子邮件或其他要同步的数据的通知,请选择正常的投放优先级。

在我想要发送通知的PHP中,我称之为函数:

function send_notification($con,$registatoin_ids,$idDestino,$titulo, $message, $nombreOrigenNotificacion, $dia, $mes, $anio, $idCancha, $idOrigen, $esComplejo) { 
    $url = 'https://android.googleapis.com/gcm/send';

    $fields = array(
        'data' =>array("idDestino" => $idDestino,"title" => $titulo,"message" => $message,"nombreOrigenNotificacion" => $nombreOrigenNotificacion,"dia" => $dia,"mes" => $mes,"anio" => $anio,"idCancha" => $idCancha,"idOrigen" => $idOrigen,"esComplejo" => $esComplejo),
        'registration_ids' => $registatoin_ids
    );
    $headers = array(
        'Authorization: key=' . apiKey,
        'Content-Type: application/json'
    );
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));
    $result = curl_exec($ch);
    if ($result === FALSE) {
        die('Curl failed: ' . curl_error($ch));
    }
    curl_close($ch);
    //echo $result;


}

//编辑: GCM通知在Android手机之间

所以.. 如何更改优先级GCM消息? 感谢

1 个答案:

答案 0 :(得分:0)

您可以在函数中添加$priority参数。如代码参考中所述 - add_action函数

  

<强> $优先

     

用于指定与特定操作关联的功能的执行顺序。较低的数字与先前的执行相对应,具有相同优先级的函数按照它们添加到操作的顺序执行。

     

默认值:10

Generate Notifications From Your Web App With the Pushover API中的示例代码如下所示:

// send notification to admin mobile device via pushover
public function notify($device,$title='',$message='',$url='',$urlTitle='',$priority=1,$sound='gamelan',$debug=false) {
  if ($device['send_email']<>Device::SEND_EMAIL) {
    // load pushover key from Settings
    $setting = Setting::model()->getSettings();
    $po = new Pushover();
    $po->setToken($setting['pushover_app_api_token']);
    $po->setUser($device['pushover_user_key']);
    $po->setDevice($device['pushover_device']);
    $po->setSound($sound);
    $po->setTitle($title);
    $po->setMessage($message);
    if ($url<>'') {
      $po->setUrl($url);      
    }
    if ($urlTitle<>'') {
      $po->setUrlTitle($urlTitle);
    }
    $po->setPriority($priority);
    $po->setTimestamp(time());
    $po->setDebug(true);
    $go = $po->send();
    if ($debug) {
      echo '<pre>';
      print_r($go);
      echo '</pre>';      
    }      
  }