我正在我的iOS应用程序中实现twilio的视频通话。问题是,我正在寻找一种方法来了解对应应用程序何时死亡,以向他发送VoIP推送通知。
我试图实现的解决方案是,当呼叫返回“用户不可用”错误时,我会告诉我的后端向对应方发送VoIP通知,此解决方案的问题在于我发现了一个twilio的错误,有时如果用户拒绝呼叫twilio的SDK返回一个错误的错误消息,说“用户不可用”,而不是带有“用户拒绝呼叫”消息的错误。因此,我无法知道用户是否真的不可用(发送VoiP通知),或者用户是否只是拒绝了呼叫
如何重现错误?1.连接两个具有固定身份id的客户端。例如“identity1”和“identity 2”。2.从“identitiy1”到“identiity2”进行呼叫,并从“ideentity2”拒绝。您将收到正确的错误消息“User rejects the call”3。在“identity2”中关闭应用程序而不调用UNLISTEN,只需关闭应用程序即可。4.然后在“identity2”中再次启动应用程序(如果需要更改令牌,但使用相同的标识id)。5.从“identity1”呼叫“identity 2”,然后从“ideentity 2”拒绝。您将收到错误的错误消息“用户不可用”,而不是“用户拒绝呼叫”。
这就是问题所在,如果我们不调用unlisten,twilio就不会删除旧客户端的实例。如果我无法区分用户何时不可用或何时拒绝呼叫,那么我就无法在真正需要时发送VoIP推送。
为了接收传入呼叫,您必须在每次启动应用程序时调用侦听
API。似乎您可能在侦听
后终止了应用,但在重新启动后,客户端上未调用侦听
。因此,当远程方发出出站呼叫时,它会收到 TWC错误代码协商参与者不可用
。
一旦会话客户端开始侦听传入呼叫,远程方应该会收到< code > TWCErrorCodeConversationRejected on reject。
换句话说,如果A呼叫B,而B没有在监听(即,没有在客户端上调用< code>listen),A将接收到“用户不可用”。
Swift中的示例:
/* Create an AccessManager - this provides a single place to update your Twilio
Access Token when using multiple Twilio SDKs */
var accessManager = TwilioAccessManager(token:self.accessToken, delegate:self)
// Create a Conversations Client and listen for IncomingInvites
var client = TwilioConversationsClient(accessManager: accessManager, delegate: self)
client!.listen()
// MARK: TwilioConversationsClientDelegate
// Selectively handle IncomingInvites based on the originator
func conversationsClient(conversationsClient: TwilioConversationsClient,
didReceiveInvite invite: TWCIncomingInvite) {
if (invite.from == "ringo") {
invite.reject()
} else {
/* See the "Specify Local Media Constraints when Creating a
Conversation" guide for instructions on constructing LocalMedia */
invite.acceptWithLocalMedia(self.localMedia!) { conversation, error in
self.conversation = conversation
self.conversation!.delegate = self
}
}
}
请让我知道这是否有帮助!
我正在使用一个webview加载一个具有视频通话功能的url。当我尝试发起视频通话时。我得到以下错误“权限被拒绝。请刷新页面并允许访问您的相机和麦克风”。 如果我给android CAMERA和Record_Audio的运行时权限。将启动视频呼叫,并将视频传输到计算机。但是在移动端,我不能像查看接收方的视频一样查看我的视频。它只显示getDefaultVideoPoster()。 我已经尝试过使用
我在Codeigniter框架中面临一个新问题。她是我最讨厌的人 这是控制器 模型是
在我的iOS应用程序中,我需要通知用户远程设备上的一些紧急事件。无论应用程序的状态如何,用户都需要获得警报:如果应用程序处于前台、后台模式,甚至被杀死。 根据Apple文档,只有“voip”后台模式允许“保持活动”功能在后台与服务器保持连接。但“voip”模式只允许用于真正的voip应用程序,我的应用程序不提供任何voip服务。因此,我认为我的案例的唯一选择是使用Apple推送通知。 当用户的iO
我正在尝试使用python连接到我的本地mysql系统。 我注意到我只能通过sudo /usr/bin/mysql -u root -p从控制台登录到我的mysql系统 我浏览了网络,对所有的建议感到非常困惑,没有一个对我有用。 就像我试过的 这给了我... … … … 我收到以下错误 …
问题内容: $ ./mysqladmin -u root -p ‘ 编辑 ‘ 输入密码: mysqladmin:在“ localhost”处连接到服务器失败错误: “对用户“ root” @“ localhost”的访问被拒绝(使用密码:是) 我怎样才能解决这个问题? 问题答案: 打开并编辑或,具体取决于您的发行版。 添加下 重启MySQL 您现在应该可以使用以下命令登录mysql 跑 设置新密码
我使用aws kinesis video stream webRTC在reactjs中进行视频聊天。一切都很好。但是我想把视频存储在s3 Bucket中。我应该如何实现这个视频存储?