如何使用 PHP 中的推送通知更新 Apple Wallet 通行证
Posted
技术标签:
【中文标题】如何使用 PHP 中的推送通知更新 Apple Wallet 通行证【英文标题】:How to update Apple Wallet pass using push notification in PHP 【发布时间】:2017-01-16 05:30:31 【问题描述】:我在 php 中使用 expiredate 参数进行传递。我想使用 Apple 推送通知更新传递。根据 Passbook 文档,您需要使用 Apple Push Notification Service 触发从 ios 设备拉取以更新 Passbook。
【问题讨论】:
如果您正在寻找复制/粘贴代码,那么您来错地方了。文档很清楚,我建议你自己尝试,如果遇到困难,请返回一个特定的编程问题。 你在问什么?您的声明“根据 Passbook 文档,您需要使用 Apple 推送通知服务触发从 iOS 设备拉取以更新 Passbook。”是正确的。 已经有很多答案可以解决您的问题。 ***.com/questions/15877496/…, ***.com/questions/34310956/update-passes-of-passbook. 是的,但我很困惑通知会自动更新通行证,还是只是通知用户更新通行证,其余的事情在 iOS 端进行。 通知会触发手机调用你的WebServiceURL,它必须返回一个需要更新的序列号列表,然后手机会发出第二次请求更新pass并且你的服务器必须返回编译的包.如前所述,update documentation 和 web service documentation 非常清晰。 【参考方案1】:这是我将通知推送到 APNS 的 PHP 代码。你可以参考。
$apnsHost = 'gateway.push.apple.com';
$apnsPort = 2195;
$apnsCert = base_path('certificates.pem');
$push_token = 'device token';
$passIdentify = 'pass indentify';
$payload = '';
$msg = chr(0) . pack('n', 32) . pack('H*', $push_token) . pack('n', strlen($payload)) . $payload . pack('n', strlen($passIdentify)) . $passIdentify;
$streamContext = stream_context_create();
stream_context_set_option($streamContext, 'ssl', 'local_cert', $apnsCert);
$apns = stream_socket_client('ssl://' . $apnsHost . ':' . $apnsPort, $error, $errorString, 2, STREAM_CLIENT_CONNECT, $streamContext);
fwrite($apns, $msg);
@socket_close($apns);
fclose($apns);
certificates.pem 与您在 .p12 扩展名中用于签署通行证的证书相同。因此,您需要使用以下代码将其导出为 .pem
$ cd ~/Desktop
$ openssl pkcs12 -in WenderCastPush.p12 -out WenderCastPush.pem -nodes -clcerts
根据本教程https://www.raywenderlich.com/123862/push-notifications-tutorial#comments.
【讨论】:
它当前是否在您的服务器上运行并通过推送更新通行证?因为我已经尝试过了,但它对我不起作用。有什么建议吗? @tahirwaseer 抱歉,这不是正确的答案。请试试这个***.com/questions/39849883/… Apple 推送通知服务不再支持二进制协议。请查看链接:developer.apple.com/news/?id=11042019a以上是关于如何使用 PHP 中的推送通知更新 Apple Wallet 通行证的主要内容,如果未能解决你的问题,请参考以下文章