我正在开发iOS中的pjsip音频 call 软件电话应用程序。我希望有来电时打开我的应用程序。

我试图在星号上找到AGI。现在注册pushtry,pjsip上没有文档,下一步是什么

// Register for VoIP notifications
- (void) voipRegistration {
    dispatch_queue_t mainQueue = dispatch_get_main_queue();
    // Create a push registry object
    PKPushRegistry * voipRegistry = [[PKPushRegistry alloc] initWithQueue: mainQueue];
    // Set the registry's delegate to self
    voipRegistry.delegate = self;
    // Set the push type to VoIP
    voipRegistry.desiredPushTypes = [NSSet setWithObject:PKPushTypeVoIP];
}

我们有API用于使用APNS进行静默通知。这会以正常流程唤醒该应用。但是当IVR认为我的眼睛周围冒烟时。

本主题完全取决于星号的实现情况,我试图理解的场景是,当调解员尝试连接星号的IVR系统上已拨DTMF号码的 call 时,如何实现发送推送通知的代码。有人可以帮我吗?

最佳答案

您应该将voipRegistry存储为属性,否则将在方法末尾将其释放。

您的委托人(符合PKPushRegistryDelegate的对象)将收到 token 。

您可以实现此委托方法来获取 token 并将其发送到服务器:

- (void)pushRegistry:(PKPushRegistry *)registry
didUpdatePushCredentials:(PKPushCredentials *)pushCredentials
             forType:(PKPushType)type {
    // get credentials.token
    // create registration using pjsip_regc_register()
}

在您的服务器上存储 token 。当有入站 call 时,将其与APNS服务器API一起使用可激活您的应用程序。

然后您的应用将启动并调用委托方法:
- (void)pushRegistry:(PKPushRegistry *)registry
didReceiveIncomingPushWithPayload:(PKPushPayload *)payload
             forType:(PKPushType)type
withCompletionHandler:(void (^)(void))completion {
    // handle payload
}

10-07 14:12