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