- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图让 pushkit voip 消息在应用程序关闭时工作。当应用程序在前台或后台时,调用工作并显示。但是在用户强制终止应用程序后,当收到通知时,应用程序终止并显示信号 9(被用户/ios 终止)。
我该如何解决这个问题?
我在我的应用程序中启用了后台获取、voip、音频和推送通知。还尝试删除所有 Unity 方法,将 Callkit 调用放在 PushRegistry 方法中,在收到通知时创建一个新的提供者,甚至订阅 UIApplicationDidFinishLaunchingNotification 事件,但没有任何效果。我已经做到了,因此该应用程序符合在收到 voip 通知时显示调用的要求。这是我的代码:
@objcMembers class CallPlugin: UIResponder, UIApplicationDelegate, PKPushRegistryDelegate, CXProviderDelegate {
static var Instance: CallPlugin!
var provider: CXProvider!
var registry:PKPushRegistry!
var uuid:UUID!
var callController: CXCallController!
//class entry point
public static func registerVoIPPush(_ message: String) {
Instance = CallPlugin()
//Pushkit
Instance.registry = PKPushRegistry(queue: DispatchQueue.main)
Instance.registry.delegate = Instance
Instance.registry.desiredPushTypes = [PKPushType.voIP]
//Callkit
let providerConfiguration = CXProviderConfiguration(localizedName: "testing")
providerConfiguration.supportsVideo = true
providerConfiguration.supportedHandleTypes = [.generic]
Instance.provider = CXProvider(configuration: providerConfiguration)
Instance.provider.setDelegate(Instance, queue: nil)
UnitySendMessage("ResponseHandler", "LogNative", "registration success")
}
//Get token
func pushRegistry( _ registry: PKPushRegistry, didUpdate credentials: PKPushCredentials, for type: PKPushType) {
if type == PKPushType.voIP {
let deviceTokenString = credentials.token.map { String(format: "%02.2hhx", $0) }.joined()
UnitySendMessage("ResponseHandler", "CredentialsRecieved",deviceTokenString)
}
}
//Get notification
func pushRegistry( _ registry: PKPushRegistry, didReceiveIncomingPushWith payload: PKPushPayload, for type:PKPushType, completion: @escaping () -> Void) {
//UnitySendMessage("ResponseHandler", "LogNative", "Got something push")
reportInComingCallWith(uuidString: "111", handle: "Paul", isVideo: false)
completion()
}
//show the call
func reportInComingCallWith(uuidString:String,handle:String,isVideo:Bool) {
//UnitySendMessage("ResponseHandler", "LogNative", "attempting call")
let callUpdate = CXCallUpdate()
callUpdate.remoteHandle = CXHandle(type: .generic, value: handle)
callUpdate.hasVideo = false
uuid = NSUUID() as UUID
provider.reportNewIncomingCall(with: uuid as UUID, update: callUpdate){ (error) in
if let error = error {
UnitySendMessage("ResponseHandler", "LogNative", "error in starting call"+error.localizedDescription)
}
}
}
最佳答案
问题是我的应用没有及时创建委托(delegate)和推送注册表对象来完全处理通知。
我通过覆盖应用委托(delegate)并将通知初始化放在 WillFinishLaunching 中解决了这个问题,如下所示:
-(BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(nullable NSDictionary<UIApplicationLaunchOptionsKey,id> *)launchOptions{
[CallPlugin registerVoIPPush:@"hmm"];
[super application:application willFinishLaunchingWithOptions:launchOptions];
return true;
}
这样,一切就绪,可以处理通知了。我试着先把它放在 DidFinishLaunching 中,但是通知已经太晚了,IOS 那时正在杀死我的应用程序。
关于强制关闭后收到 pushkit voip 通知时 IOS 应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61130352/
我正在尝试在我的 IOS 应用程序中使用 Sinch 实现应用程序到应用程序调用。我已经使用 Sinch 在我的 iOS 应用程序中实现了 Pushkit,但是当应用程序处于后台时,推送通知不起作用。
我正在使用 Apple 的 PushKit 开发 VoIP 应用程序。当应用程序处于后台甚至未运行时,我能够收到通知。但是,我不知道如何在必要时(例如有 VoIP 来电时)打开显示屏并调用电话。 最佳
我想知道我是否可以使用 pushkit voip 通知,即使我的应用程序不是 voip 应用程序。(通过它,我的意思是最终将它发布在应用程序商店中)我不想制作任何 voip调用,我只想使用它的功能来唤
如果我使用 pushkit 通知手机有新来电,我是否必须在有效负载中使用内容可用标签?或不?因为使用这个,有时应用程序似乎并不总是立即重新启动 最佳答案 PushKit 通知不需要负载中的任何特殊值即
我在这里挣扎了一段时间,这可能是我的错误,但我无法在任何地方找到它的答案。 我已经通过一些方式实现了 PushKit,但没有一个是有效的。 我添加了正确的后台模式,以正确的方式实现了回调,didUpd
我正在 IOS 上实现一个 VoIP 应用程序。我在我的应用程序上实现了 PushKit,一切正常。当我的设备没有网络(例如飞行模式)时,我不会收到任何推送通知(这没关系,因为我没有连接到任何服务器)
我正在为我的应用程序使用 CallKit。 - (void)pushRegistry:(PKPushRegistry *)registry didReceiveIncomingPushWithPayl
我的应用程序没有任何 VoIP 功能,例如音频/视频通话。如果我使用 VoIP 通知,苹果会拒绝我的申请吗?使用这个有什么限制吗? 我需要 VoIP 通知,因为它保证即使用户终止应用程序,应用程序也会
我正在为 VOIP 应用程序使用 pushkit 通知,但有时当设备锁定时我没有收到任何通知。我的实现有问题还是这可以正常发生? 编辑 05.04.2017: 我发现当设备处于省电模式时,您只会收到一
我正在使用 PushKit 和 CallKit 开发一个 VoIP 应用程序。我知道类似的问题在不同的论坛上经常被问到,但不幸的是从来没有真正得到回答。此外,这些帖子中的大部分都来自 2015 年左右
我对 iOS SIP 应用或者说 VOIP 应用的理解是: 它是服务器和设备之间的持久 TCP 连接。一旦调用请求到来,它就会与服务器建立 RTP 连接到其他设备。现在您可以在此连接上交换语音或其他数
将我的应用程序升级到 Xcode8/Swift 3 后,我不再收到来自 PKPushRegistryDelegate 的回调。 我已经验证了 Apple´s Voice Over IP (VoIP)
我正在实现 PushKit 适用于我的 iOS 10 VoIP 应用程序。 我在AppDelegate.swift 文件中写了这段代码: import PushKit @UIApplicationMa
当我从后台删除应用程序(使用开发人员 APNS)时收到 VoIP 推送通知时,我的应用程序会唤醒大约 10 分钟。 当我做同样的事情时,只是这次使用生产 APNS,我的应用程序会唤醒 8-10 秒。
我正在搜索有关 VoIP 推送通知的推送通知的信息。有一点我还不清楚: 1) 如果用户还没有打开应用程序,然后他接到一个电话。有没有办法从通知中启动应用程序? 2) 应用程序如何等待特定事件?例如,我
我想在我的应用程序(Voip 应用程序)中实现 PushKit 服务,但我有以下疑问:我看到我只能生成生产 voip 证书,如果我尝试在开发设备上测试 voip 推送通知服务,它是否有效? 这是我的实
在我的应用程序中,当应用程序在后台运行时,服务器会向应用程序发送一条消息。这是调用的方法: func pushRegistry(_ registry: PKPushRegistry, didRecei
我正在使用 PKPushkit 进行 voip 调用通知。 如果我的应用程序从后台被杀死,那么我将无法在内部接收通知: func pushRegistry(_ registry: PKPushRegi
我刚刚用简单通知格式和增强通知格式测试了 VoIP 推送通知,发现: 使用简单通知格式,我们的应用程序可以接收 VoIP 推送通知。 使用增强型通知格式,我们的 App 只能接收常规推送通知。 为什么
什么是 PushKit QoS 策略? policy对于常规推送通知,定义为存储转发。 Apple Push Notification service includes a default Quali
我是一名优秀的程序员,十分优秀!