capacitor-jitsi-meet 2.1.2-beta.2 → 2.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,18 @@ Each version of the capacitor plugin uses a specific Jitsi SDK version. In iOS d
4
4
 
5
5
  See Jitsi-meet SDK [changelog](https://github.com/jitsi/jitsi-meet-release-notes/blob/master/CHANGELOG-MOBILE-SDKS.md)
6
6
 
7
+ # 2.1.2 (2022-02-08)
8
+
9
+ ## iOS
10
+
11
+ - uses Jitsi SDK 4.1.0.
12
+ - [iOS](https://github.com/jitsi/jitsi-meet/releases/tag/ios-sdk-4.1.0)
13
+
14
+ ## Android
15
+
16
+ - uses Jitsi SDK 4.1.0.
17
+ - [Android](https://github.com/jitsi/jitsi-meet/releases/tag/android-sdk-4.1.0)
18
+
7
19
  # 2.1.1 (2021-12-15)
8
20
 
9
21
  ## Android
package/README.md CHANGED
@@ -29,7 +29,7 @@ This Ionic Capacitor plugin is created to make video calls through the free, ope
29
29
  v2
30
30
  </td>
31
31
  <td>
32
- >= 1.3.7
32
+ <= 1.5.14
33
33
  </td>
34
34
  <td>
35
35
  until Sept 30, 2021
@@ -63,7 +63,7 @@ This plugin does not currently support web implementation. We recommend using th
63
63
 
64
64
  1. npm install capacitor-jitsi-meet
65
65
 
66
- 2. use it as a Capacitor Plugin
66
+ 2. use it as a [Capacitor Plugin](https://capacitorjs.com/docs/getting-started#adding-capacitor-to-your-app)
67
67
 
68
68
  ```javascript
69
69
  // On Capacitor 3
@@ -78,18 +78,22 @@ const { Jitsi } = Plugins;
78
78
 
79
79
  ```javascript
80
80
  const result = await Jitsi.joinConference({
81
- roomName: 'room1', // room identifier for the conference
82
- url: 'https://meet.jit.si' // endpoint of the Jitsi Meet video bridge,
83
- token: string; // jwt authentication token
84
- displayName: string; // user's display name
85
- email: string; // user's email
86
- avatarURL: string; // user's avatar url
87
- channelLastN: string; // last N participants allowed to join
88
- startWithAudioMuted: true, // start with audio muted
89
- startWithVideoMuted: false // start with video muted
90
- chatEnabled: false, // enable Chat feature
91
- inviteEnabled: false // enable Invitation feature
92
- callIntegrationEnabled: true // enable call integration (CallKit on iOS, ConnectionService on Android)
81
+ // required parameters
82
+ roomName: 'room1', // room identifier for the conference
83
+ url: 'https://meet.jit.si', // endpoint of the Jitsi Meet video bridge
84
+ // optional parameters
85
+ token: string, // jwt authentication token
86
+ displayName: string, // user's display name
87
+ email: string, // user's email
88
+ avatarURL: string, // user's avatar url
89
+ startWithAudioMuted: true, // start with audio muted, default: false
90
+ startWithVideoMuted: false, // start with video muted, default: false
91
+ chatEnabled: false, // enable Chat feature, default: true
92
+ inviteEnabled: false, // enable Invitation feature, default: true
93
+ callIntegrationEnabled: true, // enable call integration (CallKit on iOS, ConnectionService on Android), default: true
94
+ recordingEnabled: false, // enable recording feature, default: false
95
+ liveStreamingEnabled: false, // enable live streaming feature, default: false
96
+ screenSharingEnabled: false, // enable screen sharing feature, default: false
93
97
  });
94
98
 
95
99
  window.addEventListener('onConferenceJoined', () => {
@@ -103,11 +107,18 @@ await Jitsi.leaveConference();
103
107
 
104
108
  ```
105
109
 
106
-
107
110
  3. Build the project
108
111
 
112
+ ```
113
+ $ npm run build
114
+ ```
115
+
109
116
  4. Follow the deployment instructions for [Android](android/README.md) and [iOS](ios/README.md).
110
117
 
118
+ ## Sample React App for Android
119
+
120
+ You can see a [React Demo App](https://github.com/calvinckho/react-capacitor-jitsi-meet-sample) which runs the Jitsi meeting on the Android device
121
+
111
122
  ## Feature Requests and Jitsi SDK Customizations
112
123
 
113
124
  I appreciate those who use this plugin in their production apps and are funding this project as sponsors. Your sponsorship enables me to continue to maintain and roll out releases in a timely manner. Consider joining as a sponsor to get first-class support and consultation. For feature requests, create an issue with a label 'feature request'. I also offer paid consultation service to those needing to modify the Jitsi UI interface. To submit a request, create an issue and add the label 'sdk customization'.
package/android/README.md CHANGED
@@ -4,51 +4,20 @@ This plugin uses the Jitsi SDK for android. See the plugin [changelog](https://g
4
4
 
5
5
  ### Usage
6
6
 
7
- 1. npm install capacitor-jitsi-meet, then use it as a Capacitor Plugin
7
+ [Follow installation steps 1-3 here.](https://github.com/calvinckho/capacitor-jitsi-meet#usage)
8
8
 
9
- ```javascript
10
- // On Capacitor 3
11
- import { Jitsi } from 'capacitor-jitsi-meet';
9
+ 4. Follow [these steps](https://ionicframework.com/docs/developing/android#project-setup) to add Android to your project
12
10
 
13
- // On Capacitor 2
14
- import { Plugins } from '@capacitor/core';
15
- import 'capacitor-jitsi-meet';
11
+ 5. Let capacitor sync the projects using either of the following commands
16
12
 
17
- const { Jitsi } = Plugins;
18
13
  ```
19
-
20
- ```javascript
21
- const result: any = await Jitsi.joinConference({
22
- roomName: 'room1', // room identifier for the conference
23
- url: 'https://meet.jit.si' // endpoint of the Jitsi Meet video bridge
24
- token: string; // jwt authentication token
25
- displayName: string; // user's display name
26
- email: string; // user's email
27
- avatarURL: string; // user's avatar url
28
- channelLastN: string; // last N participants allowed to join
29
- startWithAudioMuted: true, // start with audio muted
30
- startWithVideoMuted: false // start with video muted
31
- chatEnabled: false, // enable Chat feature
32
- inviteEnabled: false // enable Invitation feature
33
- callIntegrationEnabled: true // enable call integration (CallKit on iOS, ConnectionService on Android)
34
- });
35
- console.log("join status", result.success);
36
-
37
- window.addEventListener('onConferenceJoined', () => {
38
- // do things here
39
- });
40
- window.addEventListener('onConferenceLeft', () => {
41
- // do things here
42
- });
43
-
44
- const result: any = await Jitsi.leaveConference();
45
- console.log("leave status": result.success);
46
-
14
+ npx cap update
15
+ ```
16
+ ```
17
+ npx cap sync
47
18
  ```
48
19
 
49
- 2. npx cap sync
50
-
51
- 3. In your android/build.gradle, add the Maven repository
20
+ 6. In your android/build.gradle, add the Maven repository
52
21
 
53
22
  ```gradle
54
23
  allprojects {
@@ -62,7 +31,7 @@ allprojects {
62
31
  }
63
32
  ```
64
33
 
65
- 4. In your android/app/build.gradle file, add Java 1.8 compatibility support
34
+ 6. In your android/app/build.gradle file, add Java 1.8 compatibility support
66
35
 
67
36
  ```gradle
68
37
  android {
@@ -74,7 +43,7 @@ android {
74
43
  ...
75
44
  ```
76
45
 
77
- Also, replace the line implementation 'ionic-team:capacitor-android:1+' with:
46
+ In older capacitor versions, replace the line implementation 'ionic-team:capacitor-android:1+' with:
78
47
 
79
48
  ```gradle
80
49
  dependencies {
@@ -83,14 +52,12 @@ dependencies {
83
52
  }
84
53
  ```
85
54
 
86
- 5. No need to register the plugin in your main Activity anymore.
55
+ 7. In older capacitor versions, if not already created, follow the [Ionic doc](https://capacitorjs.com/docs/android/updating#from-1-5-1-to-2-0-0) to create common variables.
87
56
 
88
- 6. For 2.0+, follow the [Ionic doc](https://capacitorjs.com/docs/android/updating#from-1-5-1-to-2-0-0) to create common variables.
89
-
90
- Create a android/variables.gradle file with this content
57
+ Create an android/variables.gradle file with this content
91
58
  ```gradle
92
59
  ext {
93
- minSdkVersion = 21
60
+ minSdkVersion = 23
94
61
  compileSdkVersion = 29
95
62
  targetSdkVersion = 29
96
63
  androidxAppCompatVersion = '1.1.0'
@@ -108,9 +75,13 @@ dependencies {
108
75
  ```
109
76
  In android/build.gradle file, add apply from: "variables.gradle" as shown [here](https://github.com/ionic-team/capacitor/blob/master/android-template/build.gradle#L18).
110
77
 
111
- 7. Build it in Android Studio
78
+ 9. Build it in Android Studio
79
+
80
+ ```
81
+ ionic capacitor open android
82
+ ```
112
83
 
113
- 8. If upgrading from previous versions of this plugin you may receive this error: `Error: Unfortunately you can't have non-Gradle Java modules and > Android-Gradle modules in one project`. Follow these steps to resolve it:
84
+ 10. If upgrading from previous versions of this plugin you may receive this error: `Error: Unfortunately you can't have non-Gradle Java modules and > Android-Gradle modules in one project`. Follow these steps to resolve it:
114
85
 
115
86
  a. In Android Studio Go to File -> Invalidate Caches/Restart.
116
87
 
@@ -3,7 +3,7 @@
3
3
  <application android:theme="@style/AppTheme">
4
4
  <activity android:name="com.capacitor.jitsi.plugin.JitsiActivity"
5
5
  android:excludeFromRecents="true"
6
- android:supportsPictureInPicture="true"
6
+ android:supportsPictureInPicture="false"
7
7
  android:resizeableActivity="true"
8
8
  android:launchMode="singleTask"
9
9
  android:theme="@style/AppTheme.NoActionBar"
@@ -40,6 +40,9 @@ public class Jitsi extends Plugin {
40
40
  Boolean chatEnabled = call.getBoolean("chatEnabled");
41
41
  Boolean inviteEnabled = call.getBoolean("inviteEnabled");
42
42
  Boolean callIntegrationEnabled = call.getBoolean("callIntegrationEnabled");
43
+ Boolean recordingEnabled = call.getBoolean("recordingEnabled");
44
+ Boolean liveStreamingEnabled = call.getBoolean("liveStreamingEnabled");
45
+ Boolean screenSharingEnabled = call.getBoolean("screenSharingEnabled");
43
46
 
44
47
  receiver = new JitsiBroadcastReceiver();
45
48
  receiver.setModule(this);
@@ -72,6 +75,12 @@ public class Jitsi extends Plugin {
72
75
  if(callIntegrationEnabled == null) {
73
76
  callIntegrationEnabled = true;
74
77
  }
78
+ if(recordingEnabled == null){
79
+ recordingEnabled = false;
80
+ }
81
+ if(screenSharingEnabled == null){
82
+ screenSharingEnabled = false;
83
+ }
75
84
  Timber.tag(TAG).v("display url: %s", url);
76
85
 
77
86
  Intent intent = new Intent(getActivity(), JitsiActivity.class);
@@ -86,6 +95,11 @@ public class Jitsi extends Plugin {
86
95
  intent.putExtra("chatEnabled", chatEnabled);
87
96
  intent.putExtra("inviteEnabled", inviteEnabled);
88
97
  intent.putExtra("callIntegrationEnabled", callIntegrationEnabled);
98
+ intent.putExtra("recordingEnabled", recordingEnabled);
99
+ if(liveStreamingEnabled != null){
100
+ intent.putExtra("liveStreamingEnabled", Boolean.parseBoolean(liveStreamingEnabled));
101
+ }
102
+ intent.putExtra("screenSharingEnabled", screenSharingEnabled);
89
103
 
90
104
  getActivity().startActivity(intent);
91
105
 
@@ -61,6 +61,9 @@ public class JitsiActivity extends JitsiMeetActivity {
61
61
  Boolean chatEnabled = getIntent().getBooleanExtra("chatEnabled", false);
62
62
  Boolean inviteEnabled = getIntent().getBooleanExtra("inviteEnabled", false);
63
63
  Boolean callIntegrationEnabled = getIntent().getBooleanExtra("callIntegrationEnabled", false);
64
+ Boolean recordingEnabled = getIntent().getBooleanExtra("recordingEnabled", false);
65
+ Boolean liveStreamingEnabled = getIntent().getBooleanExtra("liveStreamingEnabled", false);
66
+ Boolean screenSharingEnabled = getIntent().getBooleanExtra("screenSharingEnabled", false);
64
67
 
65
68
  String displayName = getIntent().getStringExtra("displayName");
66
69
  String email = getIntent().getStringExtra("email");
@@ -93,6 +96,9 @@ public class JitsiActivity extends JitsiMeetActivity {
93
96
  .setFeatureFlag("chat.enabled", chatEnabled)
94
97
  .setFeatureFlag("invite.enabled", inviteEnabled)
95
98
  .setFeatureFlag("call-integration.enabled", callIntegrationEnabled)
99
+ .setFeatureFlag("recording.enabled", recordingEnabled)
100
+ .setFeatureFlag("live-streaming.enabled", liveStreamingEnabled)
101
+ .setFeatureFlag("android.screensharing.enabled", screenSharingEnabled)
96
102
  //.setAudioOnly(false)
97
103
  .setUserInfo(userInfo)
98
104
  .build();
@@ -155,8 +161,12 @@ public class JitsiActivity extends JitsiMeetActivity {
155
161
  super.onDestroy();
156
162
  }
157
163
 
158
- // detect if PIP window is closed. If closed, dispose view and finish activity
159
- @Override
164
+ // The following handler is triggered when the app transitions from the background to the foreground.
165
+ // For PIP users, uncomment the code to try PIP mode. Also change android:supportsPictureInPicture="true" in AndroidManifest.xml
166
+ // When PIP is enabled, it can detect when the PIP window is closed by caller so it can terminate the call correctly.
167
+ // TODO: Some users who enabled PIP report that it doesn't always terminate the call correctly.
168
+ // Therefore the PIP mode is disabled in the published plugin until this issue is resolved
169
+ /*@Override
160
170
  public void onStop() {
161
171
  Timber.d("Picture-in-picture is stopped. Disposing view and finishing activity.");
162
172
  if (view != null) {
@@ -166,9 +176,9 @@ public class JitsiActivity extends JitsiMeetActivity {
166
176
  }
167
177
  on("onConferenceLeft"); // intentionally uses the obsolete onConferenceLeft in order to be consistent with iOS deployment and broadcast to JS listeners
168
178
  super.onStop();
169
- }
179
+ }*/
170
180
 
171
- // for logging only. nothing is done when picture-in-picture mode is toggled
181
+ // for logging entering and leaving PIP only
172
182
  @Override
173
183
  public void onPictureInPictureModeChanged(boolean isInPictureInPictureMode) {
174
184
  super.onPictureInPictureModeChanged(isInPictureInPictureMode);
@@ -2,29 +2,35 @@ export interface JitsiPlugin {
2
2
  joinConference(options: {
3
3
  roomName: string;
4
4
  url: string;
5
- token: string;
6
- channelLastN: string;
7
- displayName: string;
8
- email: string;
9
- avatarURL: string;
10
- startWithAudioMuted: boolean;
11
- startWithVideoMuted: boolean;
12
- chatEnabled: boolean;
13
- inviteEnabled: boolean;
14
- callIntegrationEnabled: boolean;
5
+ token?: string;
6
+ channelLastN?: string;
7
+ displayName?: string;
8
+ email?: string;
9
+ avatarURL?: string;
10
+ startWithAudioMuted?: boolean;
11
+ startWithVideoMuted?: boolean;
12
+ chatEnabled?: boolean;
13
+ inviteEnabled?: boolean;
14
+ callIntegrationEnabled?: boolean;
15
+ recordingEnabled?: boolean;
16
+ liveStreamingEnabled?: boolean;
17
+ screenSharingEnabled?: boolean;
15
18
  }): Promise<{
16
19
  roomName: string;
17
20
  url: string;
18
- token: string;
19
- channelLastN: string;
20
- displayName: string;
21
- email: string;
22
- avatarURL: string;
23
- startWithAudioMuted: boolean;
24
- startWithVideoMuted: boolean;
25
- chatEnabled: boolean;
26
- inviteEnabled: boolean;
27
- callIntegrationEnabled: boolean;
21
+ token?: string;
22
+ channelLastN?: string;
23
+ displayName?: string;
24
+ email?: string;
25
+ avatarURL?: string;
26
+ startWithAudioMuted?: boolean;
27
+ startWithVideoMuted?: boolean;
28
+ chatEnabled?: boolean;
29
+ inviteEnabled?: boolean;
30
+ callIntegrationEnabled?: boolean;
31
+ recordingEnabled?: boolean;
32
+ liveStreamingEnabled?: boolean;
33
+ screenSharingEnabled?: boolean;
28
34
  }>;
29
35
  leaveConference(options: {}): Promise<{}>;
30
36
  }
package/dist/esm/web.d.ts CHANGED
@@ -4,29 +4,35 @@ export declare class JitsiWeb extends WebPlugin implements JitsiPlugin {
4
4
  joinConference(options: {
5
5
  roomName: string;
6
6
  url: string;
7
- token: string;
8
- channelLastN: string;
9
- displayName: string;
10
- email: string;
11
- avatarURL: string;
12
- startWithAudioMuted: boolean;
13
- startWithVideoMuted: boolean;
14
- chatEnabled: boolean;
15
- inviteEnabled: boolean;
16
- callIntegrationEnabled: boolean;
7
+ token?: string;
8
+ channelLastN?: string;
9
+ displayName?: string;
10
+ email?: string;
11
+ avatarURL?: string;
12
+ startWithAudioMuted?: boolean;
13
+ startWithVideoMuted?: boolean;
14
+ chatEnabled?: boolean;
15
+ inviteEnabled?: boolean;
16
+ callIntegrationEnabled?: boolean;
17
+ recordingEnabled?: boolean;
18
+ liveStreamingEnabled?: boolean;
19
+ screenSharingEnabled?: boolean;
17
20
  }): Promise<{
18
21
  roomName: string;
19
22
  url: string;
20
- token: string;
21
- channelLastN: string;
22
- displayName: string;
23
- email: string;
24
- avatarURL: string;
25
- startWithAudioMuted: boolean;
26
- startWithVideoMuted: boolean;
27
- chatEnabled: boolean;
28
- inviteEnabled: boolean;
29
- callIntegrationEnabled: boolean;
23
+ token?: string;
24
+ channelLastN?: string;
25
+ displayName?: string;
26
+ email?: string;
27
+ avatarURL?: string;
28
+ startWithAudioMuted?: boolean;
29
+ startWithVideoMuted?: boolean;
30
+ chatEnabled?: boolean;
31
+ inviteEnabled?: boolean;
32
+ callIntegrationEnabled?: boolean;
33
+ recordingEnabled?: boolean;
34
+ liveStreamingEnabled?: boolean;
35
+ screenSharingEnabled?: boolean;
30
36
  }>;
31
37
  leaveConference(options: {}): Promise<{}>;
32
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,MAAM,OAAO,QAAS,SAAQ,SAAS;IAErC,aAAa;IACL,cAAc,CAAC,OAatB;;YAcG,MAAM,IAAI,CAAC,WAAW,CAAC,kGAAkG,CAAC,CAAC;QAC/H,CAAC;KAAA;IAAA,CAAC;IACA,aAAa;IACT,eAAe,CAAC,OAAW;;YAC7B,MAAM,IAAI,CAAC,WAAW,CAAC,kGAAkG,CAAC,CAAC;QAC/H,CAAC;KAAA;IAAA,CAAC;CACH;AAED,MAAM,KAAK,GAAG,IAAI,QAAQ,EAAE,CAAC;AAE7B,OAAO,EAAE,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,MAAM,OAAO,QAAS,SAAQ,SAAS;IAErC,aAAa;IACL,cAAc,CAAC,OAgBtB;;YAiBG,MAAM,IAAI,CAAC,WAAW,CAAC,kGAAkG,CAAC,CAAC;QAC/H,CAAC;KAAA;IAAA,CAAC;IACA,aAAa;IACT,eAAe,CAAC,OAAW;;YAC7B,MAAM,IAAI,CAAC,WAAW,CAAC,kGAAkG,CAAC,CAAC;QAC/H,CAAC;KAAA;IAAA,CAAC;CACH;AAED,MAAM,KAAK,GAAG,IAAI,QAAQ,EAAE,CAAC;AAE7B,OAAO,EAAE,KAAK,EAAE,CAAC"}
@@ -20,6 +20,9 @@ public class JitsiMeetViewController: UIViewController {
20
20
  var chatEnabled: Bool = true
21
21
  var inviteEnabled: Bool = true
22
22
  var callIntegrationEnabled: Bool = true
23
+ var screenSharingEnabled: Bool = false
24
+ var recordingEnabled: Bool = false
25
+ var liveStreamingEnabled: Bool = false
23
26
  var email: String? = nil
24
27
  var displayName: String? = nil
25
28
  var avatarUrl: String? = nil
@@ -62,6 +65,9 @@ public class JitsiMeetViewController: UIViewController {
62
65
  builder.setFeatureFlag("chat.enabled", withBoolean: self.chatEnabled)
63
66
  builder.setFeatureFlag("invite.enabled", withBoolean: self.inviteEnabled)
64
67
  builder.setFeatureFlag("call-integration.enabled", withBoolean: self.callIntegrationEnabled)
68
+ builder.setFeatureFlag("ios.screensharing.enabled", withBoolean: self.screenSharingEnabled)
69
+ builder.setFeatureFlag("ios.recording.enabled", withBoolean: self.recordingEnabled)
70
+ builder.setFeatureFlag("live-streaming.enabled", withBoolean: self.liveStreamingEnabled)
65
71
 
66
72
  builder.userInfo = userInfo
67
73
  })
@@ -38,6 +38,9 @@ public class Jitsi: CAPPlugin {
38
38
  self.jitsiMeetViewController.displayName = call.options["displayName"] as? String ?? nil
39
39
  self.jitsiMeetViewController.avatarUrl = call.options["avatarURL"] as? String ?? nil
40
40
  self.jitsiMeetViewController.callIntegrationEnabled = call.options["callIntegrationEnabled"] as? Bool ?? true
41
+ self.jitsiMeetViewController.screenSharingEnabled = call.options["screenSharingEnabled"] as? Bool ?? false
42
+ self.jitsiMeetViewController.recordingEnabled = call.options["recordingEnabled"] as? Bool ?? false
43
+ self.jitsiMeetViewController.liveStreamingEnabled = call.options["liveStreamingEnabled"] as? Bool ?? false
41
44
  self.jitsiMeetViewController.delegate = self;
42
45
 
43
46
  DispatchQueue.main.async {
package/ios/README.md CHANGED
@@ -10,63 +10,48 @@ See the plugin [changelog](https://github.com/calvinckho/capacitor-jitsi-meet/bl
10
10
 
11
11
  ### Usage
12
12
 
13
- 1. npm install capacitor-jitsi-meet, then use it as a Capacitor Plugin
13
+ [Follow installation steps 1-3 here.](https://github.com/calvinckho/capacitor-jitsi-meet#usage)
14
14
 
15
- ```javascript
16
- // On Capacitor 3
17
- import { Jitsi } from 'capacitor-jitsi-meet';
15
+ 4. Follow [these steps](https://ionicframework.com/docs/developing/ios#project-setup) to add iOS to your project
18
16
 
19
- // On Capacitor 2
20
- import { Plugins } from '@capacitor/core';
21
- import 'capacitor-jitsi-meet';
17
+ 5. Let capacitor sync the projects using either of the following commands
22
18
 
23
- const { Jitsi } = Plugins;
24
19
  ```
25
-
26
- ```javascript
27
- const result: any = await Jitsi.joinConference({
28
- roomName: 'room1', // room identifier for the conference
29
- url: 'https://meet.jit.si' // endpoint of the Jitsi Meet video bridge
30
- token: string; // jwt authentication token
31
- displayName: string; // user's display name
32
- email: string; // user's email
33
- avatarURL: string; // user's avatar url
34
- channelLastN: string; // last N participants allowed to join
35
- startWithAudioMuted: true, // start with audio muted
36
- startWithVideoMuted: false // start with video muted
37
- chatEnabled: false, // enable Chat feature
38
- inviteEnabled: false // enable Invitation feature
39
- callIntegrationEnabled: true // enable call integration (CallKit on iOS, ConnectionService on Android)
40
- });
41
- console.log("join status", result.success);
42
-
43
- window.addEventListener('onConferenceJoined', () => {
44
- // do things here
45
- });
46
- window.addEventListener('onConferenceLeft', () => {
47
- // do things here
48
- });
49
-
50
- const result: any = await Jitsi.leaveConference();
51
- console.log("leave status": result.success);
52
-
20
+ npx cap update
21
+ ```
22
+ ```
23
+ npx cap sync
53
24
  ```
54
25
 
55
- 2. npx cap sync
56
-
57
- 3. Turn off Bitcode in the app target as well as the pod targets. In xcode Project Navigator,
58
-
26
+ 6. Turn off Bitcode in the app target as well as the pod targets. In xcode Project Navigator,
59
27
 
28
+ ```
60
29
  i. Pods -> Project -> Pods -> Build Settings -> Enable Bitcode -> No
61
30
 
62
31
  ii Pods -> Targets -> CapacitorJitsiMeet -> Build Settings -> Enable Bitcode -> No
63
-
32
+ ```
64
33
 
65
- 4. Use Swift 5 for the Capacitor target. In Xcode Project Navigator,
34
+ 7. Use Swift 5 for the Capacitor target. In Xcode Project Navigator,
66
35
 
36
+ ```
67
37
  i. Pods -> Targets -> Capacitor -> Build Settings -> Swift Language Version -> Swift 5
38
+ ```
39
+
40
+ 8. In order for app to properly work in the background, select the "audio" and "voip" background modes.
41
+
42
+ ```
43
+ <key>UIBackgroundModes</key>
44
+ <array>
45
+ <string>audio</string>
46
+ <string>voip</string>
47
+ </array>
48
+ ```
49
+
50
+ 9. Build it in Xcode and deploy it to your device
68
51
 
69
- 5. Deploy it to your device
52
+ ```
53
+ ionic capacitor open ios
54
+ ```
70
55
 
71
56
  ### iOS SDK Developer Guide
72
57
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "capacitor-jitsi-meet",
3
- "version": "2.1.2-beta.2",
3
+ "version": "2.1.2",
4
4
  "description": "This Ionic Capacitor plugin is created to make video calls through the free, open-sourced Jitsi video platform (https://meet.jit.si) on iOS and Android.",
5
5
  "main": "dist/esm/index.js",
6
6
  "module": "dist/esm/index.js",