问题描述
我已经在生产环境中测试了推送通知并且它有效,但是当我尝试将其放在 TestFlight 上以供测试人员测试时,它没有显示推送通知。
我在 testFlight 上长期使用生产认证和生产 apn url。从 2020 年 4 月左右开始,它不再起作用。
TestFlight 是否更新了政策?
push PHP 代码如下(仅.pem 文件和token 不同)。它适用于生产环境(从应用商店下载),不适用于 testflight。
<?PHP
// Production mode
$certificateFile = 'pappCk.pem';
$pushServer = 'ssl://gateway.push.apple.com:2195';
$FeedbackServer = 'ssl://Feedback.push.apple.com:2196';
// SandBox mode
//$certificateFile = 'apns-dev.pem';
//$pushServer = 'ssl://gateway.sandBox.push.apple.com:2195';
//$FeedbackServer = 'ssl://Feedback.sandBox.push.apple.com:2196';
$devicetoken = '......';
// push notification
$streamContext = stream_context_create();
stream_context_set_option($streamContext,'ssl','local_cert',$certificateFile);
$fp = stream_socket_client(
$pushServer,$error,$errorStr,100,STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT,$streamContext
);
// make payload
$payloadobject = array(
'aps' => array(
'alert' => 'Server Time:'.date('Y-m-d H:i:s'),'sound' => 'default','badge' => 3
),'custom_key' => 'custom_value'
);
$payload = json_encode($payloadobject);
$expire = time() + 3600;
$id = time();
if ($expire) {
// Enhanced mode
$binary = pack('CNNnH*n',1,$id,$expire,32,$devicetoken,strlen($payload)).$payload;
} else {
// Simple mode
$binary = pack('CnH*n',strlen($payload)).$payload;
}
$result = fwrite($fp,$binary);
fclose($fp);
?>
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)