@kaleyra/video-react-native-module 1.0.0 → 1.1.0
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/README.md +41 -2
- package/android/src/main/assets/kaleyra_video_wrapper_info.txt +1 -1
- package/ios/PluginInfo/_KaleyraVideoHybridVersionInfo.swift +1 -1
- package/native-bridge/android/build.gradle +6 -15
- package/native-bridge/android/src/main/java/com/kaleyra/video_hybrid_native_bridge/notifications/KaleyraVideoNotificationReceiver.kt +20 -23
- package/native-bridge/android/src/main/java/com/kaleyra/video_hybrid_native_bridge/notifications/KaleyraVideoNotificationService.kt +5 -5
- package/native-bridge/iOS/KaleyraVideoHybridNativeBridge.xcodeproj/project.pbxproj +58 -50
- package/native-bridge/iOS/Podfile +2 -13
- package/native-bridge/iOS/Podfile.lock +7 -7
- package/native-bridge/iOS/Source/Abstractions/BandyerSDKProtocol.swift +1 -0
- package/native-bridge/iOS/Source/Concurrency/Atomic.swift +116 -0
- package/native-bridge/iOS/Source/Concurrency/{Lock.swift → Locking.swift} +4 -4
- package/native-bridge/iOS/Source/NativeHybridBridge/VideoHybridNativeBridge.swift +4 -6
- package/native-bridge/iOS/Source/User Details/Cache/UsersDetailsCache.swift +1 -1
- package/native-bridge/iOS/Source/User Details/Formatter/FormatterProxy.swift +3 -34
- package/package.json +2 -1
- package/video-react-native-module.podspec +1 -1
package/README.md
CHANGED
|
@@ -105,18 +105,43 @@ Example:
|
|
|
105
105
|
kaleyraVideo.events.onCallModuleStatusChanged = (status: String) => {};
|
|
106
106
|
```
|
|
107
107
|
|
|
108
|
-
##
|
|
108
|
+
## iOS - VoIP Notifications
|
|
109
109
|
|
|
110
|
+
### Setup required for VoIP notifications
|
|
111
|
+
|
|
112
|
+
If you desire to use VoIP notifications on iOS platform as first thing you should configure kaleyraVideo passing a config object as follow:
|
|
113
|
+
|
|
114
|
+
```javascript
|
|
115
|
+
var kaleyraVideo = KaleyraVideo.configure({
|
|
116
|
+
[...]
|
|
117
|
+
iosConfig: {
|
|
118
|
+
voipHandlingStrategy: VoipHandlingStrategy.AUTOMATIC,
|
|
119
|
+
[...]
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
The iOS project requires a little setup for use VoIP notifications. [Here][iOSProjectSetup] you can find a description of how the project should be configured.
|
|
125
|
+
|
|
126
|
+
### Listening for VoIP push token
|
|
110
127
|
In order to get your device push token, you must listen for the **KaleyraVideo.events.iOSVoipPushTokenUpdated** event registering a callback as follows:
|
|
111
128
|
|
|
112
129
|
```javascript
|
|
130
|
+
// The token is received in this listener only after calling kaleyraVideo.connect(_)
|
|
113
131
|
kaleyraVideo.events.oniOSVoipPushTokenUpdated = (token: string) => {
|
|
114
132
|
// register the VoIP push token on your server
|
|
115
133
|
});
|
|
116
134
|
```
|
|
117
|
-
|
|
135
|
+
**Warning:** Make sure this listener is attached before calling kaleyraVideo.connect(_), otherwise the event reporting the device token could be missed.
|
|
136
|
+
|
|
137
|
+
The token provided in the callback is the **string** representation of your device token.
|
|
118
138
|
Here's an example of a device token: **dec105f879924349fd2fa9aa8bb8b70431d5f41d57bfa8e31a5d80a629774fd9**
|
|
119
139
|
|
|
140
|
+
### VoIP notification payload
|
|
141
|
+
|
|
142
|
+
[Here][iOSVoIPPayload] you can find an example of how your VoIP notifications payload should be structured.
|
|
143
|
+
|
|
144
|
+
|
|
120
145
|
## Module connect
|
|
121
146
|
|
|
122
147
|
To connect the plugin to the Kaleyra Video system you will need to provide a Session object.
|
|
@@ -280,6 +305,18 @@ Example of acceptable payload
|
|
|
280
305
|
}
|
|
281
306
|
```
|
|
282
307
|
|
|
308
|
+
## Proguard
|
|
309
|
+
```groovy
|
|
310
|
+
# Bandyer now Kaleyra proprietary SDK
|
|
311
|
+
-keep class com.bandyer.** { *; }
|
|
312
|
+
-keep interface com.bandyer.** { *; }
|
|
313
|
+
-keep enum com.bandyer.** { *; }
|
|
314
|
+
|
|
315
|
+
-keep class com.kaleyra.** { *; }
|
|
316
|
+
-keep interface com.kaleyra.** { *; }
|
|
317
|
+
-keep enum com.kaleyra.** { *; }
|
|
318
|
+
```
|
|
319
|
+
|
|
283
320
|
## TSDoc
|
|
284
321
|
|
|
285
322
|
The API documentation is available on the github pages link:
|
|
@@ -288,5 +325,7 @@ The API documentation is available on the github pages link:
|
|
|
288
325
|
[LinkNpm]: https://www.npmjs.com/package/@kaleyra/video-react-native-module
|
|
289
326
|
[BroadcastAchor]: #ios-broadcast-screen-sharing
|
|
290
327
|
[BroadcastSceenSharing]: https://github.com/Bandyer/Bandyer-iOS-SDK/wiki/Screen-sharing#broadcast-screen-sharing
|
|
328
|
+
[iOSProjectSetup]: https://github.com/Bandyer/Bandyer-iOS-SDK/wiki/VOIP-notifications#project-setup
|
|
329
|
+
[iOSVoIPPayload]: https://github.com/Bandyer/Bandyer-iOS-SDK/wiki/VOIP-notifications#notification-payload-key-path
|
|
291
330
|
[EventsDoc]: https://kaleyravideo.github.io/VideoReactNativeModule/interfaces/src_events_Events.Events.html
|
|
292
331
|
[TSDoc]: https://kaleyravideo.github.io/VideoReactNativeModule/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
React/1.
|
|
1
|
+
React/1.1.0
|
|
@@ -28,22 +28,13 @@ apply plugin: 'kotlin-android'
|
|
|
28
28
|
apply plugin: 'kotlin-kapt'
|
|
29
29
|
|
|
30
30
|
android {
|
|
31
|
-
compileSdkVersion
|
|
31
|
+
compileSdkVersion project.hasProperty('compileSdkVersion') ? rootProject.ext.compileSdkVersion : 33
|
|
32
32
|
|
|
33
33
|
defaultConfig {
|
|
34
|
-
minSdkVersion
|
|
34
|
+
minSdkVersion project.hasProperty('minSdkVersion') ? rootProject.ext.minSdkVersion : 22
|
|
35
35
|
testInstrumentationRunner "com.kaleyra.video_hybrid_native_bridge.utils.RandomRunner"
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
compileOptions {
|
|
39
|
-
sourceCompatibility JavaVersion.VERSION_1_8
|
|
40
|
-
targetCompatibility JavaVersion.VERSION_1_8
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
kotlinOptions {
|
|
44
|
-
jvmTarget = '1.8'
|
|
45
|
-
}
|
|
46
|
-
|
|
47
38
|
sourceSets {
|
|
48
39
|
main.java.srcDirs += 'src/main/kotlin'
|
|
49
40
|
}
|
|
@@ -56,12 +47,12 @@ android {
|
|
|
56
47
|
|
|
57
48
|
dependencies {
|
|
58
49
|
implementation 'com.google.code.gson:gson:2.9.1'
|
|
59
|
-
implementation "com.kaleyra:collaboration-suite-utils:3.0.
|
|
60
|
-
implementation "com.bandyer:bandyer-android-sdk:3.
|
|
50
|
+
implementation "com.kaleyra:collaboration-suite-utils:3.0.6"
|
|
51
|
+
implementation "com.bandyer:bandyer-android-sdk:3.7.2"
|
|
61
52
|
implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
|
|
62
53
|
compileOnly "org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.1"
|
|
63
|
-
implementation "androidx.room:room-runtime:2.4.
|
|
64
|
-
kapt "androidx.room:room-compiler:2.4.
|
|
54
|
+
implementation "androidx.room:room-runtime:2.4.0-beta02"
|
|
55
|
+
kapt "androidx.room:room-compiler:2.4.0-beta02"
|
|
65
56
|
|
|
66
57
|
/*** Testing ***/
|
|
67
58
|
testImplementation 'junit:junit:4.13.2'
|
|
@@ -11,9 +11,6 @@ import android.content.Intent
|
|
|
11
11
|
import android.content.pm.PackageManager
|
|
12
12
|
import android.os.Bundle
|
|
13
13
|
import android.util.Log
|
|
14
|
-
//import com.bandyer.flutter_plugin.exceptions.PluginNotificationKeyNotFound
|
|
15
|
-
//import com.bandyer.flutter_plugin.exceptions.NotificationPayloadDataPathNotDefined
|
|
16
|
-
//import com.bandyer.flutter_plugin.extensions.asJSONObject
|
|
17
14
|
import org.json.JSONObject
|
|
18
15
|
|
|
19
16
|
/**
|
|
@@ -36,20 +33,20 @@ class KaleyraVideoNotificationReceiver : BroadcastReceiver() {
|
|
|
36
33
|
return
|
|
37
34
|
}
|
|
38
35
|
|
|
39
|
-
// check if a
|
|
40
|
-
val serviceIntent = Intent().setAction("com.
|
|
36
|
+
// check if a kaleyra video notification service was defined in the manifest
|
|
37
|
+
val serviceIntent = Intent().setAction("com.kaleyra.VideoNotificationEvent").setPackage(context.packageName)
|
|
41
38
|
val resolveInfo = context.packageManager.queryIntentServices(serviceIntent, PackageManager.GET_RESOLVED_FILTER)
|
|
42
39
|
if (resolveInfo.size < 1) return
|
|
43
40
|
|
|
44
|
-
val
|
|
41
|
+
val kaleyraVideoPayloadPath: String
|
|
45
42
|
try {
|
|
46
|
-
|
|
43
|
+
kaleyraVideoPayloadPath = resolveInfo[0].filter.getDataPath(0).path
|
|
47
44
|
} catch (e: Throwable) {
|
|
48
|
-
throw Throwable("You have not defined data path in your intent-filter!!
|
|
45
|
+
throw Throwable("You have not defined data path in your intent-filter!! Kaleyra video requires it to know where to find the payload!")
|
|
49
46
|
}
|
|
50
47
|
|
|
51
|
-
val payload =
|
|
52
|
-
// if
|
|
48
|
+
val payload = getNotificationPayload(intent, kaleyraVideoPayloadPath)
|
|
49
|
+
// if kaleyra video can handle payload proceed
|
|
53
50
|
if (payload == null) {
|
|
54
51
|
resultCode = Activity.RESULT_OK
|
|
55
52
|
return
|
|
@@ -66,32 +63,32 @@ class KaleyraVideoNotificationReceiver : BroadcastReceiver() {
|
|
|
66
63
|
resultCode = Activity.RESULT_OK
|
|
67
64
|
}
|
|
68
65
|
|
|
69
|
-
private fun
|
|
66
|
+
private fun getNotificationPayload(intent: Intent, notificationPayloadPath: String): String? {
|
|
70
67
|
try {
|
|
71
|
-
val keyPath =
|
|
68
|
+
val keyPath = notificationPayloadPath.split("\\.".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray()
|
|
72
69
|
val payload = intent.extras!!.asJSONObject()
|
|
73
|
-
if (!payload.toString().
|
|
70
|
+
if (!payload.toString().isKaleyraNotification()) return null
|
|
74
71
|
if (!payload.has(keyPath[0]))
|
|
75
72
|
throw PluginNotificationKeyNotFound("\nRequired jsonObject:" + keyPath[0] + " is not contained in " + payload.keys().asString())
|
|
76
|
-
var
|
|
73
|
+
var kaleyraPayloadData = payload.getString(keyPath[0])
|
|
77
74
|
for (i in 1 until keyPath.size) {
|
|
78
|
-
val data = JSONObject(
|
|
75
|
+
val data = JSONObject(kaleyraPayloadData)
|
|
79
76
|
if (!data.has(keyPath[i]))
|
|
80
77
|
throw PluginNotificationKeyNotFound("\nRequired jsonObject:" + keyPath[i] + " is not contained in " + payload.keys().asString())
|
|
81
|
-
|
|
78
|
+
kaleyraPayloadData = JSONObject(kaleyraPayloadData).getString(keyPath[i])
|
|
82
79
|
}
|
|
83
|
-
return
|
|
80
|
+
return kaleyraPayloadData
|
|
84
81
|
} catch (e: Throwable) {
|
|
85
82
|
if (e is PluginNotificationKeyNotFound) {
|
|
86
83
|
Log.w(
|
|
87
|
-
"
|
|
88
|
-
"\nThis notification will not be handled by
|
|
89
|
-
"\
|
|
84
|
+
"KaleyraNotReceiver", "Failed to handle notification!!!" + e.message +
|
|
85
|
+
"\nThis notification will not be handled by Kaleyra!" +
|
|
86
|
+
"\nKaleyra payload not found in the following path: " + notificationPayloadPath
|
|
90
87
|
)
|
|
91
88
|
} else
|
|
92
89
|
Log.w(
|
|
93
|
-
"
|
|
94
|
-
"\nThis notification will not be handled by
|
|
90
|
+
"KaleyraNotReceiver", "Failed to handle notification!!!" +
|
|
91
|
+
"\nThis notification will not be handled by Kaleyra!" +
|
|
95
92
|
e.localizedMessage!!
|
|
96
93
|
)
|
|
97
94
|
}
|
|
@@ -109,7 +106,7 @@ class KaleyraVideoNotificationReceiver : BroadcastReceiver() {
|
|
|
109
106
|
return value.toString()
|
|
110
107
|
}
|
|
111
108
|
|
|
112
|
-
private fun String.
|
|
109
|
+
private fun String.isKaleyraNotification(): Boolean = contains("on_call_incoming") || contains("on_message_sent");
|
|
113
110
|
|
|
114
111
|
private fun isGcmMessage(intent: Intent): Boolean {
|
|
115
112
|
if (GCM_RECEIVE_ACTION == intent.action) {
|
|
@@ -42,13 +42,13 @@ class KaleyraVideoNotificationService : JobIntentService() {
|
|
|
42
42
|
val extras = intent.extras ?: return
|
|
43
43
|
val payload = extras.getString("payload") ?: return
|
|
44
44
|
try {
|
|
45
|
-
val
|
|
46
|
-
val
|
|
45
|
+
val webHookPayload = JSONObject(payload).get("payload").toString()
|
|
46
|
+
val userToken = JSONObject(payload).getString("user_token")
|
|
47
47
|
|
|
48
48
|
val scope = CoroutineScope(Executors.newSingleThreadExecutor().asCoroutineDispatcher())
|
|
49
49
|
val plugin = VideoSDKHybridBridge(
|
|
50
50
|
contextContainer = ServiceContextContainer(),
|
|
51
|
-
tokenProvider = SingleTokenProvider(
|
|
51
|
+
tokenProvider = SingleTokenProvider(userToken),
|
|
52
52
|
backgroundScope = scope,
|
|
53
53
|
eventsReporter = NoOpEventsReporter(),
|
|
54
54
|
eventsEmitter = NoOpEventsEmitter(),
|
|
@@ -59,10 +59,10 @@ class KaleyraVideoNotificationService : JobIntentService() {
|
|
|
59
59
|
plugin.addUsersDetails(plugin.cachedUserDetails.toTypedArray())
|
|
60
60
|
plugin.configureBridge(savedConfiguration)
|
|
61
61
|
plugin.connect(savedUsed)
|
|
62
|
-
plugin.handlePushNotificationPayload(
|
|
62
|
+
plugin.handlePushNotificationPayload(webHookPayload)
|
|
63
63
|
}
|
|
64
64
|
} catch (exception: Throwable) {
|
|
65
|
-
Log.e("
|
|
65
|
+
Log.e("KaleyraNotService", "" + exception.message)
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
68
|
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
objects = {
|
|
8
8
|
|
|
9
9
|
/* Begin PBXBuildFile section */
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
76F386C72A8629D7FEEA9772 /* Pods_KaleyraVideoHybridNativeBridge.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C77C58764B5DB5F383BE462 /* Pods_KaleyraVideoHybridNativeBridge.framework */; };
|
|
11
|
+
9F6CF28AAAF0D5AA9DD43E82 /* Pods_KaleyraVideoHybridNativeBridge_KaleyraVideoHybridNativeBridgeTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2C1BE0F8F5443147BF27F063 /* Pods_KaleyraVideoHybridNativeBridge_KaleyraVideoHybridNativeBridgeTests.framework */; };
|
|
12
12
|
F931C8AF29DECE2400194E1D /* URL+FromString.swift in Sources */ = {isa = PBXBuildFile; fileRef = F931C8AE29DECE2400194E1D /* URL+FromString.swift */; };
|
|
13
13
|
F931C8B229DECF7600194E1D /* URL+FromStringTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F931C8B129DECF7600194E1D /* URL+FromStringTests.swift */; };
|
|
14
14
|
F931C8B429DEF24600194E1D /* KaleyraVideoSDKUserInterfacePresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = F931C8B329DEF24600194E1D /* KaleyraVideoSDKUserInterfacePresenter.swift */; };
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
F9875C7529A661FC00A91C93 /* KaleyraVideoHybridNativeBridge.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F9875C6C29A661FC00A91C93 /* KaleyraVideoHybridNativeBridge.framework */; };
|
|
28
28
|
F9875C7B29A661FC00A91C93 /* KaleyraVideoHybridNativeBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = F9875C6F29A661FC00A91C93 /* KaleyraVideoHybridNativeBridge.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
|
29
29
|
F9875CC129A663B300A91C93 /* MainQueueDispatcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9875C8529A663B200A91C93 /* MainQueueDispatcher.swift */; };
|
|
30
|
-
F9875CC229A663B300A91C93 /*
|
|
30
|
+
F9875CC229A663B300A91C93 /* Locking.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9875C8629A663B200A91C93 /* Locking.swift */; };
|
|
31
31
|
F9875CC329A663B300A91C93 /* DispatchQueue+isMain.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9875C8729A663B200A91C93 /* DispatchQueue+isMain.swift */; };
|
|
32
32
|
F9875CC429A663B300A91C93 /* DTOs.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9875C8929A663B200A91C93 /* DTOs.swift */; };
|
|
33
33
|
F9875CC529A663B300A91C93 /* CallType+Bandyer.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9875C8A29A663B200A91C93 /* CallType+Bandyer.swift */; };
|
|
@@ -133,6 +133,8 @@
|
|
|
133
133
|
F9B7E5A929E5912700AB9208 /* CreateCallOptions+Equatable.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9B7E5A829E5912700AB9208 /* CreateCallOptions+Equatable.swift */; };
|
|
134
134
|
F9B7E5AB29E5913E00AB9208 /* CreateCallOptions+EquatableTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9B7E5AA29E5913E00AB9208 /* CreateCallOptions+EquatableTests.swift */; };
|
|
135
135
|
F9B7E5AE29E5A4BA00AB9208 /* CallWindowProtocol.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9B7E5AD29E5A4BA00AB9208 /* CallWindowProtocol.swift */; };
|
|
136
|
+
F9BEA4C02A7A9F940066988B /* AtomicTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9BEA4BF2A7A9F940066988B /* AtomicTests.swift */; };
|
|
137
|
+
F9BEA4C22A7A9FA60066988B /* Atomic.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9BEA4C12A7A9FA60066988B /* Atomic.swift */; };
|
|
136
138
|
F9C6F96629DDBB610094DB30 /* CallDoubles.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9C6F96529DDBB610094DB30 /* CallDoubles.swift */; };
|
|
137
139
|
F9C6F96829DDBD980094DB30 /* CallRegistryDoubles.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9C6F96729DDBD980094DB30 /* CallRegistryDoubles.swift */; };
|
|
138
140
|
F9DEA4DA29E83C840011D222 /* MainQueueRelay.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9DEA4D929E83C840011D222 /* MainQueueRelay.swift */; };
|
|
@@ -163,12 +165,12 @@
|
|
|
163
165
|
/* End PBXContainerItemProxy section */
|
|
164
166
|
|
|
165
167
|
/* Begin PBXFileReference section */
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
168
|
+
2C1BE0F8F5443147BF27F063 /* Pods_KaleyraVideoHybridNativeBridge_KaleyraVideoHybridNativeBridgeTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_KaleyraVideoHybridNativeBridge_KaleyraVideoHybridNativeBridgeTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
169
|
+
31B2D50C090D5E6076BD39E0 /* Pods-KaleyraVideoHybridNativeBridge.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-KaleyraVideoHybridNativeBridge.release.xcconfig"; path = "Target Support Files/Pods-KaleyraVideoHybridNativeBridge/Pods-KaleyraVideoHybridNativeBridge.release.xcconfig"; sourceTree = "<group>"; };
|
|
170
|
+
3C77C58764B5DB5F383BE462 /* Pods_KaleyraVideoHybridNativeBridge.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_KaleyraVideoHybridNativeBridge.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
171
|
+
8AFE6A0D76614CF3A1055AFB /* Pods-KaleyraVideoHybridNativeBridge.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-KaleyraVideoHybridNativeBridge.debug.xcconfig"; path = "Target Support Files/Pods-KaleyraVideoHybridNativeBridge/Pods-KaleyraVideoHybridNativeBridge.debug.xcconfig"; sourceTree = "<group>"; };
|
|
172
|
+
9FDA74BAD258248FC14F9BB1 /* Pods-KaleyraVideoHybridNativeBridge-KaleyraVideoHybridNativeBridgeTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-KaleyraVideoHybridNativeBridge-KaleyraVideoHybridNativeBridgeTests.debug.xcconfig"; path = "Target Support Files/Pods-KaleyraVideoHybridNativeBridge-KaleyraVideoHybridNativeBridgeTests/Pods-KaleyraVideoHybridNativeBridge-KaleyraVideoHybridNativeBridgeTests.debug.xcconfig"; sourceTree = "<group>"; };
|
|
173
|
+
B73D5754EF9B7B724563F429 /* Pods-KaleyraVideoHybridNativeBridge-KaleyraVideoHybridNativeBridgeTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-KaleyraVideoHybridNativeBridge-KaleyraVideoHybridNativeBridgeTests.release.xcconfig"; path = "Target Support Files/Pods-KaleyraVideoHybridNativeBridge-KaleyraVideoHybridNativeBridgeTests/Pods-KaleyraVideoHybridNativeBridge-KaleyraVideoHybridNativeBridgeTests.release.xcconfig"; sourceTree = "<group>"; };
|
|
172
174
|
F931C8AE29DECE2400194E1D /* URL+FromString.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "URL+FromString.swift"; sourceTree = "<group>"; };
|
|
173
175
|
F931C8B129DECF7600194E1D /* URL+FromStringTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "URL+FromStringTests.swift"; sourceTree = "<group>"; };
|
|
174
176
|
F931C8B329DEF24600194E1D /* KaleyraVideoSDKUserInterfacePresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KaleyraVideoSDKUserInterfacePresenter.swift; sourceTree = "<group>"; };
|
|
@@ -188,7 +190,7 @@
|
|
|
188
190
|
F9875C6F29A661FC00A91C93 /* KaleyraVideoHybridNativeBridge.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KaleyraVideoHybridNativeBridge.h; sourceTree = "<group>"; };
|
|
189
191
|
F9875C7429A661FC00A91C93 /* KaleyraVideoHybridNativeBridgeTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = KaleyraVideoHybridNativeBridgeTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
190
192
|
F9875C8529A663B200A91C93 /* MainQueueDispatcher.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MainQueueDispatcher.swift; sourceTree = "<group>"; };
|
|
191
|
-
F9875C8629A663B200A91C93 /*
|
|
193
|
+
F9875C8629A663B200A91C93 /* Locking.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Locking.swift; sourceTree = "<group>"; };
|
|
192
194
|
F9875C8729A663B200A91C93 /* DispatchQueue+isMain.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "DispatchQueue+isMain.swift"; sourceTree = "<group>"; };
|
|
193
195
|
F9875C8929A663B200A91C93 /* DTOs.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DTOs.swift; sourceTree = "<group>"; };
|
|
194
196
|
F9875C8A29A663B200A91C93 /* CallType+Bandyer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CallType+Bandyer.swift"; sourceTree = "<group>"; };
|
|
@@ -294,6 +296,8 @@
|
|
|
294
296
|
F9B7E5A829E5912700AB9208 /* CreateCallOptions+Equatable.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CreateCallOptions+Equatable.swift"; sourceTree = "<group>"; };
|
|
295
297
|
F9B7E5AA29E5913E00AB9208 /* CreateCallOptions+EquatableTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "CreateCallOptions+EquatableTests.swift"; sourceTree = "<group>"; };
|
|
296
298
|
F9B7E5AD29E5A4BA00AB9208 /* CallWindowProtocol.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CallWindowProtocol.swift; sourceTree = "<group>"; };
|
|
299
|
+
F9BEA4BF2A7A9F940066988B /* AtomicTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AtomicTests.swift; sourceTree = "<group>"; };
|
|
300
|
+
F9BEA4C12A7A9FA60066988B /* Atomic.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Atomic.swift; sourceTree = "<group>"; };
|
|
297
301
|
F9C6F96529DDBB610094DB30 /* CallDoubles.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CallDoubles.swift; sourceTree = "<group>"; };
|
|
298
302
|
F9C6F96729DDBD980094DB30 /* CallRegistryDoubles.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CallRegistryDoubles.swift; sourceTree = "<group>"; };
|
|
299
303
|
F9DEA4D929E83C840011D222 /* MainQueueRelay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainQueueRelay.swift; sourceTree = "<group>"; };
|
|
@@ -318,7 +322,7 @@
|
|
|
318
322
|
isa = PBXFrameworksBuildPhase;
|
|
319
323
|
buildActionMask = 2147483647;
|
|
320
324
|
files = (
|
|
321
|
-
|
|
325
|
+
76F386C72A8629D7FEEA9772 /* Pods_KaleyraVideoHybridNativeBridge.framework in Frameworks */,
|
|
322
326
|
);
|
|
323
327
|
runOnlyForDeploymentPostprocessing = 0;
|
|
324
328
|
};
|
|
@@ -327,7 +331,7 @@
|
|
|
327
331
|
buildActionMask = 2147483647;
|
|
328
332
|
files = (
|
|
329
333
|
F9875C7529A661FC00A91C93 /* KaleyraVideoHybridNativeBridge.framework in Frameworks */,
|
|
330
|
-
|
|
334
|
+
9F6CF28AAAF0D5AA9DD43E82 /* Pods_KaleyraVideoHybridNativeBridge_KaleyraVideoHybridNativeBridgeTests.framework in Frameworks */,
|
|
331
335
|
);
|
|
332
336
|
runOnlyForDeploymentPostprocessing = 0;
|
|
333
337
|
};
|
|
@@ -337,19 +341,19 @@
|
|
|
337
341
|
A04417F243B917842D1D4244 /* Pods */ = {
|
|
338
342
|
isa = PBXGroup;
|
|
339
343
|
children = (
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
+
8AFE6A0D76614CF3A1055AFB /* Pods-KaleyraVideoHybridNativeBridge.debug.xcconfig */,
|
|
345
|
+
31B2D50C090D5E6076BD39E0 /* Pods-KaleyraVideoHybridNativeBridge.release.xcconfig */,
|
|
346
|
+
9FDA74BAD258248FC14F9BB1 /* Pods-KaleyraVideoHybridNativeBridge-KaleyraVideoHybridNativeBridgeTests.debug.xcconfig */,
|
|
347
|
+
B73D5754EF9B7B724563F429 /* Pods-KaleyraVideoHybridNativeBridge-KaleyraVideoHybridNativeBridgeTests.release.xcconfig */,
|
|
344
348
|
);
|
|
345
349
|
path = Pods;
|
|
346
350
|
sourceTree = "<group>";
|
|
347
351
|
};
|
|
348
|
-
|
|
352
|
+
BFFEF6AB45F582862D1DA1C9 /* Frameworks */ = {
|
|
349
353
|
isa = PBXGroup;
|
|
350
354
|
children = (
|
|
351
|
-
|
|
352
|
-
|
|
355
|
+
3C77C58764B5DB5F383BE462 /* Pods_KaleyraVideoHybridNativeBridge.framework */,
|
|
356
|
+
2C1BE0F8F5443147BF27F063 /* Pods_KaleyraVideoHybridNativeBridge_KaleyraVideoHybridNativeBridgeTests.framework */,
|
|
353
357
|
);
|
|
354
358
|
name = Frameworks;
|
|
355
359
|
sourceTree = "<group>";
|
|
@@ -394,7 +398,7 @@
|
|
|
394
398
|
F9875C7829A661FC00A91C93 /* Tests */,
|
|
395
399
|
F9875C6D29A661FC00A91C93 /* Products */,
|
|
396
400
|
A04417F243B917842D1D4244 /* Pods */,
|
|
397
|
-
|
|
401
|
+
BFFEF6AB45F582862D1DA1C9 /* Frameworks */,
|
|
398
402
|
);
|
|
399
403
|
sourceTree = "<group>";
|
|
400
404
|
};
|
|
@@ -440,8 +444,9 @@
|
|
|
440
444
|
F9875C8429A663B200A91C93 /* Concurrency */ = {
|
|
441
445
|
isa = PBXGroup;
|
|
442
446
|
children = (
|
|
447
|
+
F9BEA4C12A7A9FA60066988B /* Atomic.swift */,
|
|
443
448
|
F9875C8729A663B200A91C93 /* DispatchQueue+isMain.swift */,
|
|
444
|
-
F9875C8629A663B200A91C93 /*
|
|
449
|
+
F9875C8629A663B200A91C93 /* Locking.swift */,
|
|
445
450
|
F9875C8529A663B200A91C93 /* MainQueueDispatcher.swift */,
|
|
446
451
|
F9DEA4D929E83C840011D222 /* MainQueueRelay.swift */,
|
|
447
452
|
);
|
|
@@ -623,6 +628,7 @@
|
|
|
623
628
|
F9875D0229A6650A00A91C93 /* Concurrency */ = {
|
|
624
629
|
isa = PBXGroup;
|
|
625
630
|
children = (
|
|
631
|
+
F9BEA4BF2A7A9F940066988B /* AtomicTests.swift */,
|
|
626
632
|
F9875D0329A6650A00A91C93 /* DispatchQueue+isMainTests.swift */,
|
|
627
633
|
F9875D0429A6650A00A91C93 /* MainQueueDispatcherTests.swift */,
|
|
628
634
|
F9DEA4DB29E83F400011D222 /* MainQueueRelayTests.swift */,
|
|
@@ -826,7 +832,7 @@
|
|
|
826
832
|
isa = PBXNativeTarget;
|
|
827
833
|
buildConfigurationList = F9875C7E29A661FC00A91C93 /* Build configuration list for PBXNativeTarget "KaleyraVideoHybridNativeBridge" */;
|
|
828
834
|
buildPhases = (
|
|
829
|
-
|
|
835
|
+
D4A6F65CD1B366B5FE70494E /* [CP] Check Pods Manifest.lock */,
|
|
830
836
|
F9875C6729A661FC00A91C93 /* Headers */,
|
|
831
837
|
F9875C6829A661FC00A91C93 /* Sources */,
|
|
832
838
|
F9875C6929A661FC00A91C93 /* Frameworks */,
|
|
@@ -845,11 +851,11 @@
|
|
|
845
851
|
isa = PBXNativeTarget;
|
|
846
852
|
buildConfigurationList = F9875C8129A661FC00A91C93 /* Build configuration list for PBXNativeTarget "KaleyraVideoHybridNativeBridgeTests" */;
|
|
847
853
|
buildPhases = (
|
|
848
|
-
|
|
854
|
+
1D220D8FD79E0C49D895887D /* [CP] Check Pods Manifest.lock */,
|
|
849
855
|
F9875C7029A661FC00A91C93 /* Sources */,
|
|
850
856
|
F9875C7129A661FC00A91C93 /* Frameworks */,
|
|
851
857
|
F9875C7229A661FC00A91C93 /* Resources */,
|
|
852
|
-
|
|
858
|
+
85937B93FAE28ABA6CBBA1CF /* [CP] Embed Pods Frameworks */,
|
|
853
859
|
);
|
|
854
860
|
buildRules = (
|
|
855
861
|
);
|
|
@@ -928,7 +934,7 @@
|
|
|
928
934
|
/* End PBXResourcesBuildPhase section */
|
|
929
935
|
|
|
930
936
|
/* Begin PBXShellScriptBuildPhase section */
|
|
931
|
-
|
|
937
|
+
1D220D8FD79E0C49D895887D /* [CP] Check Pods Manifest.lock */ = {
|
|
932
938
|
isa = PBXShellScriptBuildPhase;
|
|
933
939
|
buildActionMask = 2147483647;
|
|
934
940
|
files = (
|
|
@@ -943,50 +949,50 @@
|
|
|
943
949
|
outputFileListPaths = (
|
|
944
950
|
);
|
|
945
951
|
outputPaths = (
|
|
946
|
-
"$(DERIVED_FILE_DIR)/Pods-KaleyraVideoHybridNativeBridge-checkManifestLockResult.txt",
|
|
952
|
+
"$(DERIVED_FILE_DIR)/Pods-KaleyraVideoHybridNativeBridge-KaleyraVideoHybridNativeBridgeTests-checkManifestLockResult.txt",
|
|
947
953
|
);
|
|
948
954
|
runOnlyForDeploymentPostprocessing = 0;
|
|
949
955
|
shellPath = /bin/sh;
|
|
950
956
|
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
|
951
957
|
showEnvVarsInLog = 0;
|
|
952
958
|
};
|
|
953
|
-
|
|
959
|
+
85937B93FAE28ABA6CBBA1CF /* [CP] Embed Pods Frameworks */ = {
|
|
954
960
|
isa = PBXShellScriptBuildPhase;
|
|
955
961
|
buildActionMask = 2147483647;
|
|
956
962
|
files = (
|
|
957
963
|
);
|
|
958
964
|
inputFileListPaths = (
|
|
965
|
+
"${PODS_ROOT}/Target Support Files/Pods-KaleyraVideoHybridNativeBridge-KaleyraVideoHybridNativeBridgeTests/Pods-KaleyraVideoHybridNativeBridge-KaleyraVideoHybridNativeBridgeTests-frameworks-${CONFIGURATION}-input-files.xcfilelist",
|
|
959
966
|
);
|
|
960
|
-
|
|
961
|
-
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
|
962
|
-
"${PODS_ROOT}/Manifest.lock",
|
|
963
|
-
);
|
|
964
|
-
name = "[CP] Check Pods Manifest.lock";
|
|
967
|
+
name = "[CP] Embed Pods Frameworks";
|
|
965
968
|
outputFileListPaths = (
|
|
966
|
-
|
|
967
|
-
outputPaths = (
|
|
968
|
-
"$(DERIVED_FILE_DIR)/Pods-KaleyraVideoHybridNativeBridge-KaleyraVideoHybridNativeBridgeTests-checkManifestLockResult.txt",
|
|
969
|
+
"${PODS_ROOT}/Target Support Files/Pods-KaleyraVideoHybridNativeBridge-KaleyraVideoHybridNativeBridgeTests/Pods-KaleyraVideoHybridNativeBridge-KaleyraVideoHybridNativeBridgeTests-frameworks-${CONFIGURATION}-output-files.xcfilelist",
|
|
969
970
|
);
|
|
970
971
|
runOnlyForDeploymentPostprocessing = 0;
|
|
971
972
|
shellPath = /bin/sh;
|
|
972
|
-
shellScript = "
|
|
973
|
+
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-KaleyraVideoHybridNativeBridge-KaleyraVideoHybridNativeBridgeTests/Pods-KaleyraVideoHybridNativeBridge-KaleyraVideoHybridNativeBridgeTests-frameworks.sh\"\n";
|
|
973
974
|
showEnvVarsInLog = 0;
|
|
974
975
|
};
|
|
975
|
-
|
|
976
|
+
D4A6F65CD1B366B5FE70494E /* [CP] Check Pods Manifest.lock */ = {
|
|
976
977
|
isa = PBXShellScriptBuildPhase;
|
|
977
978
|
buildActionMask = 2147483647;
|
|
978
979
|
files = (
|
|
979
980
|
);
|
|
980
981
|
inputFileListPaths = (
|
|
981
|
-
"${PODS_ROOT}/Target Support Files/Pods-KaleyraVideoHybridNativeBridge-KaleyraVideoHybridNativeBridgeTests/Pods-KaleyraVideoHybridNativeBridge-KaleyraVideoHybridNativeBridgeTests-frameworks-${CONFIGURATION}-input-files.xcfilelist",
|
|
982
982
|
);
|
|
983
|
-
|
|
983
|
+
inputPaths = (
|
|
984
|
+
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
|
985
|
+
"${PODS_ROOT}/Manifest.lock",
|
|
986
|
+
);
|
|
987
|
+
name = "[CP] Check Pods Manifest.lock";
|
|
984
988
|
outputFileListPaths = (
|
|
985
|
-
|
|
989
|
+
);
|
|
990
|
+
outputPaths = (
|
|
991
|
+
"$(DERIVED_FILE_DIR)/Pods-KaleyraVideoHybridNativeBridge-checkManifestLockResult.txt",
|
|
986
992
|
);
|
|
987
993
|
runOnlyForDeploymentPostprocessing = 0;
|
|
988
994
|
shellPath = /bin/sh;
|
|
989
|
-
shellScript = "\"${PODS_ROOT}/
|
|
995
|
+
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
|
990
996
|
showEnvVarsInLog = 0;
|
|
991
997
|
};
|
|
992
998
|
/* End PBXShellScriptBuildPhase section */
|
|
@@ -1000,6 +1006,7 @@
|
|
|
1000
1006
|
F931C8B429DEF24600194E1D /* KaleyraVideoSDKUserInterfacePresenter.swift in Sources */,
|
|
1001
1007
|
F9875CC329A663B300A91C93 /* DispatchQueue+isMain.swift in Sources */,
|
|
1002
1008
|
F9875CE729A663B300A91C93 /* ChatClientEventsReporter.swift in Sources */,
|
|
1009
|
+
F9BEA4C22A7A9FA60066988B /* Atomic.swift in Sources */,
|
|
1003
1010
|
F9B7E59929E5602800AB9208 /* CallOptions+Bandyer.swift in Sources */,
|
|
1004
1011
|
F967342529D2EFE500F9B914 /* TokenProvider.swift in Sources */,
|
|
1005
1012
|
F9875CDE29A663B300A91C93 /* Array+JSON.swift in Sources */,
|
|
@@ -1018,7 +1025,7 @@
|
|
|
1018
1025
|
F96C93F729E8442F004FA995 /* UserInterfacePresenter+MainQueueRelay.swift in Sources */,
|
|
1019
1026
|
F9875CD829A663B300A91C93 /* AccessTokenRequest+Encodable.swift in Sources */,
|
|
1020
1027
|
F9875CE229A663B300A91C93 /* RecordingType+Decodable.swift in Sources */,
|
|
1021
|
-
F9875CC229A663B300A91C93 /*
|
|
1028
|
+
F9875CC229A663B300A91C93 /* Locking.swift in Sources */,
|
|
1022
1029
|
F9875CC929A663B300A91C93 /* CallType+Decodable.swift in Sources */,
|
|
1023
1030
|
F9875CD729A663B300A91C93 /* AccessTokenResponse+Decodable.swift in Sources */,
|
|
1024
1031
|
F9DEA4DA29E83C840011D222 /* MainQueueRelay.swift in Sources */,
|
|
@@ -1100,6 +1107,7 @@
|
|
|
1100
1107
|
F9875D3429A6650A00A91C93 /* CreateCallOptions+IntentTests.swift in Sources */,
|
|
1101
1108
|
F9B7E5A129E5663900AB9208 /* AudioCallOptions+EquatableTests.swift in Sources */,
|
|
1102
1109
|
F9875D5329A6650A00A91C93 /* TestHelpers.swift in Sources */,
|
|
1110
|
+
F9BEA4C02A7A9F940066988B /* AtomicTests.swift in Sources */,
|
|
1103
1111
|
F9875D5729A6650A00A91C93 /* UnitTestCase.swift in Sources */,
|
|
1104
1112
|
F9B7E5A729E5888E00AB9208 /* KaleyraVideoConfiguration+UserInterfacePresenterConfigurationTests.swift in Sources */,
|
|
1105
1113
|
F9875D3E29A6650A00A91C93 /* RegionTests.swift in Sources */,
|
|
@@ -1267,7 +1275,7 @@
|
|
|
1267
1275
|
};
|
|
1268
1276
|
F9875C7F29A661FC00A91C93 /* Debug */ = {
|
|
1269
1277
|
isa = XCBuildConfiguration;
|
|
1270
|
-
baseConfigurationReference =
|
|
1278
|
+
baseConfigurationReference = 8AFE6A0D76614CF3A1055AFB /* Pods-KaleyraVideoHybridNativeBridge.debug.xcconfig */;
|
|
1271
1279
|
buildSettings = {
|
|
1272
1280
|
CODE_SIGN_STYLE = Automatic;
|
|
1273
1281
|
CURRENT_PROJECT_VERSION = 1;
|
|
@@ -1279,7 +1287,7 @@
|
|
|
1279
1287
|
GENERATE_INFOPLIST_FILE = YES;
|
|
1280
1288
|
INFOPLIST_KEY_NSHumanReadableCopyright = "";
|
|
1281
1289
|
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
|
1282
|
-
IPHONEOS_DEPLOYMENT_TARGET =
|
|
1290
|
+
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
|
1283
1291
|
LD_RUNPATH_SEARCH_PATHS = (
|
|
1284
1292
|
"$(inherited)",
|
|
1285
1293
|
"@executable_path/Frameworks",
|
|
@@ -1297,7 +1305,7 @@
|
|
|
1297
1305
|
};
|
|
1298
1306
|
F9875C8029A661FC00A91C93 /* Release */ = {
|
|
1299
1307
|
isa = XCBuildConfiguration;
|
|
1300
|
-
baseConfigurationReference =
|
|
1308
|
+
baseConfigurationReference = 31B2D50C090D5E6076BD39E0 /* Pods-KaleyraVideoHybridNativeBridge.release.xcconfig */;
|
|
1301
1309
|
buildSettings = {
|
|
1302
1310
|
CODE_SIGN_STYLE = Automatic;
|
|
1303
1311
|
CURRENT_PROJECT_VERSION = 1;
|
|
@@ -1309,7 +1317,7 @@
|
|
|
1309
1317
|
GENERATE_INFOPLIST_FILE = YES;
|
|
1310
1318
|
INFOPLIST_KEY_NSHumanReadableCopyright = "";
|
|
1311
1319
|
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
|
|
1312
|
-
IPHONEOS_DEPLOYMENT_TARGET =
|
|
1320
|
+
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
|
1313
1321
|
LD_RUNPATH_SEARCH_PATHS = (
|
|
1314
1322
|
"$(inherited)",
|
|
1315
1323
|
"@executable_path/Frameworks",
|
|
@@ -1327,14 +1335,14 @@
|
|
|
1327
1335
|
};
|
|
1328
1336
|
F9875C8229A661FC00A91C93 /* Debug */ = {
|
|
1329
1337
|
isa = XCBuildConfiguration;
|
|
1330
|
-
baseConfigurationReference =
|
|
1338
|
+
baseConfigurationReference = 9FDA74BAD258248FC14F9BB1 /* Pods-KaleyraVideoHybridNativeBridge-KaleyraVideoHybridNativeBridgeTests.debug.xcconfig */;
|
|
1331
1339
|
buildSettings = {
|
|
1332
1340
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)";
|
|
1333
1341
|
CODE_SIGN_STYLE = Automatic;
|
|
1334
1342
|
CURRENT_PROJECT_VERSION = 1;
|
|
1335
1343
|
DEVELOPMENT_TEAM = TQ49746752;
|
|
1336
1344
|
GENERATE_INFOPLIST_FILE = YES;
|
|
1337
|
-
IPHONEOS_DEPLOYMENT_TARGET =
|
|
1345
|
+
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
|
1338
1346
|
MARKETING_VERSION = 1.0;
|
|
1339
1347
|
PRODUCT_BUNDLE_IDENTIFIER = com.kaleyra.VideoHybidNativeBridgeTests;
|
|
1340
1348
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
|
@@ -1346,14 +1354,14 @@
|
|
|
1346
1354
|
};
|
|
1347
1355
|
F9875C8329A661FC00A91C93 /* Release */ = {
|
|
1348
1356
|
isa = XCBuildConfiguration;
|
|
1349
|
-
baseConfigurationReference =
|
|
1357
|
+
baseConfigurationReference = B73D5754EF9B7B724563F429 /* Pods-KaleyraVideoHybridNativeBridge-KaleyraVideoHybridNativeBridgeTests.release.xcconfig */;
|
|
1350
1358
|
buildSettings = {
|
|
1351
1359
|
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)";
|
|
1352
1360
|
CODE_SIGN_STYLE = Automatic;
|
|
1353
1361
|
CURRENT_PROJECT_VERSION = 1;
|
|
1354
1362
|
DEVELOPMENT_TEAM = TQ49746752;
|
|
1355
1363
|
GENERATE_INFOPLIST_FILE = YES;
|
|
1356
|
-
IPHONEOS_DEPLOYMENT_TARGET =
|
|
1364
|
+
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
|
1357
1365
|
MARKETING_VERSION = 1.0;
|
|
1358
1366
|
PRODUCT_BUNDLE_IDENTIFIER = com.kaleyra.VideoHybidNativeBridgeTests;
|
|
1359
1367
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# Copyright © 2018-2023 Kaleyra S.p.a. All Rights Reserved.
|
|
2
2
|
# See LICENSE for licensing information
|
|
3
3
|
|
|
4
|
-
platform :ios, '
|
|
4
|
+
platform :ios, '12.0'
|
|
5
5
|
|
|
6
6
|
target 'KaleyraVideoHybridNativeBridge' do
|
|
7
7
|
use_frameworks!
|
|
8
8
|
|
|
9
|
-
pod "Bandyer"
|
|
9
|
+
pod "Bandyer"
|
|
10
10
|
|
|
11
11
|
target 'KaleyraVideoHybridNativeBridgeTests' do
|
|
12
12
|
use_frameworks!
|
|
@@ -15,14 +15,3 @@ target 'KaleyraVideoHybridNativeBridge' do
|
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
end
|
|
18
|
-
|
|
19
|
-
#This post_install script is needed after updating Xcode to 14.3 version, otherwise there will be compilation issues.
|
|
20
|
-
post_install do |installer|
|
|
21
|
-
installer.generated_projects.each do |project|
|
|
22
|
-
project.targets.each do |target|
|
|
23
|
-
target.build_configurations.each do |config|
|
|
24
|
-
config.build_settings['IPHONEOS_DEPLOYMENT_TARGET'] = '10.0'
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
PODS:
|
|
2
|
-
- Bandyer (3.
|
|
3
|
-
- SwiftHamcrest (2.2.
|
|
2
|
+
- Bandyer (3.9.0)
|
|
3
|
+
- SwiftHamcrest (2.2.4)
|
|
4
4
|
|
|
5
5
|
DEPENDENCIES:
|
|
6
|
-
- Bandyer
|
|
6
|
+
- Bandyer
|
|
7
7
|
- SwiftHamcrest (~> 2.2)
|
|
8
8
|
|
|
9
9
|
SPEC REPOS:
|
|
@@ -12,9 +12,9 @@ SPEC REPOS:
|
|
|
12
12
|
- SwiftHamcrest
|
|
13
13
|
|
|
14
14
|
SPEC CHECKSUMS:
|
|
15
|
-
Bandyer:
|
|
16
|
-
SwiftHamcrest:
|
|
15
|
+
Bandyer: 64a80517e7e1aff3ea49e0c32c1872e80fac17b6
|
|
16
|
+
SwiftHamcrest: a45dd878978049c0953259aa01c34fd7258d0340
|
|
17
17
|
|
|
18
|
-
PODFILE CHECKSUM:
|
|
18
|
+
PODFILE CHECKSUM: 66fc4f81333eb6e98b7f40196dbf5ee1fa5c1996
|
|
19
19
|
|
|
20
|
-
COCOAPODS: 1.
|
|
20
|
+
COCOAPODS: 1.14.2
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
// Copyright © 2018-2023 Kaleyra S.p.a. All Rights Reserved.
|
|
2
|
+
// See LICENSE for licensing information
|
|
3
|
+
|
|
4
|
+
import Foundation
|
|
5
|
+
|
|
6
|
+
@propertyWrapper
|
|
7
|
+
class Atomic<Value> {
|
|
8
|
+
|
|
9
|
+
private var value: Value
|
|
10
|
+
private let lock: Locking
|
|
11
|
+
|
|
12
|
+
init(wrappedValue: Value, lock: Locking = NSLock()) {
|
|
13
|
+
self.value = wrappedValue
|
|
14
|
+
self.lock = lock
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
init(_ value: Value, lock: Locking = NSLock()) {
|
|
18
|
+
self.value = value
|
|
19
|
+
self.lock = lock
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
var wrappedValue: Value {
|
|
23
|
+
get {
|
|
24
|
+
lock.sync {
|
|
25
|
+
value
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
set {
|
|
30
|
+
lock.sync {
|
|
31
|
+
value = newValue
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
var projectedValue: Atomic<Value> { self }
|
|
37
|
+
|
|
38
|
+
func `do`(_ body: (inout Value) throws -> Void) rethrows {
|
|
39
|
+
try lock.sync { try body(&value) }
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
func `do`<T>(_ body: (inout Value) throws -> T) rethrows -> T {
|
|
43
|
+
try lock.sync { try body(&value) }
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
func swap(_ newValue: Value) -> Value {
|
|
47
|
+
lock.sync {
|
|
48
|
+
let oldValue = value
|
|
49
|
+
value = newValue
|
|
50
|
+
return oldValue
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
extension Atomic: Equatable where Value: Equatable {
|
|
56
|
+
|
|
57
|
+
static func == (lhs: Atomic<Value>, rhs: Atomic<Value>) -> Bool {
|
|
58
|
+
lhs.wrappedValue == rhs.wrappedValue
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
extension Atomic where Value: Equatable {
|
|
63
|
+
|
|
64
|
+
static func == (lhs: Atomic<Value>, rhs: Value) -> Bool {
|
|
65
|
+
lhs.wrappedValue == rhs
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
static func == (lhs: Value, rhs: Atomic<Value>) -> Bool {
|
|
69
|
+
lhs == rhs.wrappedValue
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
extension Atomic where Value: AdditiveArithmetic {
|
|
74
|
+
|
|
75
|
+
static func += (lhs: Atomic<Value>, rhs: Value) {
|
|
76
|
+
lhs.do { $0 += rhs }
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
static func += (lhs: inout Value, rhs: Atomic<Value>) {
|
|
80
|
+
lhs += rhs.wrappedValue
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
static func -= (lhs: Atomic<Value>, rhs: Value) {
|
|
84
|
+
lhs.do { $0 -= rhs }
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
static func -= (lhs: inout Value, rhs: Atomic<Value>) {
|
|
88
|
+
lhs -= rhs.wrappedValue
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
extension Atomic where Value: Collection {
|
|
93
|
+
|
|
94
|
+
var count: Int { wrappedValue.count }
|
|
95
|
+
|
|
96
|
+
var isEmpty: Bool { wrappedValue.isEmpty }
|
|
97
|
+
|
|
98
|
+
subscript(index: Value.Index) -> Value.Element {
|
|
99
|
+
wrappedValue[index]
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
func dropFirst(_ k: Int = 1) -> Value.SubSequence {
|
|
103
|
+
wrappedValue.dropFirst(k)
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
func dropLast(_ k: Int = 1) -> Value.SubSequence {
|
|
107
|
+
wrappedValue.dropLast(k)
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
extension Atomic where Value: RangeReplaceableCollection {
|
|
112
|
+
|
|
113
|
+
func append(_ newElement: Value.Element) {
|
|
114
|
+
self.do { $0.append(newElement) }
|
|
115
|
+
}
|
|
116
|
+
}
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
|
|
4
4
|
import Foundation
|
|
5
5
|
|
|
6
|
-
protocol
|
|
6
|
+
protocol Locking {
|
|
7
7
|
|
|
8
8
|
func sync<T>(_ work: () throws -> T) rethrows -> T
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
extension
|
|
11
|
+
extension Locking where Self: NSLocking {
|
|
12
12
|
|
|
13
13
|
func sync<T>(_ work: () throws -> T) rethrows -> T {
|
|
14
14
|
lock()
|
|
@@ -17,5 +17,5 @@ extension Lock where Self: NSLocking {
|
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
extension NSLock:
|
|
21
|
-
extension NSRecursiveLock:
|
|
20
|
+
extension NSLock: Locking {}
|
|
21
|
+
extension NSRecursiveLock: Locking {}
|
|
@@ -83,7 +83,6 @@ class VideoHybridNativeBridge {
|
|
|
83
83
|
|
|
84
84
|
func connect(userID: String) throws {
|
|
85
85
|
try checkIsConfigured()
|
|
86
|
-
|
|
87
86
|
let provider = accessTokenProviderFactory()
|
|
88
87
|
sdk.connect(Bandyer.Session(userId: userID, tokenProvider: provider))
|
|
89
88
|
}
|
|
@@ -120,7 +119,6 @@ class VideoHybridNativeBridge {
|
|
|
120
119
|
try checkIsConfigured()
|
|
121
120
|
|
|
122
121
|
sdk.disconnect()
|
|
123
|
-
reporter.stop()
|
|
124
122
|
}
|
|
125
123
|
|
|
126
124
|
func addUsersDetails(_ details: [UserDetails]) {
|
|
@@ -138,6 +136,10 @@ class VideoHybridNativeBridge {
|
|
|
138
136
|
sdk.verifiedUser(verify, for: call, completion: nil)
|
|
139
137
|
}
|
|
140
138
|
|
|
139
|
+
func reset() {
|
|
140
|
+
sdk.reset()
|
|
141
|
+
}
|
|
142
|
+
|
|
141
143
|
// MARK: - Private Functions
|
|
142
144
|
|
|
143
145
|
private func configurePushEventsReporterIfNeeded(config: KaleyraVideoConfiguration) {
|
|
@@ -155,10 +157,6 @@ class VideoHybridNativeBridge {
|
|
|
155
157
|
|
|
156
158
|
// MARK: - Unsupported Features on iOS Platform
|
|
157
159
|
|
|
158
|
-
func reset() {
|
|
159
|
-
debugPrint("Reset is not supported for iOS platform.")
|
|
160
|
-
}
|
|
161
|
-
|
|
162
160
|
func clearUserCache() {
|
|
163
161
|
debugPrint("clearUserCache() is not supported for iOS platform.")
|
|
164
162
|
}
|
|
@@ -8,7 +8,7 @@ import Bandyer
|
|
|
8
8
|
class UsersDetailsCache {
|
|
9
9
|
|
|
10
10
|
private lazy var items = [String : Bandyer.UserDetails]()
|
|
11
|
-
private let lock:
|
|
11
|
+
private let lock: Locking = NSRecursiveLock()
|
|
12
12
|
|
|
13
13
|
func setItem(_ item: Bandyer.UserDetails, forKey key: String) {
|
|
14
14
|
lock.sync {
|
|
@@ -6,42 +6,11 @@ import Foundation
|
|
|
6
6
|
@available(iOS 12.0, *)
|
|
7
7
|
class FormatterProxy: Formatter {
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
private let lock: Lock = NSRecursiveLock()
|
|
12
|
-
private var _formatter: Formatter
|
|
13
|
-
|
|
14
|
-
var formatter: Formatter! {
|
|
15
|
-
get {
|
|
16
|
-
lock.sync {
|
|
17
|
-
_formatter
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
set {
|
|
22
|
-
lock.sync {
|
|
23
|
-
guard newValue != nil else {
|
|
24
|
-
_formatter = Self.defaultFormatter
|
|
25
|
-
return
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
_formatter = newValue
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
override init() {
|
|
34
|
-
_formatter = Self.defaultFormatter
|
|
35
|
-
super.init()
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
required init?(coder: NSCoder) {
|
|
39
|
-
_formatter = Self.defaultFormatter
|
|
40
|
-
super.init(coder: coder)
|
|
41
|
-
}
|
|
9
|
+
@Atomic
|
|
10
|
+
var formatter: Formatter?
|
|
42
11
|
|
|
43
12
|
override func string(for obj: Any?) -> String? {
|
|
44
|
-
formatter
|
|
13
|
+
formatter?.string(for: obj)
|
|
45
14
|
}
|
|
46
15
|
|
|
47
16
|
}
|
package/package.json
CHANGED
|
@@ -17,7 +17,7 @@ Pod::Spec.new do |s|
|
|
|
17
17
|
s.source_files = "ios/**/*.{h,m,mm,swift}", "native-bridge/iOS/Source/**/*.swift"
|
|
18
18
|
|
|
19
19
|
s.dependency "React-Core"
|
|
20
|
-
s.dependency "Bandyer", "~> 3.
|
|
20
|
+
s.dependency "Bandyer", "~> 3.10.0"
|
|
21
21
|
|
|
22
22
|
# Don't install the dependencies when we run `pod install` in the old architecture.
|
|
23
23
|
if ENV['RCT_NEW_ARCH_ENABLED'] == '1' then
|