saibotma / jitsi_meet_wrapper Goto Github PK
View Code? Open in Web Editor NEWJitsi Meet Plugin for Flutter. Wrapping JitsiMeetSDK for Android and iOS.
License: BSD 3-Clause "New" or "Revised" License
Jitsi Meet Plugin for Flutter. Wrapping JitsiMeetSDK for Android and iOS.
License: BSD 3-Clause "New" or "Revised" License
Should be pretty straight forward as it should be very close to what is done for iOS. Same I'll try to make a PR if you're ok with that :)
E/DartMessenger: Uncaught exception in binary message listener
java.net.MalformedURLException: no protocol:
at java.net.URL.(URL.java:601)
### RELEASE LOGS:
I/flutter ( 5491): JitsiMeetingOptions: JitsiMeetingOptions{roomNameOrUrl: jitsi-meet-wrapper-test-room, serverUrl: null, subject: My Plugin Test Meeting, token: , isAudioMuted: true, isAudioOnly: false, isVideoMuted: true, userDisplayName: Plugin Test User, userEmail: [email protected], userAvatarUrl: null, featureFlags: {}, configOverrides: null}
I/flutter ( 5491): onOpened
Result: App crashed
I have followed the step on readme but getting this error where trying to run the app:
Command CompileSwiftSources failed with a nonzero exit code
/Users/jaumard/.pub-cache/hosted/pub.dartlang.org/jitsi_meet_wrapper-0.0.1/ios/Classes/CustomPiPViewCoordinator.swift:64:69: warning: 'keyWindow' was deprecated in iOS 13.0: Should not be used for applications that support multiple scenes as it returns a key window across all connected scenes
let parentView = parentView ?? UIApplication.shared.keyWindow
^
/Users/jaumard/.pub-cache/hosted/pub.dartlang.org/jitsi_meet_wrapper-0.0.1/ios/Classes/CustomPiPViewCoordinator.swift:165:33: error: cannot find 'PiPViewCoordinator' in scope
in: Bundle(for: PiPViewCoordinator.self),
^~~~~~~~~~~~~~~~~~
When the meet starts, the Android device never gets audio or video. When pressing the video camera switch button (not mic) this log appears:
ExternalAPI Sending event: VIDEO_MUTED_CHANGED with data: { NativeMap: {"muted":0} }
I've only seen it in Android 12.
onClosed gets triggered but onConferenceTerminated does not when disconnecting the call
First of all, thx for updating the plugin. I wanted to ask if someone else have the issues with black screen video (when receive from a browser) and sending no video to other devices. I have this issue on both my iPhone 12 and Oneplus 9.
Mobile SDKs Changelog
6.0.0 (2022-07-08)
Android
iOS
Changes
BREAKING: External API scope has been removed
Add a pre-join screen
Add ability to move participants across rooms without being in them
Add show self-view button in overflow menu
Make sure Picture-in-Picture is only enabled in the conference screen
Car Mode UI improvements
Update the lobby UI
Update WebRTC to version 100
Fix landscape mode tile view
Fix janky scrolling in bottom sheets
Fix incorrect handling of private chat replies
Fix video context sheet not displaying
Navigation improvements
Numerous UI tweaks and improvements
Updated translations
Android
BREAKING: JitsiMeetFragment has been removed
BREAKING: Removed delegate methods, BroadcastReceiver is the only supported event mechanism now
Fix incorrect colors on MIUI 12 devices
Fix initial muted state in the ongoing notification
Fix crash starting foreground service
Set proper theme for JitsiMeetActivity
Relevant native dependencies:
react-native: 0.68.1
Full changelog
iOS
N/A
Full changelog
thanks for this feature its much needed and thanks for the effort but i tried it more than once it is not working in the new release
add constants
export const PREJOIN_PAGE_ENABLED = 'prejoinpage.enabled';
Hello sir, please i would love to get the timer of the meeting so as to be able to track the number time user spend on meeting?
when take screenshot app crashed in Ios and get this error :
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=2, address=0x16d3a3ff8)
frame #0: 0x0000000181cf5010 Foundation`probeGC + 36
Foundation`probeGC:
-> 0x181cf5010 <+36>: str x2, [sp, #0x8]
0x181cf5014 <+40>: mov x21, x1
0x181cf5018 <+44>: mov x22, x0
0x181cf501c <+48>: adrp x8, 497864
Target 0: (Runner) stopped.
i think this error happen when two package sit a layer in app.superLayer ,
where should i search for this .
targetSdkVersion 33
and
compileSdkVersion 33
When meeting is reconnected due to intenet issue then I get joined two times. Means there is a duplicate user with my same name in the meeting. If anyone faced this issue and solved it please share your solution. Thank you.
I am using version jitsi_meet_wrapper: ^0.0.1
I would be great to have an integration test for this package, to be sure it's working as expected.
I think for the beginning would be a test case where we run the example app, join the meeting, take a screenshot and compare this with the master screenshot great. It covers the integration with the native SDKs and checks if the user is able to join the meeting - and I think this is the most important thing.
We need to be sure that the Jitsi room is empty, because otherwise would be the UI a bit different. So generating a new room ID (like a uuid4
) for every test would be good.
We should be able to run the integration tests in the Android Emulator and iOS Simulator with GitHub Actions π
I already started to implement this integration test (https://github.com/nilsreichardt/jitsi_meet_wrapper/tree/integration-tests). But I'm currently I stuck when I try to compare the screenshot with the master screenshot. So I created a Flutter issue for help: flutter/flutter#103222
plz upgrade your sdk from 4.0.0 to 4.1.0 in jitsi. and plz add background notifyer that notify the meeting is running in background. plz sir plzzzz
Excellent work !!
It would be better if:
Reference: https://github.com/jitsi/jitsi-meet/blob/master/react/features/base/flags/constants.ts
Thank you very much for your help
How to auto join meeting on answer call when the iPhone is locked (like in Whatsapp)?
Current Flow:
When answer call, the meeting not yet joined.
It should have been able to join when I answer the call even I haven't clicked the icon (jitsi_meet_example)
When click app icon (jitsi_meet_example), and it joins the meeting.
Code Below
in AppDelegate:
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate, JMCallKitListener {
//var jitsiViewController: JitsiViewController?
var flutterResult: FlutterResult?
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
GeneratedPluginRegistrant.register(with: self)
let controller : FlutterViewController = window?.rootViewController as! FlutterViewController
let CHANNEL = FlutterMethodChannel(name: "com.flutter.callkit/callkit", binaryMessenger: controller.binaryMessenger)
CHANNEL.setMethodCallHandler { [unowned self] (methodCall, result) in
if methodCall.method == "callkit" {
guard let args = methodCall.arguments else { return }
let myArgs = args as? [String: Any]
let strUuid = myArgs?["uuid"] as? String
let strHandle = myArgs?["handle"] as? String
let strDisplayName = myArgs?["displayName"] as? String
let boolHasVideo = myArgs?["hasVideo"] as? Bool
let uuid = UUID(uuidString: strUuid!) ?? UUID()
print("real",uuid)
let backgroundTaskIdentifier =
UIApplication.shared.beginBackgroundTask(expirationHandler: nil)
//guard !JMCallKitProxy.hasActiveCallForUUID(uuid.uuidString) else { return }
JMCallKitProxy.enabled = true
//guard JMCallKitProxy.hasActiveCallForUUID(uuid.uuidString) else { return }
configureAudioSession()
JMCallKitProxy.configureProvider(localizedName: "Testing SDK", ringtoneSound: nil, iconTemplateImageData: nil)
DispatchQueue.main.asyncAfter(deadline: .now() + 5.0) {
JMCallKitProxy.reportNewIncomingCall(UUID: uuid, handle: strHandle, displayName: strDisplayName, hasVideo: boolHasVideo!, completion: {
(error) in UIApplication.shared.endBackgroundTask(backgroundTaskIdentifier)
})
}
//result("Hi, your request has successfull")
JMCallKitProxy.addListener(self)
flutterResult = result
}
}
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
func configureAudioSession() {
let session = AVAudioSession.sharedInstance()//AVAudioSession.sharedInstance()
do {
try session.setCategory(.playAndRecord)
try session.setMode(.voiceChat)
try session.setActive(true)
} catch let error {
Swift.print("configureAudioSession error: \(error)")
}
}
func performAnswerCall(UUID: UUID) {
DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) {
self.flutterResult!("gettoken")
}
print("performAnswerCall: \(UUID.uuidString)")
}
in Dart:
void callUuid(String uuid, String handle, String displayName, bool hasVideo) async {
var sendUuid = <String, dynamic> {
'uuid' : uuid,
'handle' : handle,
'displayName' : displayName,
'hasVideo' : hasVideo,
};
String value;
try {
value = await platform.invokeMethod("callkit", sendUuid);
if (value == "gettoken") {
//the code join the meeting
}
print(value);
} catch (e) {
print(e);
}
}
when adding a serverurl it doesnot override the default one any help
??
Line 29 in 6d7a0b1
pubspec.lock
is already in .gitignore
, also with the reason why we should not commit it for library packages (π) - is there a reason why pubspec.lock
is out-comment?
i get that error when try to start room , and app crashed ,
Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent.
Looks like it is being (incorrectly) mapped to toolbox.alwaysVisible
instead of toolbox.enabled
(jitsi_meet_wrapper_platform_interface/lib/method_channel_jitsi_meet_wrapper.dart
line 203)
Would be nice and shouldn't be too hard based on jitsi_meet works, I'll try to make a PR if I find time if you're open for it
* What went wrong:
Execution failed for task ':app:checkDevReleaseAarMetadata'.
> Could not resolve all files for configuration ':app:devReleaseRuntimeClasspath'.
> Could not resolve com.github.MatrixFrog:android-scalablevideoview:v1.0.4-jitpack.
Required by:
project :app > project :jitsi_meet_wrapper > org.jitsi.react:jitsi-meet-sdk:5.0.2 > com.facebook.react:react-native-video:5.2.0-jitsi-10226385
> Could not resolve com.github.MatrixFrog:android-scalablevideoview:v1.0.4-jitpack.
> Could not get resource 'https://www.jitpack.io/com/github/MatrixFrog/android-scalablevideoview/v1.0.4-jitpack/android-scalablevideoview-v1.0.4-jitpack.pom'.
> Could not GET 'https://www.jitpack.io/com/github/MatrixFrog/android-scalablevideoview/v1.0.4-jitpack/android-scalablevideoview-v1.0.4-jitpack.pom'.
> Connect to www.jitpack.io:443 [www.jitpack.io/149.56.28.39] failed: Connection refused (Connection refused)
I'm trying to set the default when joining a conversation opens in picture in picture mode. Can all of this be done?
plz add background notifier that notify the meeting is running in background.
I have integrated jitsi_meet_wrapper plugin in my project and published app on google play store. I got below mentioned error message from google :-
"Your app uses a bad version of WebRTC, which contains security vulnerabilities."
I am using :-
Flutter : 2.10.5
Dart: 2.16.2
jitsi_meet_wrapper: ^0.0.1
callkeep :0.3.2
.....
Please provide me the solution
Thank you
5.1.0 (2022-05-16)
Android
iOS
Changes
Add Car Mode
Added GIPHY integration
Revamp lobby UI
Update React Native to version 0.68.1
Update WebRTC to version M100
Stop reordering tiles in small meetings
Don't show raise hand button in menu if disabled
Don't disable screen-sharing button when in audio-only mode
Hide display name label in one to one meeting
Updated UI for thumbnail indicators
Fix last N getting stuck on 1
Fix private chat messages getting stuck
Fix navigation getting stuck in the connecting state
Fix lobby not showing up on subsequent tries
Fix joining breakout rooms
Fix participant list not taking enough space
Fix recording start button not being enabled
UI tweaks and fixes
Updated translations
Android
Fix crash when starting foreground service
JitsiMeetActivity now uses JitsiMeetView instead of JitsiMeetFragment
Fix back button behavior
Relevant native dependencies:
react-native: 0.68.1
Full changelog
iOS
Build SDK releases with bitcode
Fix not marking speaker as a selected device
Fix not showing the CarPlay audio interface
Fix cycle in dependencies with Xcode 13.3
Full changelog
On clicking join meeting, the following error is logged in the console.
The following MissingPluginException was thrown while activating platform stream on channel jitsi_meet_events:
MissingPluginException(No implementation found for method listen on channel jitsi_meet_events)
An implementation could look like this:
final uri = Uri.tryParse(link);
final mappedFragment = uri?.hasFragment ?? false
? Uri.splitQueryString(uri!.fragment)
: <String, String>{};
final configOverrides = mappedFragment.map((key, value) {
return MapEntry(
key.replaceFirst("config.", ""),
_castValue(value),
);
});
Hello Sir,
First of, I would love to Thank you for this awesome package, am currently using this package in a release version for my user and it's on playstore.
But there are some few technical issues that my users are having
Some device can't open the meeting
Some device are able to open the meeting but got stuck at "Connecting you to meeting"
When two participants are in the meeting the jitsi package it's saying "No Audio device is available" But Audio device is always available
Sometimes when pass meeting ID it does show null when meeting start.
Below are screenshot
Hello sir,
thanks for all u do!
please sir, how do I end a meeting programmatically?
i really need this
As the original Jitsi Flutter plugin doesn't support embedding it into a Flutter view, we created a fork that could do that (we needed to put our buttons on the call). We forked that from https://github.com/gunschu/jitsi_meet, but as that plugin is not maintained anymore, I wanted to suggest to merge that feature in this plugin instead (it would also be easier for us to maintain the project if it was included in this one). Would people be interested in doing this?
@saibotma Thanks for the library. I have checked in and it's working on Pixel XL API 31. It has saved me lots of time. Thanks again.
I am also getting logs for when any participants join, left, or any message arrives in the meeting.
Here are the logs for that:
D/JitsiMeetSDK( 7218): ExternalAPI Sending event: PARTICIPANT_LEFT with data: { NativeMap: {"participantId":"515e6b41"} }
D/JitsiMeetSDK( 7218): ExternalAPI Sending event: CHAT_MESSAGE_RECEIVED with data: { NativeMap: {"senderId":"83409ad1","isPrivate":false,"message":"yes please"} }
D/JitsiMeetSDK( 7218): ExternalAPI Sending event: PARTICIPANT_JOINED with data: { NativeMap: {"name":"tester meri","participantId":"cbc8a823","role":"moderator"} }
Are there any methods available for getting all these longs in your flutter example project? I like to store meetings and participants' data in my application. It will be great if you find it. Thank you.
You have mentioned in the GitLab repo that currently more options are not available same as ios and android in a flutter. Can you add in this repo?
Need this feature to share the screen immediately meeting start
On Android the onClosed callback of JitsiMeetingListener is not called when you close the picture in picture video call.
It is call correctly when not using picture in picture.
Jitsee version
jitsi_meet: 4.0.0
Describe the bug
I'm neither able to generate closed captions nor able to locate any option to do it in menu options.
To Reproduce
Steps to reproduce the behavior:
Join a meeting
Check that there are no captions available and that there is no option to generate them in the menu.
-->
Screenshots
image
Flutter doctor -v
[β] Flutter (Channel stable, 3.0.5, on Microsoft Windows [Version 10.0.22000.856], locale en-IN)
β’ Flutter version 3.0.5 at D:\Softwares\flutter
β’ Upstream repository https://github.com/flutter/flutter.git
β’ Framework revision f1875d570e (5 weeks ago), 2022-07-13 11:24:16 -0700
β’ Engine revision e85ea0e79c
β’ Dart version 2.17.6
β’ DevTools version 2.12.2
[β] Android toolchain - develop for Android devices (Android SDK version 32.0.0)
β’ Android SDK at C:\Users\ABHISHEK\AppData\Local\Android\sdk
β’ Platform android-32, build-tools 32.0.0
β’ Java binary at: D:\Softwares\Android studio\jre\bin\java
β’ Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7249189)
β’ All Android licenses accepted.
[β] Chrome - develop for the web
β’ Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe
[β] Visual Studio - develop for Windows (Visual Studio Build Tools 2019 16.11.8)
β’ Visual Studio at C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools
β’ Visual Studio Build Tools 2019 version 16.11.32002.261
β’ Windows 10 SDK version 10.0.19041.0
[β] Android Studio (version 2020.3)
β’ Android Studio at D:\Softwares\Android studio
β’ Flutter plugin can be installed from:
https://plugins.jetbrains.com/plugin/9212-flutter
β’ Dart plugin can be installed from:
https://plugins.jetbrains.com/plugin/6351-dart
β’ Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7249189)
[β] Connected device (5 available)
β’ RMX1971 (mobile) β’ 91e6e37b β’ android-arm64 β’ Android 11 (API 30)
β’ sdk gphone x86 (mobile) β’ emulator-5554 β’ android-x86 β’ Android 11 (API 30) (emulator)
β’ Windows (desktop) β’ windows β’ windows-x64 β’ Microsoft Windows [Version 10.0.22000.856]
β’ Chrome (web) β’ chrome β’ web-javascript β’ Google Chrome 104.0.5112.81
β’ Edge (web) β’ edge β’ web-javascript β’ Microsoft Edge 104.0.1293.54
[β] HTTP Host Availability
β’ All required HTTP hosts are available
Smartphone (please complete the following information):
Device: [e.g. RealMe (physical), Pixel4(emulator)]
Physical andEmulator
OS: Android 11 on both the devices
Additional context
I'm looking to generate closed captions that will enable people with hearing impairment to experience video calls.
First, the screen becomes black but the video camera is still on. When clicking on "close app"(ANR pop-up) the camera stops working.
Hi All, I see this issue is common, can someone please confirm if the Jitsi build on flutter can be installed on Android v12, and how to achieve that.
Already added the android:exported="true" in AndroidManifest but cant install on version 12, shows issue " there was a problem parsing the package".
Thanks
A declarative, efficient, and flexible JavaScript library for building user interfaces.
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. πππ
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google β€οΈ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.