首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >app关闭时Agora信令的实现

app关闭时Agora信令的实现
EN

Stack Overflow用户
提问于 2018-05-04 12:43:46
回答 2查看 1.8K关注 0票数 3

我目前正在研究Agora.io服务,该服务提供给我们

音频、视频、一对一和广播通信

在给定的示例的帮助下,我成功地实现了这些功能,并成功地添加了信令模块。问题是信令呼叫必须是主动的,才能访问它的所有功能,现在我想在应用程序关闭时访问所有信令功能,比如whatsapp和其他类型的应用程序,一种解决方案是提供信令类服务,但这不是专业的解决方案。

我想要一个有效的解决方案

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-07 17:04:46

这不能用任何第三方API来完成。这是苹果和谷歌提供的系统级功能。您必须使用CallKit (用于iOS)或ConnectionService (用于Android)来实现此功能。

票数 3
EN

Stack Overflow用户

发布于 2019-02-13 17:25:20

几天前我也做过同样的事。

对于iOS,您可以通过以下方式使用PushKit和CallKit:

.1。启用后台模式并检查voip。

  1. 导入Pushkit并实现PKPushRegistryDelegate函数。

登记推送工具如下:-

代码语言:javascript
运行
复制
  func registerPushkitToken() -> Void {
        pushRegistry = PKPushRegistry.init(queue: DispatchQueue.main)
        pushRegistry?.delegate = self
        pushRegistry?.desiredPushTypes = [.voIP]
    }

3.实现令牌功能

代码语言:javascript
运行
复制
func pushRegistry(_ registry: PKPushRegistry, didUpdate pushCredentials: 
     PKPushCredentials, for type: PKPushType) {

let tokenChars = pushCredentials.token.hexString()
 }
  1. 为解析通知实现以下函数 函数pushRegistry(_注册表: PKPushRegistry,didReceiveIncomingPushWith有效载荷: PKPushPayload,用于类型: PKPushType) { if let userInfo = payload.dictionaryPayload"userInfo“as?任何可选的:任何{}
  2. 实现提供者委托功能: 设providerConfiguration = CXProviderConfiguration(localizedName: appName) providerConfiguration.supportsVideo = true providerConfiguration.maximumCallGroups =1 providerConfiguration.maximumCallGroups=1 providerConfiguration.supportedHandleTypes = .generic

实现CXProviderDelegate函数

代码语言:javascript
运行
复制
func providerDidReset(_ provider: CXProvider) {
        print("Function: \(#function), line: \(#line)")

        sessionPool.removeAll()
    }

    func provider(_ provider: CXProvider, perform action: CXStartCallAction) {

        print("Function: \(#function), line: \(#line)")

        guard let session = pairedSession(of:action.callUUID) else {
            action.fail()
            return
        }

        let callUpdate = CXCallUpdate()
        callUpdate.remoteHandle = action.handle
        callUpdate.hasVideo = true
        callUpdate.localizedCallerName = callDetails.dispalyName;
        callUpdate.supportsDTMF = false
        provider.reportCall(with: action.callUUID, updated: callUpdate)

        delegate?.callCenter(self, startCall: session)
        action.fulfill()
    }

你也可以参考我这里的帖子。how to integrate Callkit with Agora VOiP in swift 4 iOS?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50175266

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档