本文介绍了通过利用API推送通知的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我试图使用API来使用推送通知,我没有得到没有我得到任何回应任何错误消息。
我已签Apple用PHP脚本推送通知服务
和应用在我的$ C $的变化C.因此,但仍然没有工作。
我不能够得到如何获得 SERVERID
,我在使用
$设备='fbb5a9c71066794d57fee33b4005a89f1bb8941a68660fd6e91f466be1299ab6'; //我的iPhone deviceToken
$有效载荷['APS'] =阵列(
'警报'=> 这是警报文本,
'徽章'=> 1,
声音= GT; '默认'
);$有效载荷['服务器'] =阵列(
SERVERID'=> 1,
'名'=> keyss.in
);$有效载荷= json_en code($负载);$ apnsCert ='apple_push_notification_production.pem';$ streamContext = stream_context_create();
stream_context_set_option($ streamContext,SSL,的local_cert',$ apnsCert);$ APNS =在stream_socket_client('SSL://gateway.sandbox.push.apple.com:2195',$错误,$为errorString,2,STREAM_CLIENT_CONNECT,$ streamContext);$ apnsMessage = CHR(0)。字符(0)。字符(32)。包(H *',str_replace函数('','',$设备))。字符(0)。字符(strlen的($有效载荷))。 $有效载荷;
FWRITE($ APNS,$ apnsMessage);// socket_close($ APNS);似乎是错在这里...
FCLOSE($ APNS);
获取错误:
解决方案
You are not getting any response because you are using the old binary notification format :
$apnsMessage = chr(0) . chr(0) . chr(32) . pack('H*', str_replace(' ', '', $device)) . chr(0) . chr(strlen($payload)) . $payload;
In order to get responses (responses are returned only in case of an error), use the enhanced format :
$apnsMessage = pack("C", 1) . pack("N", $apple_identifier) . pack("N", $apple_expiry) . pack("n", 32) . pack('H*', str_replace(' ', '', $deviceToken)) . pack("n", strlen($payload)) . $payload;
You can see sample code here.
这篇关于通过利用API推送通知的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!