iOS VoIP 推送通知 (PushKit)

Posted

技术标签:

【中文标题】iOS VoIP 推送通知 (PushKit)【英文标题】:iOS VoIP push notifications (PushKit) 【发布时间】:2017-04-26 15:41:27 【问题描述】:

我正在搜索有关 VoIP 推送通知的推送通知的信息。有些点我还不清楚:

1) 如果用户没有打开应用程序,然后他接到一个电话。有没有办法从通知中启动应用程序?

2) 应用程序如何等待特定事件?例如,我的设备如何知道他接到某人的电话?

3) 我使用来自https://github.com/Hitman666/ios-voip-push 的 Appdelegate 文件,但在我的情况下它不起作用(很多错误),here 是我得到的错误的预览。

谢谢

【问题讨论】:

见how to ask a question 这太宽泛了! 【参考方案1】:

1) 如果用户没有打开应用程序,然后他接到一个电话。有没有办法从通知中启动应用程序?

- 第一次用户必须点击应用程序图标并打开它,然后只有设备 ID 才能注册以接收推送工具包有效负载。然后无需打开应用程序。当应用程序处于终止状态并且您必须根据推送工具包有效负载安排本地通知时,它也可以工作。

2) 应用程序如何等待特定事件?例如,我的设备如何知道他接到某人的电话?

- 您必须根据推送工具包有效负载安排本地通知。

3) 我使用来自https://github.com/Hitman666/ios-voip-push 的 Appdelegate 文件,但在我的情况下它不起作用(很多错误),这是我得到的错误的预览。

- 参考以下代码

import UIKit
import PushKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate,PKPushRegistryDelegate 

    var window: UIWindow?


    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool 


        let types: UIRemoteNotificationType = [.Alert, .Badge, .Sound]
        application.registerForRemoteNotificationTypes(types)

        self.PushKitRegistration()

        return true
    

    //MARK: - PushKitRegistration

    func PushKitRegistration()
    

        let mainQueue = dispatch_get_main_queue()
        // Create a push registry object
        if #available(iOS 8.0, *) 

            let voipRegistry: PKPushRegistry = PKPushRegistry(queue: mainQueue)

            // Set the registry's delegate to self

            voipRegistry.delegate = self

            // Set the push type to VoIP

            voipRegistry.desiredPushTypes = [PKPushTypeVoIP]

         else 
            // Fallback on earlier versions
        


    


    @available(iOS 8.0, *)
    func pushRegistry(registry: PKPushRegistry!, didUpdatePushCredentials credentials: PKPushCredentials!, forType type: String!) 
        // Register VoIP push token (a property of PKPushCredentials) with server

        let hexString : String = UnsafeBufferPointer<UInt8>(start: UnsafePointer(credentials.token.bytes),
            count: credentials.token.length).map  String(format: "%02x", $0) .joinWithSeparator("")

        print(hexString)


    


    @available(iOS 8.0, *)
    func pushRegistry(registry: PKPushRegistry!, didReceiveIncomingPushWithPayload payload: PKPushPayload!, forType type: String!) 
        // Process the received push


    


获取有关如何为基于 VOIP 的应用程序集成 pushkit 的更多信息。

刚刚更新了 Swift 4.0 代码。

https://github.com/hasyapanchasara/PushKit_SilentPushNotification

【讨论】:

嘿,我在 voip 通知方面需要您的帮助。 好的,您的查询是什么? 当 voip 通知到来时应用没有打开

以上是关于iOS VoIP 推送通知 (PushKit)的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS8.0.2 上没有收到 Pushkit voip 推送通知

迁移到 iOS VoIP 推送通知

iOS 13 在后台没有收到 VoIP 推送通知

接收 PushKit VoIP 通知 iOS

拒绝来电推送后无法处理取消VOIP推送

iOS VoIP 推送负载是不是类似于静默通知的负载?