airbridge-react-native-sdk-restricted 4.1.6 → 4.2.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.
@@ -39,12 +39,12 @@ env:
39
39
  || (github.event_name == 'pull_request') && 'pull_request'
40
40
  || (github.event_name == 'workflow_dispatch') && 'workflow_dispatch'
41
41
  }}
42
- BRANCH: ${{ github.event.pull_request.head.label || github.ref_name }}
42
+ BRANCH: ${{ github.event.pull_request.head.ref || github.ref_name }}
43
43
  TYPE: ${{
44
44
  github.event_name == 'pull_request'
45
45
  && (
46
- startsWith(github.event.pull_request.head.label, 'release/')
47
- || startsWith(github.event.pull_request.head.label, 'hotfix/')
46
+ startsWith(github.event.pull_request.head.ref, 'release/')
47
+ || startsWith(github.event.pull_request.head.ref, 'hotfix/')
48
48
  )
49
49
  && 'Release'
50
50
  || 'Feature'
@@ -139,6 +139,87 @@ jobs:
139
139
  build-ios:
140
140
  runs-on: ${{ vars.MACOS_INSTANCE }}
141
141
  needs: ['prepare']
142
+
143
+ env:
144
+ OUTPUT: ios-application.ipa
145
+
146
+ outputs:
147
+ expire: ${{ steps.deploy-qa-ios-application.outputs.expire }}
148
+ install-url: ${{ steps.deploy-qa-ios-application.outputs.install-url }}
149
+ download-url: ${{ steps.deploy-qa-ios-application.outputs.download-url }}
150
+ steps:
151
+ - name: Checkout
152
+ uses: actions/checkout@v4
153
+
154
+ - name: Prepare certificate
155
+ uses: ab180/apple-action/prepare-certificate@v3
156
+ with:
157
+ app-store-connect-issuer-id: ${{ env.APP_STORE_CONNECT_ISSUER_ID }}
158
+ app-store-connect-key-id: ${{ env.APP_STORE_CONNECT_KEY_ID }}
159
+ app-store-connect-private-key: ${{ env.APP_STORE_CONNECT_PRIVATE_KEY }}
160
+ certificate-development-private-key: ${{ env.CERTIFICATE_DEVELOPMENT_PRIVATE_KEY }}
161
+ certificate-development-private-key-password: ${{ env.CERTIFICATE_DEVELOPMENT_PRIVATE_KEY_PASSWORD }}
162
+ certificate-distribution-private-key: ${{ env.CERTIFICATE_DISTRIBUTION_PRIVATE_KEY }}
163
+ certificate-distribution-private-key-password: ${{ env.CERTIFICATE_DISTRIBUTION_PRIVATE_KEY_PASSWORD }}
164
+
165
+ - name: Prepare xcode
166
+ uses: ab180/apple-action/prepare-xcodebuild@v3
167
+ with:
168
+ xcbeautify: true
169
+ automatic-signing: true
170
+ app-store-connect-issuer-id: ${{ env.APP_STORE_CONNECT_ISSUER_ID }}
171
+ app-store-connect-key-id: ${{ env.APP_STORE_CONNECT_KEY_ID }}
172
+ app-store-connect-private-key: ${{ env.APP_STORE_CONNECT_PRIVATE_KEY }}
173
+
174
+ - name: Prepare aws
175
+ uses: aws-actions/configure-aws-credentials@v4
176
+ with:
177
+ role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }}
178
+ aws-region: ${{ env.AWS_REGION }}
179
+
180
+ - name: Prepare Node
181
+ uses: actions/setup-node@v4
182
+ with:
183
+ node-version: 20
184
+ cache: 'npm'
185
+ cache-dependency-path: '**/package-lock.json'
186
+
187
+ - name: Cache CocoaPods
188
+ uses: actions/cache@v4
189
+ with:
190
+ path: |
191
+ qa/ios/Pods
192
+ key: |
193
+ ${{ runner.os }}-pods-${{ hashFiles('**/Podfile.lock') }}
194
+ restore-keys: |
195
+ ${{ runner.os }}-pods-
196
+
197
+ - name: Build QA
198
+ run: |
199
+ ./script/BuildQA.sh
200
+ env:
201
+ BUILD_QA: ios
202
+ BUILD_OUTPUT: ${{ env.OUTPUT }}
203
+ BUILD_NUMBER: ${{ needs.prepare.outputs.build-number }}
204
+
205
+ - name: Deploy QA iOS Application
206
+ id: deploy-qa-ios-application
207
+ uses: ab180/apple-action/deploy-ios-application-to-aws@v3
208
+ with:
209
+ application: build/qa/${{ env.OUTPUT }}
210
+ application-version: ${{ needs.prepare.outputs.version }}
211
+ application-identifier: co.ab180.airbridge.qa.application
212
+ bucket: ${{ env.AWS_BUCKET }}
213
+ distribution: ${{ env.DISTRIBUTION_ID }}
214
+ domain: ${{ env.AWS_DOMAIN }}
215
+ directory: ${{ needs.prepare.outputs.path }}
216
+
217
+ build-ios-restricted:
218
+ runs-on: ${{ vars.MACOS_INSTANCE }}
219
+ needs: ['prepare']
220
+
221
+ env:
222
+ OUTPUT: ios-restricted-application.ipa
142
223
 
143
224
  outputs:
144
225
  expire: ${{ steps.deploy-qa-ios-application.outputs.expire }}
@@ -191,18 +272,26 @@ jobs:
191
272
  restore-keys: |
192
273
  ${{ runner.os }}-pods-
193
274
 
275
+ - name: prepare ChangeRestricted
276
+ run: |
277
+ rm ./qa/package-lock.json
278
+ ./script/ChangeRestricted.sh
279
+ cd qa
280
+ npm install
281
+
194
282
  - name: Build QA
195
283
  run: |
196
284
  ./script/BuildQA.sh
197
285
  env:
198
286
  BUILD_QA: ios
287
+ BUILD_OUTPUT: ${{ env.OUTPUT }}
199
288
  BUILD_NUMBER: ${{ needs.prepare.outputs.build-number }}
200
289
 
201
290
  - name: Deploy QA iOS Application
202
291
  id: deploy-qa-ios-application
203
292
  uses: ab180/apple-action/deploy-ios-application-to-aws@v3
204
293
  with:
205
- application: build/qa/ios-application.ipa
294
+ application: build/qa/${{ env.OUTPUT }}
206
295
  application-version: ${{ needs.prepare.outputs.version }}
207
296
  application-identifier: co.ab180.airbridge.qa.application
208
297
  bucket: ${{ env.AWS_BUCKET }}
@@ -213,6 +302,77 @@ jobs:
213
302
  build-android:
214
303
  runs-on: ${{ vars.LINUX_INSTANCE }}
215
304
  needs: ['prepare']
305
+
306
+ env:
307
+ OUTPUT: android-application.apk
308
+
309
+ outputs:
310
+ expire: ${{ steps.prepare-environment.outputs.expire }}
311
+ download-url: ${{ steps.result.outputs.download-url }}
312
+ steps:
313
+ - name: Checkout
314
+ uses: actions/checkout@v4
315
+
316
+ - name: Prepare aws
317
+ uses: aws-actions/configure-aws-credentials@v4
318
+ with:
319
+ role-to-assume: ${{ secrets.AWS_ROLE_TO_ASSUME }}
320
+ aws-region: ${{ env.AWS_REGION }}
321
+
322
+ - name: Prepare Node
323
+ uses: actions/setup-node@v4
324
+ with:
325
+ node-version: 20
326
+ cache: 'npm'
327
+ cache-dependency-path: '**/package-lock.json'
328
+
329
+ - name: Setup Java
330
+ uses: actions/setup-java@v4
331
+ with:
332
+ distribution: 'zulu'
333
+ java-version: '17'
334
+ cache: 'gradle'
335
+
336
+ - name: Build QA
337
+ run: |
338
+ ./script/BuildQA.sh
339
+ env:
340
+ BUILD_QA: android
341
+ BUILD_OUTPUT: ${{ env.OUTPUT }}
342
+ BUILD_NUMBER: ${{ needs.prepare.outputs.build-number }}
343
+ KEYSTORE: ${{ secrets.KEYSTORE }}
344
+ KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
345
+ KEYSTORE_ALIAS: ${{ secrets.KEYSTORE_ALIAS }}
346
+ KEYSTORE_ALIAS_PASSWORD: ${{ secrets.KEYSTORE_ALIAS_PASSWORD }}
347
+
348
+ - name: prepare environment
349
+ id: prepare-environment
350
+ run: |
351
+ echo "expire=$(date -d '+90 days' '+%Y-%m-%d')" >> $GITHUB_OUTPUT
352
+ shell: bash
353
+
354
+ - name: Deploy QA Android Application
355
+ id: deploy-qa-android-application
356
+ run: |
357
+ aws s3 cp \
358
+ --expires '${{ steps.prepare-environment.outputs.expire }}' \
359
+ 'build/qa/${{ env.OUTPUT }}' \
360
+ 's3://${{ env.AWS_BUCKET }}/${{ needs.prepare.outputs.path }}/${{ env.OUTPUT }}'
361
+ aws cloudfront create-invalidation \
362
+ --distribution-id ${{ env.DISTRIBUTION_ID }} \
363
+ --paths "/${{ needs.prepare.outputs.path }}/${{ env.OUTPUT }}"
364
+
365
+ - name: result
366
+ id: result
367
+ run: |
368
+ echo "download-url=https://${{ env.AWS_DOMAIN }}/${{ needs.prepare.outputs.path }}/${{ env.OUTPUT }}" >> $GITHUB_OUTPUT
369
+
370
+ build-android-restricted:
371
+ runs-on: ${{ vars.LINUX_INSTANCE }}
372
+ needs: ['prepare']
373
+
374
+ env:
375
+ OUTPUT: android-restricted-application.apk
216
376
 
217
377
  outputs:
218
378
  expire: ${{ steps.prepare-environment.outputs.expire }}
@@ -240,12 +400,20 @@ jobs:
240
400
  distribution: 'zulu'
241
401
  java-version: '17'
242
402
  cache: 'gradle'
403
+
404
+ - name: prepare ChangeRestricted
405
+ run: |
406
+ rm ./qa/package-lock.json
407
+ ./script/ChangeRestricted.sh
408
+ cd qa
409
+ npm install
243
410
 
244
411
  - name: Build QA
245
412
  run: |
246
413
  ./script/BuildQA.sh
247
414
  env:
248
415
  BUILD_QA: android
416
+ BUILD_OUTPUT: ${{ env.OUTPUT }}
249
417
  BUILD_NUMBER: ${{ needs.prepare.outputs.build-number }}
250
418
  KEYSTORE: ${{ secrets.KEYSTORE }}
251
419
  KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
@@ -263,23 +431,25 @@ jobs:
263
431
  run: |
264
432
  aws s3 cp \
265
433
  --expires '${{ steps.prepare-environment.outputs.expire }}' \
266
- 'build/qa/android-application.apk' \
267
- 's3://${{ env.AWS_BUCKET }}/${{ needs.prepare.outputs.path }}/android-application.apk'
434
+ 'build/qa/${{ env.OUTPUT }}' \
435
+ 's3://${{ env.AWS_BUCKET }}/${{ needs.prepare.outputs.path }}/${{ env.OUTPUT }}'
268
436
  aws cloudfront create-invalidation \
269
437
  --distribution-id ${{ env.DISTRIBUTION_ID }} \
270
- --paths "/${{ needs.prepare.outputs.path }}/android-application.apk"
438
+ --paths "/${{ needs.prepare.outputs.path }}/${{ env.OUTPUT }}"
271
439
 
272
440
  - name: result
273
441
  id: result
274
442
  run: |
275
- echo "download-url=https://${{ env.AWS_DOMAIN }}/${{ needs.prepare.outputs.path }}/android-application.apk" >> $GITHUB_OUTPUT
276
-
443
+ echo "download-url=https://${{ env.AWS_DOMAIN }}/${{ needs.prepare.outputs.path }}/${{ env.OUTPUT }}" >> $GITHUB_OUTPUT
444
+
277
445
  report-success:
278
446
  runs-on: ${{ vars.LINUX_INSTANCE }}
279
447
  needs:
280
448
  - prepare
281
449
  - build-ios
450
+ - build-ios-restricted
282
451
  - build-android
452
+ - build-android-restricted
283
453
  if: ${{ always() && needs.prepare.result != 'skipped' && !contains(needs.*.result, 'failure') }}
284
454
 
285
455
  steps:
@@ -295,7 +465,7 @@ jobs:
295
465
  env:
296
466
  MESSAGE: "${{
297
467
  format(
298
- '{0}\\n{1}{2}{3}{4}{5}{6}\\n{7}{8}\\n{9}{10}',
468
+ '{0}\\n{1}{2}{3}{4}{5}{6}\\n{7}{8}{9}\\n{10}{11}{12}',
299
469
  format(
300
470
  '*Airbridge React Native SDK Build {0}*\\n',
301
471
  needs.prepare.outputs.build-number
@@ -330,6 +500,11 @@ jobs:
330
500
  needs.build-ios.outputs.download-url,
331
501
  needs.build-ios.outputs.install-url
332
502
  ),
503
+ format(
504
+ '*iOS Restricted Application*: [Download]({0}), [Install]({1})\\n',
505
+ needs.build-ios-restricted.outputs.download-url,
506
+ needs.build-ios-restricted.outputs.install-url
507
+ ),
333
508
  format(
334
509
  '*iOS Expire*: {0}\\n',
335
510
  needs.build-ios.outputs.expire
@@ -338,6 +513,10 @@ jobs:
338
513
  '*Android Application*: [Download]({0})\\n',
339
514
  needs.build-android.outputs.download-url
340
515
  ),
516
+ format(
517
+ '*Android Restricted Application*: [Download]({0})\\n',
518
+ needs.build-android-restricted.outputs.download-url
519
+ ),
341
520
  format(
342
521
  '*Android Expire*: {0}\\n',
343
522
  needs.build-android.outputs.expire
@@ -371,7 +550,9 @@ jobs:
371
550
  needs:
372
551
  - prepare
373
552
  - build-ios
553
+ - build-ios-restricted
374
554
  - build-android
555
+ - build-android-restricted
375
556
  if: ${{ always() && needs.prepare.result != 'skipped' && contains(needs.*.result, 'failure') }}
376
557
 
377
558
  steps:
@@ -1,6 +1,7 @@
1
1
  require 'json'
2
2
  require 'pathname'
3
3
  require_relative 'ios/copy-airbridge-json.rb'
4
+ require_relative 'ios/create-library-info-json.rb'
4
5
 
5
6
  current_directory=File.dirname(__FILE__)
6
7
  package = JSON.parse(File.read(File.join(current_directory, 'package.json')))
@@ -1,4 +1,4 @@
1
1
  {
2
- "ios_version": "4.1.3",
3
- "android_version": "4.1.2"
2
+ "ios_version": "4.2.2",
3
+ "android_version": "4.2.0"
4
4
  }
@@ -4,6 +4,10 @@ import com.android.Version
4
4
  apply plugin: 'com.android.library'
5
5
  apply plugin: 'kotlin-android'
6
6
 
7
+ def currentDirectory = buildFile.parentFile.toPath()
8
+ def packageJson = new JsonSlurper().parse(currentDirectory.resolve('../package.json'))
9
+ def airbridgeSDK = new JsonSlurper().parse(currentDirectory.resolve('../airbridge_sdk.json'))
10
+
7
11
  buildscript {
8
12
  ext.safeExtGet = { prop, fallback ->
9
13
  rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
@@ -30,7 +34,10 @@ android {
30
34
  minSdkVersion safeExtGet("minSdkVersion", 16)
31
35
  targetSdkVersion safeExtGet("targetSdkVersion", 34)
32
36
  versionCode 1
33
- versionName '1.0.0'
37
+ versionName "${packageJson['version']}"
38
+
39
+ buildConfigField("String", "AIRBRIDGE_REACT_NATIVE_NAME", "\"${packageJson['name']}\"")
40
+ buildConfigField("String", "AIRBRIDGE_REACT_NATIVE_VERSION", "\"${packageJson['version']}\"")
34
41
  }
35
42
  }
36
43
 
@@ -42,9 +49,6 @@ rootProject.allprojects {
42
49
  }
43
50
  }
44
51
 
45
- def currentDirectory = buildFile.parentFile.toPath()
46
- def airbridgeSDK = new JsonSlurper().parse(currentDirectory.resolve('../airbridge_sdk.json'))
47
-
48
52
  dependencies {
49
53
  implementation 'com.facebook.react:react-native:+'
50
54
  implementation "io.airbridge:sdk-android-restricted:${airbridgeSDK['android_version']}"
@@ -7,6 +7,7 @@ import android.util.Log
7
7
  import android.view.View
8
8
  import co.ab180.airbridge.Airbridge
9
9
  import co.ab180.airbridge.AirbridgeOptionBuilder
10
+ import co.ab180.airbridge.reactnative.common.AirbridgeJSON
10
11
  import co.ab180.airbridge.reactnative.common.AirbridgeLifecycleIntegration
11
12
  import co.ab180.airbridge.reactnative.extension.setAirbridgeJSON
12
13
  import co.ab180.airbridge.reactnative.extension.toMap
@@ -29,10 +30,15 @@ import java.io.IOException
29
30
 
30
31
  class AirbridgeReactNative : ReactPackage {
31
32
  companion object {
32
- private var lifecycleIntegration: AirbridgeLifecycleIntegration? = null
33
33
 
34
+ private var loadedAirbridgeJSON: Map<String, Any>? = null
35
+
36
+ private var lifecycleIntegration: AirbridgeLifecycleIntegration? = null
34
37
  private var isHandleAirbridgeDeeplinkOnly: Boolean = false
35
38
 
39
+ private var subWrapperSDKDevelopmentPlatform: String? = null
40
+ private var subWrapperSDKAttributes: Map<String, String>? = null
41
+
36
42
  /**
37
43
  * Initialize Airbridge SDK.
38
44
  *
@@ -47,9 +53,10 @@ class AirbridgeReactNative : ReactPackage {
47
53
  name: String,
48
54
  token: String,
49
55
  ) {
50
- initializeSDK(app, name, token, loadAirbridgeJSON(app)?.toMap())
56
+ initializeSDK(app, name, token, null)
51
57
  }
52
58
 
59
+ @Suppress("SameParameterValue")
53
60
  @JvmStatic
54
61
  private fun initializeSDK(
55
62
  app: Application,
@@ -57,20 +64,23 @@ class AirbridgeReactNative : ReactPackage {
57
64
  token: String,
58
65
  airbridgeJSON: Map<String, Any>?
59
66
  ) {
67
+ loadedAirbridgeJSON = AirbridgeJSON.load(app)?.toMap()
68
+
60
69
  setExtraOptions(airbridgeJSON)
61
70
 
62
71
  Airbridge.initializeSDK(
63
72
  app,
64
73
  AirbridgeOptionBuilder(name, token)
65
- .setAirbridgeJSON(airbridgeJSON)
66
- .setSDKDevelopmentPlatform("react_native")
67
- .setOnAttributionReceived {
68
- AttributionInteractor.onAttributionReceived(it)
69
- }
70
- .setLifecycleIntegration {
71
- lifecycleIntegration?.getDataString(it)
72
- }
73
- .build()
74
+ .setAirbridgeJSON(airbridgeJSON ?: loadedAirbridgeJSON)
75
+ .setSDKDevelopmentPlatform(getSDKDevelopmentPlatform())
76
+ .setSDKAttributes(getSDKAttributes())
77
+ .setOnAttributionReceived {
78
+ AttributionInteractor.onAttributionReceived(it)
79
+ }
80
+ .setLifecycleIntegration {
81
+ lifecycleIntegration?.getDataString(it)
82
+ }
83
+ .build()
74
84
  )
75
85
  Airbridge.handleDeferredDeeplink(
76
86
  onSuccess = { it?.also { DeeplinkInteractor.onDeeplinkReceived(it) } },
@@ -118,6 +128,28 @@ class AirbridgeReactNative : ReactPackage {
118
128
  isHandleAirbridgeDeeplinkOnly = it
119
129
  }
120
130
  }
131
+
132
+ private fun getSDKDevelopmentPlatform(): String {
133
+ return subWrapperSDKDevelopmentPlatform ?: "react_native"
134
+ }
135
+
136
+ private fun getSDKAttributes(): Map<String, String> {
137
+ return mutableMapOf(
138
+ "wrapperName" to BuildConfig.AIRBRIDGE_REACT_NATIVE_NAME,
139
+ "wrapperVersion" to BuildConfig.AIRBRIDGE_REACT_NATIVE_VERSION
140
+ ).apply {
141
+ subWrapperSDKAttributes?.let { putAll(it) }
142
+ }
143
+ }
144
+
145
+ @JvmStatic
146
+ private fun setSubWrapperSDK(
147
+ developmentPlatform: String,
148
+ sdkAttributes: Map<String, String>
149
+ ) {
150
+ subWrapperSDKDevelopmentPlatform = developmentPlatform
151
+ subWrapperSDKAttributes = sdkAttributes
152
+ }
121
153
  }
122
154
 
123
155
  override fun createNativeModules(
@@ -138,16 +170,3 @@ class AirbridgeReactNative : ReactPackage {
138
170
  reactContext: ReactApplicationContext
139
171
  ): List<ViewManager<View, ReactShadowNode<*>>> = emptyList()
140
172
  }
141
-
142
- private fun loadAirbridgeJSON(context: Context): JSONObject? {
143
- try {
144
- return JSONObject(context.assets.open("airbridge.json").reader().readText())
145
- } catch (ignored: IOException) {
146
- // when do not use airbridge.json file
147
- } catch (exception: JSONException) {
148
- Log.w("AirbridgeReactNative", "File airbridge.json is not in json format")
149
- } catch (throwable: Throwable) {
150
- // unknown exception
151
- }
152
- return null
153
- }
@@ -0,0 +1,22 @@
1
+ package co.ab180.airbridge.reactnative.common
2
+
3
+ import android.content.Context
4
+ import android.util.Log
5
+ import org.json.JSONException
6
+ import org.json.JSONObject
7
+ import java.io.IOException
8
+
9
+ object AirbridgeJSON {
10
+ fun load(context: Context): JSONObject? {
11
+ try {
12
+ return JSONObject(context.assets.open("airbridge.json").reader().readText())
13
+ } catch (ignored: IOException) {
14
+ // when do not use airbridge.json file
15
+ } catch (exception: JSONException) {
16
+ Log.w("AirbridgeReactNative", "File airbridge.json is not in json format")
17
+ } catch (throwable: Throwable) {
18
+ // unknown exception
19
+ }
20
+ return null
21
+ }
22
+ }
@@ -252,7 +252,7 @@ export class Airbridge {
252
252
  * @return `true` if the tracking feature of SDK tracking is enabled,`false` otherwise.
253
253
  */
254
254
  static isTrackingEnabled() {
255
- return __classPrivateFieldGet(this, _a, "f", _Airbridge_dependency).switchModule.isSDKEnabled();
255
+ return __classPrivateFieldGet(this, _a, "f", _Airbridge_dependency).switchModule.isTrackingEnabled();
256
256
  }
257
257
  // web interface
258
258
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"Airbridge.js","sourceRoot":"","sources":["../../source/Airbridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Airbridge.js","sourceRoot":"","sources":["../../source/Airbridge.ts"],"names":[],"mappings":"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"}
package/changelog.md CHANGED
@@ -1,3 +1,13 @@
1
+ ## 4.2.0
2
+
3
+ **FIXED**
4
+ * Improvements for SDK data collection.
5
+ * Fixed missing sdkEnable behavior in airbridge.json option on iOS
6
+
7
+ **CHANGED**
8
+ * Update `Airbridge Android SDK` to 4.2.0
9
+ * Update `Airbridge iOS SDK` to 4.2.2
10
+
1
11
  ## 4.1.6
2
12
 
3
13
  **FIXED**
@@ -10,8 +10,13 @@ import Airbridge
10
10
 
11
11
  @objc(AirbridgeReactNative_Swift)
12
12
  public class AirbridgeReactNative: NSObject {
13
+
14
+ private static var loadedAirbridgeJSON: [AnyHashable: Any]? = nil
13
15
 
14
16
  private static var isHandleAirbridgeDeeplinkOnly: Bool = false
17
+
18
+ private static var subWrapperSDKDevelopmentPlatform: String? = nil
19
+ private static var subWrapperSDKAttributes: [String: String]? = nil
15
20
 
16
21
  /// Initialize Airbridge SDK.
17
22
  /// - Parameter name: Name of Airbridge app that set on dashboard.
@@ -24,7 +29,7 @@ public class AirbridgeReactNative: NSObject {
24
29
  initializeSDK(
25
30
  name: name,
26
31
  token: token,
27
- airbridgeJSON: loadAirbridgeJSON()
32
+ airbridgeJSON: nil
28
33
  )
29
34
  }
30
35
 
@@ -34,12 +39,15 @@ public class AirbridgeReactNative: NSObject {
34
39
  token: String,
35
40
  airbridgeJSON: [AnyHashable: Any]?
36
41
  ) {
42
+ loadedAirbridgeJSON = loadAirbridgeJSON()
43
+
37
44
  setExtraOptions(airbridgeJSON: airbridgeJSON)
38
45
 
39
46
  Airbridge.initializeSDK(
40
47
  option: AirbridgeOptionBuilder(name: name, token: token)
41
- .setAirbridgeJSON(airbridgeJSON)
42
- .setSDKDevelopmentPlatform("react_native")
48
+ .setAirbridgeJSON(airbridgeJSON ?? loadedAirbridgeJSON)
49
+ .setSDKDevelopmentPlatform(getSDKDevelopmentPlatform())
50
+ .setSDKAttributes(getWrapperSDKAttributes())
43
51
  .setOnAttributionReceived { attribution in
44
52
  AttributionInteractor.onAttributionReceived(attribution)
45
53
  }
@@ -83,12 +91,31 @@ public class AirbridgeReactNative: NSObject {
83
91
  DeeplinkInteractor.onDeeplinkReceived(url)
84
92
  }
85
93
 
94
+ @objc
86
95
  private static func setExtraOptions(airbridgeJSON: [AnyHashable: Any]?) {
87
96
  guard let airbridgeJSON else { return }
88
97
  if let isHandleAirbridgeDeeplinkOnly = airbridgeJSON["isHandleAirbridgeDeeplinkOnly"] as? Bool {
89
98
  AirbridgeReactNative.isHandleAirbridgeDeeplinkOnly = isHandleAirbridgeDeeplinkOnly
90
99
  }
91
100
  }
101
+
102
+ private static func getSDKDevelopmentPlatform() -> String {
103
+ return subWrapperSDKDevelopmentPlatform ?? "react_native"
104
+ }
105
+
106
+ private static func getWrapperSDKAttributes() -> [String: String] {
107
+ return (getSDKVersionAttributes() ?? [:])
108
+ .merging(subWrapperSDKAttributes ?? [:]) { _, new in new }
109
+ }
110
+
111
+ @objc
112
+ private static func setSubWrapperSDK(
113
+ developmentPlatform: String,
114
+ sdkAttributes: [String : String]
115
+ ) {
116
+ subWrapperSDKDevelopmentPlatform = developmentPlatform
117
+ subWrapperSDKAttributes = sdkAttributes
118
+ }
92
119
  }
93
120
 
94
121
  func loadAirbridgeJSON() -> [AnyHashable: Any]? {
@@ -105,3 +132,17 @@ func loadAirbridgeJSON() -> [AnyHashable: Any]? {
105
132
  return nil
106
133
  }
107
134
  }
135
+
136
+ func getSDKVersionAttributes() -> [String: String] {
137
+ guard
138
+ let path = Bundle.main.path(forResource: "LibraryInfo", ofType: "json"),
139
+ let data = try? Data(contentsOf: URL(fileURLWithPath: path))
140
+ else { return [:] }
141
+
142
+ if let json = try? JSONSerialization.jsonObject(with: data) as? [String: Any] {
143
+ return json.compactMapValues { $0 as? String }
144
+ }
145
+
146
+ Logger.warning("File LibraryInfo.json is not in json format")
147
+ return [:]
148
+ }
@@ -2,6 +2,7 @@ require 'xcodeproj'
2
2
  require 'pathname'
3
3
 
4
4
  current_directory=File.dirname(__FILE__)
5
+
5
6
  ios_project_directory=`cd #{current_directory}; cd ../../../ios; pwd`.gsub("\n", "")
6
7
  ios_project_file=File.join(
7
8
  ios_project_directory,
@@ -12,8 +13,8 @@ project = Xcodeproj::Project.open(ios_project_file)
12
13
  target = project.targets.first
13
14
  phase = target.shell_script_build_phases().select {|phase| phase.name == "[Airbridge] Copy airbridge.json"}[0]
14
15
  script = (
15
- "if [ -r ${SRCROOT}/../airbridge.json ]; then" + "\n" \
16
- + " cp ${SRCROOT}/../airbridge.json ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/airbridge.json" + "\n" \
16
+ "if [ -r \"${SRCROOT}/../airbridge.json\" ]; then" + "\n" \
17
+ + " cp \"${SRCROOT}/../airbridge.json\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/airbridge.json\"" + "\n" \
17
18
  + "fi"
18
19
  )
19
20
  if phase == nil
@@ -0,0 +1,26 @@
1
+ require 'xcodeproj'
2
+ require 'pathname'
3
+
4
+ current_directory=File.dirname(__FILE__)
5
+
6
+ ios_project_directory=`cd #{current_directory}; cd ../../../ios; pwd`.gsub("\n", "")
7
+ ios_project_file=File.join(
8
+ ios_project_directory,
9
+ `cd #{ios_project_directory}; find . -maxdepth 1 -name "*.xcodeproj" | tail -1`,
10
+ ).gsub("\n", "")
11
+
12
+ package=JSON.parse(File.read(File.join(current_directory, '..', 'package.json')))
13
+ project = Xcodeproj::Project.open(ios_project_file)
14
+ target = project.targets.first
15
+ phase = target.shell_script_build_phases().select {|phase| phase.name == "[Airbridge] Create LibraryInfo.json"}[0]
16
+ script = (
17
+ "echo '{\"wrapperName\": \"" + package["name"] + "\", \"wrapperVersion\": \"" + package["version"] + "\"}' > \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/LibraryInfo.json\"" + "\n"
18
+ )
19
+ if phase == nil
20
+ phase = target.new_shell_script_build_phase("[Airbridge] Create LibraryInfo.json")
21
+ end
22
+ if phase.shell_script != script
23
+ phase.shell_script = script
24
+ end
25
+
26
+ project.save()