【问题标题】:Using push notification using Api使用 Api 使用推送通知
【发布时间】:2013-07-17 11:18:59
【问题描述】:

我正在尝试使用 Api 使用推送通知,但我没有收到任何错误消息,也没有收到任何响应。

我已经检查了Apple Push Notification Service with PHP Script

并相应地在我的代码中应用了更改,但仍然无法正常工作。

我无法获得我必须在其中使用的serverId

$device = 'fbb5a9c71066794d57fee33b4005a89f1bb8941a68660fd6e91f466be1299ab6'; // My iphone deviceToken
$payload['aps'] = array(
    'alert' => 'This is the alert text',
    'badge' => 1,
    'sound' => 'default'
);

$payload['server'] = array(
    'serverId' => 1,
    'name' => 'keyss.in'
);

$payload = json_encode($payload);

$apnsCert = 'apple_push_notification_production.pem';

$streamContext = stream_context_create();
stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert);

$apns = stream_socket_client('ssl://gateway.sandbox.push.apple.com:2195', $error, $errorString, 2, STREAM_CLIENT_CONNECT, $streamContext);

$apnsMessage = chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $device)) . chr(0) . chr(strlen($payload)) . $payload;
fwrite($apns, $apnsMessage);

//socket_close($apns); seems to be wrong here ...
fclose($apns);
    

得到错误:

警告:stream_socket_client():无法连接到 ssl://gateway.sandbox.push.apple.com:2195(连接超时)

警告:fwrite() 期望参数 1 是资源,给定的布尔值

警告:fclose() 期望参数 1 是资源,给定的布尔值

【问题讨论】:

    标签: php ios push-notification apple-push-notifications


    【解决方案1】:

    您没有收到任何响应,因为您使用的是旧的二进制通知格式:

    $apnsMessage = chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $device)) . chr(0) . chr(strlen($payload)) . $payload;
    

    为了获得响应(响应仅在出错的情况下返回),请使用增强格式:

    $apnsMessage = pack("C", 1) . pack("N", $apple_identifier) . pack("N", $apple_expiry) . pack("n", 32) . pack('H*', str_replace(' ', '', $deviceToken)) . pack("n", strlen($payload)) . $payload;
    

    您可以看到示例代码here

    【讨论】:

    • 现在 $apple_identifier 和 $apple_expiry 是什么?
    • @Happy apple_identifier 是您分配给消息的 4 字节标识符。 apple_expiry 是一个 4 字节整数,用于确定 APNS 服务器在放弃之前尝试将通知传递给设备的时间。当您收到错误响应时,它将包含导致错误的通知的 4 字节标识符。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-18
    • 1970-01-01
    • 2015-05-12
    • 1970-01-01
    • 1970-01-01
    • 2015-08-19
    相关资源
    最近更新 更多