如何使用pjsip接听来电时唤醒iOS应用

时间:2019-07-16 12:49:52

标签: ios asterisk sip voip pjsip

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

我尝试在星号上找到有关AGI的信息。并设置Firebase通知。现在注册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];
}

任何人都可以帮助设置整个流程。如何将令牌发送到服务器。如何在服务器上设置脚本。它将如何获得令牌?

1 个答案:

答案 0 :(得分:1)

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

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

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

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

在您的服务器上存储令牌。发生入站呼叫时,将其与APNS服务器API一起使用可激活您的应用。

然后,您的应用将启动并调用委托方法:

- (void)pushRegistry:(PKPushRegistry *)registry 
didReceiveIncomingPushWithPayload:(PKPushPayload *)payload 
             forType:(PKPushType)type 
withCompletionHandler:(void (^)(void))completion {
    // handle payload
}