Tag: callkit

带CallKit的系统调用屏幕

集成Amazon SNS和CallKit 苹果宣布在WWDC16上开放API,以将iOS上的本机呼叫屏幕与VoIP(IP语音)应用程序配合使用。 我们曾经发送推播通知来通知用户电话。 在iOS10中,第三方应用程序还可以使用CallKit通过本机呼叫屏幕通知用户。 我将总结我对CallKit经验。 抽象 设置Amazon SNS 使用PKPushRegistry在应用程序上进行初始设置以接收VoIP推送通知。 从Amazon SNS发送VoIP推送通知 使用CallKit显示系统调用屏幕 从Amazon SNS接收VoIP推送通知 设置Amazon SNS 应用程序必须在后台才能显示系统调用屏幕。 VoIP推送通知使我们可以唤醒后台应用程序。 当收到VoIP推送通知时,确保应用程序在后台运行。 这使我们可以启动VoIP呼叫。 我没有注意到与常规推送通知和本地通知有这种区别,最终花费了大量时间。 但是,由于在我从事此工作的那一刻(2016年8月),Parse和Firebase不支持VoIP推送通知,因此我决定使用亚马逊的推送通知服务SNS。 在SNS上设置VoIP推送通知的过程与常规推送通知的过程几乎相同。 首先要做的是设置证书。 您可以像常规推送通知一样,从Apple Developer网站创建VoIP推送证书。 选择“ VoIP服务证书”,下载证书,然后导出P12文件。 其次,您需要在SNS上创建一个应用程序。 从AWS仪表板中选择SNS。 然后,选择应用程序>创建平台应用程序。 然后在配置中输入所需的信息。 应用名称:您选择的应用名称 推送通知平台:Apple开发或Apple生产 推送证书类型:VoIP推送证书 选择P12文件:选择使用来自Apple Developer网站的证书创建的VoIP推送通知P12文件。 输入密码:输入创建p12文件时指定的密码 这就是SNS设置所需的全部。 当然,您需要将此连接到服务器以进行生产。 服务器应提供一个简单的API来连接两者。 在应用程序中进行配置以接收VoIP推送通知 下一步是配置iOS项目。 选择项目文件,然后为要允许其推送通知的目标启用“功能中的后台”。 选择“ IP语音和后台提取”,以便您可以接收VoIP推送通知并在后台处理必要的步骤。 现在,我们将使用PKPushRegistry获得设备令牌。 如下所示,我们将PKPushTypeVoIP设置为PKPushRegistry实例。 您指定为代理的实例将接收与VoIP推送通知相关的回调。 在设备令牌注册视图中,您还可以添加用户数据。 您可以添加用户ID等以支持向特定设备发送推送通知。 让我们向设备发送VoIP推送通知。 选择您要发送通知的设备。 单击“ […]

CallKit简介

CallKit iOS,iOS应用程序中的音频呼叫支持,iOS应用程序中的视频呼叫支持 在此博客中,我仅关注CallKit框架,在下一个博客中,我将介绍Intent扩展和PushKit框架。 开始吧! iOS上的生活并不总是适合VoIP应用程序开发人员。幸运的是,Apple在iOS 10中引入了CallKit来改变这一切! VoIP应用程序今天如何工作? 通过CallKit,您可以将系统服务(蓝牙,Siri,Face time,电话应用程序)与VoIP服务集成在一起。 它提供了电话应用程序的呼叫接口,您的VoIP服务需要照顾到后端通信。 对于传入和传出呼叫,CallKit显示与“电话”应用程序相同的界面,从而使您的应用程序具有更原始的外观。 通过CallKit,您可以对系统级别的行为做出适当的响应,例如“请勿打扰”,“低网络连接”。 除了处理呼叫,您还可以提供“呼叫目录”应用程序扩展,以提供呼叫者ID信息以及与您的服务关联的阻止号码的列表。 既然您知道了CallKit的全部CallKit ,那么让我们仔细看一下理解和利用它所需要的一些基本概念。 CXProvider创建一个CXProvider实例并在整个VoIP应用程序中使用,它的对象负责报告系统发生的带外通知。使用提供的配置初始化一个新的提供程序实例。 let provider: CXProvider = CXProvider (配置:type(of:self) 。providerConfiguration ) CXProviderConfiguration应用程序的提供程序配置,代表其CallKit功能,您可以配置以下属性: –提供者的本地化名称,例如:应用程序名称 – ringtoneSound ,应用程序捆绑中的资源名称,用作来电的铃声,例如:“ MyRingtone.aif” – MaximumCallGroups ,默认为2 – MaximumCallsPerCallGroup ,默认为5 –在每次呼叫结束时,是否应将此提供商的呼叫包括在系统的“最近使用”列表中(includeCallsInRecents)。 – SupportsVideo ,无论VoIP服务是否支持视频,默认为否 – SupportedHandleTypes (CXHandleType),例如:supportedHandleTypes = [.phoneNumber] 静态var providerConfiguration: CXProviderConfiguration {让localizedName = NSLocalizedString(“ APPLICATION_NAME”,注释:“应用程序名称”)let providerConfiguration = CXProviderConfiguration(localizedName:localizedName) […]

在ios 10.0中的Callkit

NSArray *arr=[[NSArray alloc]initWithObjects: @"+918801234567",@"+ 918801234568", nil]; 如何将ARR传递给CXCallDirectoryPhoneNumber phoneNumbers []

如何在iOS中集成和触发Callkit目标c

现在,我想将CallKit Framework iOS(10.0)集成到这个应用程序中,但是我现有的代码是Objective-C语言。 我search了很多论坛,但都是Swift语言。 我也尝试整合在iOS Swift中的音箱 https://developer.apple.com/library/content/samplecode/Speakerbox/Introduction/Intro.html 。 但我试图将swift文件桥接到我的项目中,像#import“productname-Swift.h”到我的.m文件中,而且我将#import“AudioController.h”放入我的productname-Bridging-Header中。 H这些和所有工作正常,什么是我的问题是调用方法没有触发我用下面的方法来触发在VOIP推电话didReceiveIncomingPushWith providerDelegate?.reportIncomingCall(uuid:uuid,句柄:句柄,hasVideo:hasVideo,完成:完成) 当应用程序处于非活动状态并处于后台状态时,无法进入该方法,如果处于活动状态,则不会担心bcz触发单独的视图控制器。 请告诉任何人!

禁用Callkitbutton

是否可以禁用CallKitbutton。 像下面的图像 – 我想禁用keypad mute等button,这意味着触摸不会在这个button上工作。 我怎样才能做到这一点。 我已经通过其他教程,但我很困惑。

如何将社交个人资料与CallKit API进行映射

现在我正在尝试将CallKit集成到现有的VoIP应用程序中。 根据API,通过CallKit报告的每个呼叫都有一个与之关联的句柄。 我们的应用程序的用户可以进行audio和video呼叫,这是build立在帐户之间,他们没有任何关联的“电话号码”,所以我们设置呼叫处理types为“通用”,并使用一些特殊的帐户标识符作为这些处理的值。 这些用户帐户不是用户友好的,不应该在UI中显示。 所以有一个自然的愿望,在通话logging中显示真实的用户名。 这是我们碰到路障的地方。 根据WWDC会议,社交个人资料将是集成CallKit的VoIP应用程序之间的一种链接,所以我的问题是如何创build社交个人资料并将其与Callkit API链接? 与几个VoIP应用程序检查后,我不认为这是创build一个新的联系人与这些信息的正确方法,因为我找不到他们在联系人。 任何意见/build议/帮助将不胜感激! 提前致谢。

如何使用CallKit进行非VoIP拨打?

我想从应用程序使用新的iOS 10 CallKit打电话,但使用默认的运营商。 可能吗? 如果是这样,怎么样? 目前使用: public void dial(String number) { NSURL url = new NSURL("tel://" + number); UIApplication.getSharedApplication().openURL(url); }

自定义来电屏幕像Truecaller IOS

是否有可能有一个function来显示自定义的来电屏幕,当来电正如truecaller应用程序到达时。 我已经提到这个 ,说这是不可能的。 我想知道如何显示custom view 。 任何想法相同,将不胜感激。 谢谢

方法didInvalidatePushTokenForType不会调用使用Twilio过期的令牌

我正在使用iOS的Twilio Voice Objective-C快速入门 。 创build访问令牌后,我可以注册TwilioVoice,如下所述: – #pragma mark – PKPushRegistryDelegate – (void)pushRegistry:(PKPushRegistry *)registry didUpdatePushCredentials:(PKPushCredentials *)credentials forType:(NSString *)type { NSLog(@"pushRegistry:didUpdatePushCredentials:forType:"); if ([type isEqualToString:PKPushTypeVoIP]) { self.deviceTokenString = [credentials.token description]; [[PhoneCallModel sharedInstanse] getAccessTokenResponse:^(NSString *accessToken) { [[TwilioVoice sharedInstance] registerWithAccessToken:accessToken deviceToken:self.deviceTokenString completion:^(NSError *error) { if (error) { NSLog(@"An error occurred while registering: %@", [error localizedDescription]); } else { NSLog(@"Successfully registered […]

如何在CallKit中使用CXStartCallAction isVideo属性和原生videobutton?

我试图找出当用户点击本地iOS通话屏幕中的videobutton时会发生什么。 我已经通过了几个教程,看看代码,它似乎不是一个委托方法或任何东西。 CXStartCallAction有一个属性: var isVideo: Bool ,但我似乎无法弄清楚它是如何使用的。 我注意到(在扬声器的示例项目中),它将显示从“扬声器video”更改为“扬声器audio”,但我假设它有其他用途。 更大的问题可能是“videobutton做什么?” 似乎只是开放,但不确定。