【问题标题】:apple push notification - PHP [closed]苹果推送通知 - PHP [关闭]
【发布时间】:2014-06-07 08:05:27
【问题描述】:

我在使用推送通知时遇到问题,在我使用开发时它可以工作,但是当我想真正使用它时,它就不起作用了。

ck 是为生产而设计的。

我用的时候结果是:Message successfully delivered但是我的手机收不到消息

<?php

pushNotification('wow2','DeviceToken');

function pushNotification($theMessage, $theDeviceToken)
{

        // Put your device token here (without spaces):
    $deviceToken = $theDeviceToken;     

    // Put your private key's passphrase here:
    $passphrase = 'Code';

    // Put your alert message here:
    $message = $theMessage;

    ////////////////////////////////////////////////////////////////////////////////

    $ctx = stream_context_create();
    stream_context_set_option($ctx, 'ssl', 'local_cert', 'ck.pem');
    stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);

    // Open a connection to the APNS server
    $fp = stream_socket_client(
        'ssl://gateway.push.apple.com:2195', $err,
        $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);

    if (!$fp)
        //exit("Failed to connect: $err $errstr" . PHP_EOL);
    exit("" . PHP_EOL);
    //echo 'Connected to APNS\n' . PHP_EOL;

    // Create the payload body
    $body['aps'] = array(
        'alert' => $message,
        'sound' => 'default'
        );

    // Encode the payload as JSON
    $payload = json_encode($body);

    // Build the binary notification
    $msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload;

    // Send it to the server
    $result = fwrite($fp, $msg, strlen($msg));

    if (!$result)
        echo 'Message not delivered' . PHP_EOL;
    else
        echo 'Message successfully delivered' . PHP_EOL;

    fclose($fp);


}
?>      

谁能看出有什么问题? :)

【问题讨论】:

    标签: php ios push-notification


    【解决方案1】:

    APNS 这里面临 3 种类型的问题

    1. 您的设备令牌不匹配
    2. 您的 .pem 不是有效的,原因是 .p12 和 .cer 文件已损坏多次,因此请删除 .p12 文件和 .cer 并重新创建一次。
    3. 不是一个值得的答案,但它会碰巧发生 -- 检查您的设备通知是ON/OFF

    【讨论】:

    【解决方案2】:

    我认为您的设备令牌有问题。如果您的服务器中有无效的设备令牌,它将不会收到通知。从服务器中删除无效的设备令牌后,它将起作用。

    同样的事情也发生在我身上,花了很长时间才找到解决办法。

    【讨论】:

    • 我刚刚和一些朋友一起尝试过,但还是不行:/
    • @Stof ok 使用苹果开发者控制台登录并检查你的应用程序是否启用了推送通知
    【解决方案3】:

    尝试使用您的设备移动令牌的硬编码设备令牌。

    然后在使用之前尝试使用变量或回显设备令牌。

    // 将您的设备令牌放在这里(不带空格):

    $deviceToken = '0f744707bebcf74f9b7c25d48e3358945f6aa01da5dd43487462c7eaf61bbad78';
    

    【讨论】:

    • 这就是我正在做的:)
    • 然后检查你的ck.pem生成过程并正确上传
    • 我已经用develop to完成了这个,我已经做了好几次检查它是否正确完成
    • 您是否尝试过使用其他设备/手机?并记住接受推送通知对话框 ok。也尝试重新启动您的设备。
    • 是的,尝试所有这些;/
    猜你喜欢
    • 1970-01-01
    • 2011-05-26
    • 1970-01-01
    • 2011-09-19
    • 2011-05-19
    • 2010-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多