为什么推送通知不适用于 testflight生产设置?

问题描述

我已经在生产环境中测试了推送通知并且它有效,但是当我尝试将其放在 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 (将#修改为@)