我将 Jitsi Flutter 插件与 8x8 的 Jitsi-as-a-Service 产品结合使用,将视频通话集成到我的移动应用程序中。
加入会议后,通话立即结束,Jitsi 关闭。日志表明底层 Jitsi Meet SDK 无法从 8x8 获取
config.js
:
E/JitsiMeetSDK(10937): [features/base/lib-jitsi-meet] Failed to load config from https://8x8.vc/vpaas-magic-cookie-<tenantID>/hello-world/config.js?room=vpaas-magic-cookie-<tenantID>hello-world Error(Error){"message":"loadScript error: undefined","stack":"index.android.bundle:538:817\[email protected]:284:423\nindex.android.bundle:284:1740\[email protected]:284:423\[email protected]:284:898\nindex.android.bundle:284:1047\[email protected]:111:155\nindex.android.bundle:111:882\[email protected]:117:661\[email protected]:117:1025\[email protected]:117:3100\ncallImmediates@[native code]\[email protected]:36:3247\nindex.android.bundle:36:1283\[email protected]:36:2939\[email protected]:36:1253\nvalue@[native code]\nvalue@[native code]"}
I/JitsiMeetSDK(10937): [features/overlay] The conference will be reloaded after 19 seconds.
D/JitsiMeetSDK(10937): ExternalAPI Sending event: CONFERENCE_TERMINATED with data: { NativeMap: {"url":"https://8x8.vc/vpaas-magic-cookie-<tenantID>/hello-world/vpaas-magic-cookie-<tenantID>hello-world","error":"Error: loadScript error: undefined"} }
E/ThemeUtils(10937): View class com.facebook.react.views.text.ReactTextView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
I/chatty (10937): uid=10179(com.example.app) identical 1 line
E/ThemeUtils(10937): View class com.facebook.react.views.text.ReactTextView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
D/JITSI_MEET_PLUGIN(10937): JitsiMeetPluginActivity.onConferenceTerminated: {error=Error: loadScript error: undefined, url=https://8x8.vc/vpaas-magic-cookie-<tenantID>/hello-world/vpaas-magic-cookie-<tenantID>hello-world}
D/JITSI_MEET_PLUGIN(10937): JitsiMeetEventStreamHandler.onConferenceTerminated
I/JitsiMeetSDK(10937): Conference terminated: {error=Error: loadScript error: undefined, event=onConferenceTerminated, url=https://8x8.vc/vpaas-magic-cookie-<tenantID>/hello-world/vpaas-magic-cookie-<tenantID>hello-world}
I/JitsiMeetSDK(10937): [features/base/connection] No connection found while disconnecting.
我按照官方 8x8 JaaS 文档了解如何在我的应用程序中配置 Jitsi:
_joinMeeting(String token, String userName) async {
FeatureFlag featureFlag = FeatureFlag();
featureFlag.welcomePageEnabled = false;
// ...
featureFlag.resolution = FeatureFlagVideoResolution.HD_RESOLUTION;
var options = JitsiMeetingOptions()
..serverURL = "https://8x8.vc"
..room = "vpaas-magic-cookie-<tenantID>/hello-world"
..subject = "Hello World"
..token = token
..userDisplayName = userName
..audioOnly = false
..audioMuted = true
..videoMuted = true
..featureFlag = featureFlag;
await JitsiMeet.joinMeeting(options, roomNameConstraints: Map());
}
它可以与公共
meet.jit.si
服务器完美配合,但不能与 8x8 的 JaaS 产品配合使用。我错过了什么?
TL;DR: 将 8x8 会议的完整 URL 设置为房间名称。
如果您遵循官方 8x8 Jaas 文档,您可能最终会遇到 Jitsi Flutter 无法从 8x8 服务器加载
config.js
。
此论坛评论提示人们可以通过 App Store 中的官方 Jitsi Meet 应用程序加入 8x8 会议,并使用完整的 8x8 会议 URL 作为房间名称。
事实上,这不仅适用于官方应用程序,也适用于 Jitsi Flutter 插件。使用下面的配置,您应该能够连接到 8x8 租户上的会议室。 请确保通过向
joinMeeting
传递空地图来禁用任何房间名称限制,否则 Jitsi Flutter 将拒绝您的房间名称!
_joinMeeting(String token, String userName) async {
FeatureFlag featureFlag = FeatureFlag();
featureFlag.welcomePageEnabled = false;
// ...
featureFlag.resolution = FeatureFlagVideoResolution.HD_RESOLUTION;
var options = JitsiMeetingOptions()
..serverURL = "https://8x8.vc"
..room = "https://8x8.vc/vpaas-magic-cookie-<tenantID>/<roomName>"
..subject = "Hello World"
..token = token
..userDisplayName = userName
..audioOnly = false
..audioMuted = true
..videoMuted = true
..featureFlag = featureFlag;
await JitsiMeet.joinMeeting(options, roomNameConstraints: Map());
}
希望这可以节省您一些时间。
我通过将 SSL 添加到 Flutter 和本机端,解决了 Failed to load config from -Jitsi Url- Error(TypeError)"message":"Network request failed" 错误。因为 jitsi meet join 功能是通过创建到本机端的桥梁来工作的。您集成到项目中的SSL仅涵盖Flutter。祝你好运。