2

我正在使用PKPushkitvoip 呼叫通知。

如果我的应用程序从后台被杀死,那么我将无法在内部收到通知:

func pushRegistry(_ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, forType type: PKPushType)

虽然如果应用程序在后台,通知正在工作。我已启用项目本身的以下设置。

1) 在功能内部,推送通知是开启的。

2) 背景模式开启:

一个。应用程序使用 AirPlay 播放音频或流式传输音频/视频。

湾。应用程序从网络下载内容。

C。应用程序下载内容以响应推送通知。

d。应用程序提供 IP 语音服务。

任何人都可以帮我找出我失踪的地方吗?

4

3 回答 3

1

当您的应用程序处于终止状态时,它可能会崩溃。

检查如何在终止状态下调试应用程序。

在此处输入图像描述

https://github.com/hasyapanchasara/PushKit_SilentPushNotification

于 2017-08-28T08:17:24.700 回答
0

在 iOS 13 上,应该调用一个新的 pushkit 委托方法:

func pushRegistry(_ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, for type: PKPushType, completion: @escaping () -> Void

它与原型末尾的完成处理程序的前一个(现已弃用)不同。

未能调用完成处理程序将禁止您的应用程序在后台或强制退出状态下接收 pushkit 通知。当应用程序处于前台时它仍然有效。

于 2020-03-25T14:53:55.727 回答
0

一般而言,VoIP 实施包含以下步骤:

  1. 添加 VoIP 功能
  2. 注册 voip-Push:
    private func registerForVoIPPushes() {
        voipRegistry = PKPushRegistry(queue: nil)
        voipRegistry?.delegate = self
        voipRegistry?.desiredPushTypes = [.voIP]
    }
  1. UNUserNotificationCenterDelegate 的实现
func pushRegistry(_ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, for type: PKPushType, completion: @escaping () -> Void)
  1. Offcourse服务器端部分实现

  2. !最隐蔽和可能的问题: 一旦应用程序收到 VoIP 通知并且没有将其报告给 CXProvider 对象,它就不会再收到通知,直到您重新安装它。因此,请务必报告您获得的每个 VoIP。

于 2021-09-05T18:55:07.040 回答