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.
- package/.github/workflows/build.yml +191 -10
- package/airbridge-react-native-sdk-restricted.podspec +1 -0
- package/airbridge_sdk.json +2 -2
- package/android/build.gradle +8 -4
- package/android/src/main/java/co/ab180/airbridge/reactnative/AirbridgeReactNative.kt +43 -24
- package/android/src/main/java/co/ab180/airbridge/reactnative/common/AirbridgeJSON.kt +22 -0
- package/build/source/Airbridge.js +1 -1
- package/build/source/Airbridge.js.map +1 -1
- package/changelog.md +10 -0
- package/ios/AirbridgeReactNative/AirbridgeReactNative.swift +44 -3
- package/ios/copy-airbridge-json.rb +3 -2
- package/ios/create-library-info-json.rb +26 -0
- package/package.json +1 -1
- package/qa/airbridge_qa.json +1 -1
- package/qa/ios/AirbridgeQA/APNsSetting.h +11 -0
- package/qa/ios/AirbridgeQA/APNsSetting.m +20 -0
- package/qa/ios/AirbridgeQA/AppDelegate.mm +15 -0
- package/qa/ios/AirbridgeQA/Bridging-Header.h +8 -0
- package/qa/ios/AirbridgeQA/IdentifiersInteractor.m +2 -0
- package/qa/ios/AirbridgeQA/IdentifiersInteractor.swift +17 -0
- package/qa/ios/AirbridgeQA/Info.plist +1 -0
- package/qa/ios/AirbridgeQA.xcodeproj/project.pbxproj +33 -2
- package/qa/ios/Podfile.lock +51 -32
- package/qa/package-lock.json +8874 -2083
- package/qa/source/App.js +1 -1
- package/qa/source/common/FCMService.js +35 -5
- package/qa/source/pages/AppInfo.js +1 -0
- package/script/BuildQA.sh +4 -7
- package/script/ChangeRestricted.sh +1 -0
- package/source/Airbridge.ts +1 -1
|
@@ -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.
|
|
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.
|
|
47
|
-
|| startsWith(github.event.pull_request.head.
|
|
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
|
|
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
|
|
267
|
-
's3://${{ env.AWS_BUCKET }}/${{ needs.prepare.outputs.path }}
|
|
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 }}
|
|
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 }}
|
|
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}
|
|
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:
|
package/airbridge_sdk.json
CHANGED
package/android/build.gradle
CHANGED
|
@@ -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 '
|
|
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,
|
|
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
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
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.
|
|
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:
|
|
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(
|
|
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()
|