我正在开发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
}