Php iOS、iPhone和iPad

Php iOS、iPhone和iPad,php,ios,ipad,push-notification,Php,Ios,Ipad,Push Notification,我制作了一个具有推送通知功能的通用应用程序。我相信你读到这篇文章也会感到惊讶 在生产版应用商店构建中,我在iPad上收到推送消息,而在iPhone上还没有收到这样的通知 这个应用程序是为通用而构建的,所以当然代码比Appdelegate更为相同,iPad和iPhone都是一样的 我从去年开始制作iOS,但从未遇到过这样的问题 有一件事可以肯定,我的推送通知实现是正确的,否则我将永远不会在我的iPad上收到推送消息 有什么帮助吗 谢谢, 党 修正案: 请检查下面的PHP代码,相同的代码副本/过去的

我制作了一个具有推送通知功能的通用应用程序。我相信你读到这篇文章也会感到惊讶

在生产版应用商店构建中,我在iPad上收到推送消息,而在iPhone上还没有收到这样的通知

这个应用程序是为通用而构建的,所以当然代码比Appdelegate更为相同,iPad和iPhone都是一样的

我从去年开始制作iOS,但从未遇到过这样的问题

有一件事可以肯定,我的推送通知实现是正确的,否则我将永远不会在我的iPad上收到推送消息

有什么帮助吗

谢谢, 党

修正案:

请检查下面的PHP代码,相同的代码副本/过去的工作为我的另一个应用程序,这是不会的。 同样,若我在单个设备上发送推送,我将在所有设备上接收,但若我尝试使用循环发送到所有设备,我只在一个设备上接收。可能是桌子的第一排

$payload = json_encode($body);
for($i = 0; $i<count($deviceTokens); $i++) {
$msg = chr(0) . pack("n",32) . pack('H*', str_replace(' ', '',$deviceTokens[$i])) . pack("n",strlen($payload)) . $payload;
fwrite($fp, $msg);
}
fclose($fp);
这里我把echo放在for循环中,得到了所有的寄存器设备

for($i = 0; $i<count($deviceTokens); $i++) {

pushnotification_ios($deviceTokens, "Your Message");
}
在循环中调用此函数


您确定要分别发送给这两个设备吗?您是否要将消息发送到每个设备令牌?是的,发送到所有设备,甚至在我的其他iPads上接收到。我认为这不是苹果方面的问题,而是PHP服务器端的编码问题。从MySql开始,我用我的iPhone代币替换了我的DeviceTokeniPad,现在我在手机上收到了,而不是在iPad上。我想的是这是第一张唱片。因此,我调试了它,并得到了一个惊喜,它不仅仅是一个,它的工作/行为如预期。得到了它,它可能会得到DeviceToken问题,无论如何,如果你得到另一个应用程序设备令牌,如果你复制过去的代码通常会发生,那么这种问题将存在。我通过简单地从db中删除所有设备令牌来修复它。
function pushnotification_ios($device_token, $message){

        $passphrase = "Your_PEM_File_Password_Here";

        $ctx = stream_context_create();
        stream_context_set_option($ctx, 'ssl', 'local_cert', YOUR_PEM_FILE_PATH_HERE);
        stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);
    // use this when you in sandbox mode..
        $fp = stream_socket_client(
            'ssl://gateway.sandbox.push.apple.com:2195', $err,
        $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);
    // use this when you in development mode..
    //  $fp = stream_socket_client(
    //  'ssl://gateway.push.apple.com:2195', $err,
    //$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);

        $body['aps'] = array(
            'badge' => $badge,
            'alert' => $message,
            'sound' => 'default',
            'content-available' => '1'
        );
    //echo "<pre>"; print_r($body);
        $payload = json_encode($body);

        $msg = chr(0) . pack('n', 32) . pack('H*', $device_token) . pack('n', strlen($payload)) . $payload;

        $result = fwrite($fp, $msg, strlen($msg));  //echo "<pre>"; print_R($result);
        /*
        if (!$result){
            $data = array(
                'Message' => 'Message not delivered' . PHP_EOL
                );
            }  else {
        $data = array(
                'Message' => 'Message successfully delivered' . PHP_EOL
                );
        } //echo "<pre>"; print_R($result); */

        fclose($fp);
    return $result;
    }