iOS的推送问题,ios13之后,苹果宣布更新接口之后,遇到的推送相关的一些问题。

6月17日,在做项目的推送问题时,更新了推送voip的接口,但是还是没有接收到推送。所以查阅了以下资料:我的项目包括短信推送和语音通话推送。短信推送用的APNS 远程推送,更新接口后没有问题,语音通话用的VoIP 推送,更新服务器接口后不能使用。
APNS 远程推送:指由苹果服务器发送的推送消息,带文字提示和语音提示,无法唤起 App。
APNS 远程推送 (普通消息推送) 表现为手机屏幕上弹窗以及文字提示,声音一般为系统铃声,该推送完全由系统处理,App 无法激活以及处理任何程序,铃声可以由 App 进行设置,时间长度最长为 30 秒
VoIP 远程推送:由苹果服务器发起,没有任和文字和铃声的展示,可以唤起 App 执行程序。
VoIP 推送 (PushKit 推送) 该推送没有任和提示,也没有弹窗和文字提示,只是将 App 唤起,App 可以执行代码。iOS 13 之前收到 VoIP 推送时由于苹果不强制 App 使用苹果 CallKit 系统库,用户点击后自动进入音视频接听界面。从 iOS13 开始苹果为防止 VoIP 推送被非来电功能滥用,禁止在非来电功能中使用 VoIP 推送,如果使用 VoIP 推送只能使用 iOS 系统的 CallKit.framework 库,如果不使用 iOS 系统的 CallKit.framework 库,App 在收到 VoIP 推送后会被杀掉,表现上就类似于没有收到 VoIP 推送。
由于苹果限制中国区域使用 iOS 系统的 CallKit.framework 库,导致 VoIP 推送功能也无法在苹果商店审核通过,所以将原有 VoIP 推送方案改为使用 APNS 远程推送的方式接收音视频信令。

相同点: 铃声和文字提示效果相同,点击通

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现iOS,需要遵循以下步骤: 1. 创建APNS证书 首先,你需要在苹果开发者中心创建一个APNS证书。这个证书将用于安全地将消息发iOS设备。 2. 获取设备Token 每个iOS设备都有一个唯一的设备Token,用于标识该设备。你需要在你的应用中获取该设备Token,并将其发到你的服务器。 3. 编写PHP代码 使用PHP编写代码,以便将消息发到APNS服务器。你需要使用APNS证书和设备Token来建立连接,并将消息发到APNS服务器。 以下是一个简单的PHP代码示例: ``` <?php // Put your device token here (without spaces): $deviceToken = 'YOUR_DEVICE_TOKEN_HERE'; // Put your private key's passphrase here: $passphrase = 'YOUR_PASSPHRASE_HERE'; // Put your alert message here: $message = 'Hello, world!'; //////////////////////////////////////////////////////////////////////////////// $ctx = stream_context_create(); stream_context_set_option($ctx, 'ssl', 'local_cert', 'YOUR_APNS_CERTIFICATE.pem'); stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase); // Open a connection to the APNS server $fp = stream_socket_client( 'ssl://gateway.sandbox.push.apple.com:2195', $err, $errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx); if (!$fp) exit("Failed to connect: $err $errstr" . PHP_EOL); echo 'Connected to APNS' . PHP_EOL; // Create the payload body $body['aps'] = array( 'alert' => $message, 'sound' => 'default' ); // Encode the payload as JSON $payload = json_encode($body); // Build the binary notification $msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) . $payload; // Send the notification to the server $result = fwrite($fp, $msg, strlen($msg)); if (!$result) echo 'Message not delivered' . PHP_EOL; else echo 'Message successfully delivered' . PHP_EOL; // Close the connection to the server fclose($fp); ?> ``` 在上面的代码中,你需要将以下变量替换为你自己的值: - YOUR_DEVICE_TOKEN_HERE:你的设备Token。 - YOUR_PASSPHRASE_HERE:你的APNS证书密码。 - YOUR_APNS_CERTIFICATE.pem:你的APNS证书文件名和路径。 - $message:你要发的消息。 4. 测试 运行PHP代码并测试。如果一切正常,你应该会收到一个通知。 注意:在生产环境中,你需要将APNS服务器地址更改为“gateway.push.apple.com”。在示例代码中,我们使用的是开发环境的APNS服务器地址“gateway.sandbox.push.apple.com”。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值