【问题标题】:How to update Apple Wallet pass using push notification in PHP如何使用 PHP 中的推送通知更新 Apple Wallet 通行证
【发布时间】:2017-01-16 05:30:31
【问题描述】:

我在 php 中使用 expiredate 参数进行传递。我想使用 Apple 推送通知更新传递。根据 Passbook 文档,您需要使用 Apple Push Notification Service 触发从 iOS 设备拉取以更新 Passbook。

【问题讨论】:

  • 如果您正在寻找复制/粘贴代码,那么您来错地方了。文档很清楚,我建议你自己尝试,如果遇到困难,请返回一个特定的编程问题。
  • 你在问什么?您的声明“根据 Passbook 文档,您需要使用 Apple 推送通知服务触发从 iOS 设备拉取以更新 Passbook。”是正确的。
  • 是的,但我很困惑通知会自动更新通行证,还是只是通知用户更新通行证,其余的事情在 iOS 端进行。
  • 通知会触发手机调用你的WebServiceURL,它必须返回一个需要更新的序列号列表,然后手机会发出第二次请求更新pass并且你的服务器必须返回编译的包.如前所述,update documentationweb service documentation 非常清晰。

标签: laravel-5 apple-push-notifications passbook wallet


【解决方案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.

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多