1

Windows Phone 8 向けに開発しています。PHP を使用して、トーストとタイルのプッシュ通知を一度に送信する必要があります。トースト通知またはタイル通知を正常に受信できますが、これらの通知を組み合わせる必要があります。誰でもこの問題を解決する方法を教えてもらえますか?

私のコードは以下のとおりです

<?php
     class WindowsPhonePushPriority
    {
      const TileImmediately = 1;

    }

    class WindowsPhonePushClient
  {
private $device_url = '';
private $debug_mode = false;

function __construct($device_url)
{
    $image_url = 'Images/purple.jpg';
    $this->device_url = $device_url;

}

 public function send_tile_update($message1, $title, $priority =    WindowsPhonePushPriority::TileImmediately)
{
   $title = 'push from Bestin Uk';
    $msg = "<?xml version=\"1.0\" encoding=\"utf-8\"?>".
           "<wp:Notification xmlns:wp=\"WPNotification\">".
              "<wp:Tile>".
              "<wp:BackgroundImage>".$imageURL."</wp:BackgroundImage>".
              "<wp:Count>".$message1."</wp:Count>".
              "<wp:Title>".$title."</wp:Title>".
              "<wp:Param>/Receive.xaml?NavigatedFrom=push</wp:Param>".
              "</wp:Tile>".
           "</wp:Notification>";

    return $this->_send_push(array('X-WindowsPhone-Target: token','X-NotificationClass: ' . $priority,), $msg);
}

private function _send_push($headers, $msg)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $this->device_url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_HEADER, true); 
    curl_setopt($ch, CURLOPT_HTTPHEADER,    // Add these headers to all requests
        $headers + array(
                        'Content-Type: text/xml',
                        'Accept: application/*'
                        )
        ); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $msg);

    if ($this->debug_mode)
    {
        curl_setopt($ch, CURLOPT_VERBOSE, $this->debug_mode);
        curl_setopt($ch, CURLOPT_STDERR, fopen('debug.log','w'));
    }
    $output = curl_exec($ch);
    echo $output;
    curl_close($ch);

    return array(
        'X-SubscriptionStatus'     => $this->_get_header_value($output, 'X-SubscriptionStatus'),
        'X-NotificationStatus'     => $this->_get_header_value($output, 'X-NotificationStatus'),
        'X-DeviceConnectionStatus' => $this->_get_header_value($output, 'X-DeviceConnectionStatus')
        );
  }

 private function _get_header_value($content, $header)
 {
    return preg_match_all("/$header: (.*)/i", $content, $match) ? $match[1][0] : "";
 }
}


 ?>

結合されたコードを試しましたが、xml ペイロード エラーが発生することがあります

4

1 に答える 1

0

トーストとタイルのペイロードを 1 つの要求に結合することはできません。
各リクエストには、組み合わせたり複製したりできないカスタム ヘッダー値が必要なため、2 つのリクエストを送信する必要があります。

于 2013-10-03T09:58:41.557 に答える