speakerbox

更新时间:2023-01-03 21:33:30 阅读: 评论:0


2023年1月3日发(作者:snoopy猫)

CallKit的使⽤介绍

CallKit的功能介绍

CallKit可以帮我们的⽹络电话提供怎样更好的体验?

锁屏时,有⼀个来电,现在是这样的

就是⼀条普通的推送信息,看起来和iMessage的⼀条信息没有什么区别。

没有锁屏时,如下,都是需要点击后进⼊应⽤内再进⾏操作。

CallKit会带来怎样的改变呢,我们可以看下,

锁屏时,有⼀个来电

⾮锁屏时,有来电

接听后

让你的⽹络电话有类似iphone⾃带电话的体验,确实很cool

⽽且callkit还可以让你的在线电话应⽤和系统电话,FaceTime⾳频通话,甚⾄是其他⽹络电话相互作⽤

从系统通讯录,通话记录中打开你的电话应⽤

通过Siri,蓝⽛调起你的电话应⽤拨打电话。系统的免打扰设置对你的应⽤也是有效的。这就是CallKit。

CallKit的类和分⼯

CallKit有两个主要的类CXProvider和CXCallController

CXProvider可以将⼀些外来事件通知给系统

CXCallController可以让系统收到App的⼀些Request,⽤户的action,内部的事件。还可以完成上⾯说的与其他的电话应⽤进⾏交互的操作。

Provider想要和系统交互,通过CXCallUpdate来传递信息

系统想要Provider知道⽤户进⾏那种操作,通过CXAction来传递信息

controller想要系统知道⽤户进⾏了什么操作,通过CXTransaction承载信息

IncomingCall的Demo

先看⼀下接电话的例⼦

Demo中有两个⽐较关键的类SpeakerboxCallManager和SpeakerboxCall

SpeakerboxCallManager是通话的管理类,可以完成拨打电话,挂断电话等功能。

SpeakerboxCall是通话的Model类,保存通话的⼀些信息。

我们新创建⼀个ProviderDelegate,它实现了CXProviderDelegate。

初始化⽅法中,创建了CXProvider对象,设置了Delegate,如果没有⽤户授权的话,请求⽤户授权。

可以看到初始化CXProvider对象时还会进⾏⼀些配置,包括通话中UI上显⽰的应⽤的名字,是否⽀持视频,应⽤的icon。代码中配置每组中最多

有⼀个通话,也就是不会出现同时接听两个以上通话的情况。

下⾯看下当⼀个电话打进来的时候,我们应该怎样处理

⾸先,我们会接到推送通知

如果是voip类型的推送,我们可以解析到UUID(通话的唯⼀标识),handle(谁打的电话)

调⽤ProviderDelegate的⽅法,通知系统显⽰IncomingCall的全屏UI,

注意CXProvider通知系统来电话了,是通过CXCallUpdate传递的信息。

实际代码效果

当⽤户点击接听,我们还需要对CXProviderDelegate的代理⽅法进⾏处理

可以看到系统反馈的⽤户操作是CXAnswerCallAction,它是CXAction的⼀种。

CXAction有两种状态,出错调⽤fail(),成功调⽤fulfill()。这个操作是必须的,系统才能正确处理UI的显⽰和进⾏通话状态的控制。

当接听⽤户需要挂断电话的时候,同样是处理代理⽅法

这⾥还需要强调⼀点,在call的处理过程中,开发者还需要管理好AudioSession,具体可以参看Demo源码。

OutgoingCall的Demo

拨打电话的处理起来会稍微复杂⼀点,先看下⽣命周期⽰意图

我们看下SpeakerboxCallManager中拨打电话的实现

拨打电话的时候我们会⽣成⼀个CXTransaction,它包含⼀组CXAction,Demo中是CXStartCallAction。

调⽤CXCallController对象的request⽅法,请求StartCall。

当系统接受request,进⼊startcall状态后,会通过CXProviderDelegate的代理⽅法通知App,也就是Demo中的ProviderDelegate。

代码中会执⾏App拨打电话的逻辑,并且设置connecting和connected的回调block,这样才能保证call的⽣命周期处理,让CXProvider正确的

更新状态。

如果⽀持通过Siri或者电话通讯录等唤醒你的应⽤,进⾏拨打电话的操作,实现AppDelegate的⽅法。

实际效果如下

连接成功后

我们回到桌⾯,应⽤进⼊后台

可以看到系统上⽅会显⽰通话中的提⽰。点击后可以回到应⽤。

总结

CallKit到⽬前为⽌只提供了讲解视频,没提供编程指南,更多更复杂的功能可能需要等待具体的⽂档来了解了,⽐如同时有多个通话处理等。

本文发布于:2023-01-03 21:33:30,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/90/86648.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:speakerbox
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图