airbridge-react-native-sdk-restricted 4.5.1 → 4.7.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.
@@ -41,13 +41,12 @@ env:
41
41
  }}
42
42
  BRANCH: ${{ github.event.pull_request.head.ref || github.ref_name }}
43
43
  TYPE: ${{
44
- github.event_name == 'pull_request'
45
- && (
46
- startsWith(github.event.pull_request.head.ref, 'release/')
47
- || startsWith(github.event.pull_request.head.ref, 'hotfix/')
48
- )
49
- && 'Release'
50
- || 'Feature'
44
+ (
45
+ startsWith(github.event.pull_request.head.ref || github.ref_name, 'release/')
46
+ || startsWith(github.event.pull_request.head.ref || github.ref_name, 'hotfix/')
47
+ )
48
+ && 'Release'
49
+ || 'Feature'
51
50
  }}
52
51
  TAG: ${{
53
52
  format(
@@ -77,7 +77,7 @@ jobs:
77
77
  run: |
78
78
  {
79
79
  echo 'value<<EOF'
80
- cat CHANGELOG.md
80
+ cat changelog.md
81
81
  echo 'EOF'
82
82
  } >> $GITHUB_OUTPUT
83
83
 
@@ -1,4 +1,4 @@
1
1
  {
2
- "ios_version": "4.5.0",
3
- "android_version": "4.5.0"
2
+ "ios_version": "4.7.0",
3
+ "android_version": "4.7.0"
4
4
  }
@@ -3,6 +3,7 @@ package co.ab180.airbridge.reactnative.extension
3
3
  import co.ab180.airbridge.AirbridgeInAppPurchaseEnvironment
4
4
  import co.ab180.airbridge.AirbridgeLogLevel
5
5
  import co.ab180.airbridge.AirbridgeOptionBuilder
6
+ import co.ab180.airbridge.common.AirbridgeTrackingBlocklist
6
7
 
7
8
  internal fun AirbridgeOptionBuilder.setAirbridgeJSON(
8
9
  airbridgeJSON: Map<String, Any>?
@@ -94,6 +95,20 @@ internal fun AirbridgeOptionBuilder.setAirbridgeJSON(
94
95
  setCollectTCFDataEnabled(it)
95
96
  }
96
97
 
98
+ //4.7.0
99
+ (json["trackingBlocklist"] as? List<*>)?.also { array ->
100
+ val list = mutableListOf<AirbridgeTrackingBlocklist>()
101
+ array.mapNotNull { it as? String }.forEach { block ->
102
+ when(block.lowercase()) {
103
+ "gaid" -> list.add(AirbridgeTrackingBlocklist.GAID)
104
+ "oaid" -> list.add(AirbridgeTrackingBlocklist.OAID)
105
+ "appsetid" -> list.add(AirbridgeTrackingBlocklist.APP_SET_ID)
106
+ }
107
+ }
108
+ if (list.isNotEmpty()) {
109
+ setTrackingBlocklist(list)
110
+ }
111
+ }
97
112
 
98
113
  return this
99
114
  }
package/changelog.md CHANGED
@@ -1,3 +1,19 @@
1
+ ## 4.7.0
2
+
3
+ **ADDED**
4
+ * Added `trackingBlocklist` option that blocks specific tracking.
5
+
6
+ **CHANGED**
7
+ * Update `Airbridge Android SDK` to 4.7.0
8
+ * Update `Airbridge iOS SDK` to 4.7.0
9
+
10
+ ## 4.6.0
11
+
12
+ **CHANGED**
13
+ * In-app purchase measurement is now officially supported. The in-app purchase measurement feature will no longer be supported in earlier versions.
14
+ * Update `Airbridge Android SDK` to 4.6.0
15
+ * Update `Airbridge iOS SDK` to 4.6.0
16
+
1
17
  ## 4.5.1
2
18
 
3
19
  **ADDED**
@@ -94,7 +94,23 @@ extension AirbridgeOptionBuilder {
94
94
  if let collectTCFDataEnabled = json["collectTCFDataEnabled"] as? Bool {
95
95
  setCollectTCFDataEnabled(collectTCFDataEnabled)
96
96
  }
97
-
97
+
98
+ // 4.7.0
99
+ if let trackingBlocklist = json["trackingBlocklist"] as? Array<Any> {
100
+ let list = trackingBlocklist.compactMap({ $0 as? String })
101
+ .map { $0.trimmingCharacters(in: .whitespacesAndNewlines) }
102
+ .compactMap { block -> AirbridgeTrackingBlocklist? in
103
+ switch block.lowercased() {
104
+ case "idfa": return .idfa
105
+ case "idfv": return .idfv
106
+ default: return nil
107
+ }
108
+ }
109
+ if !list.isEmpty {
110
+ setTrackingBlocklist(list)
111
+ }
112
+ }
113
+
98
114
  return self
99
115
  }
100
116
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "airbridge-react-native-sdk-restricted",
3
- "version": "4.5.1",
3
+ "version": "4.7.0",
4
4
  "description": "Airbridge SDK for React Native",
5
5
  "main": "build/source/module.js",
6
6
  "types": "build/source/module.d.ts",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "internal_library": {
3
3
  "ios_version": null,
4
- "android_version": "4.5.0-build-+"
4
+ "android_version": null
5
5
  }
6
6
  }
@@ -6,6 +6,7 @@ import android.util.Log
6
6
  import co.ab180.airbridge.reactnative.AirbridgeReactNative
7
7
  import co.ab180.airbridge.reactnative.common.AirbridgeJSON
8
8
  import co.ab180.configuration.Loader
9
+ import co.ab180.configuration.model.Configuration
9
10
  import org.json.JSONObject
10
11
  import java.lang.reflect.Field
11
12
 
@@ -38,14 +39,21 @@ class ConfigurationLoader {
38
39
  }
39
40
  }
40
41
 
41
- // android - 4.4.0 기준
42
42
  // Loader.convertAirbridgeJsonFormat 에 아래 항목이 누락됨
43
- // collectTCFDataEnabled
43
+ // trackingBlocklist
44
44
  private fun loadOption(context: Context): Map<String, Any> =
45
45
  Loader.loadOption(context)
46
46
  .let {
47
- Loader.convertAirbridgeJsonFormat(it) +
48
- ("collectTCFDataEnabled" to it.collectTCFDataEnabled)
47
+ val result = Loader.convertAirbridgeJsonFormat(it).toMutableMap()
48
+
49
+ it.trackingBlocklist
50
+ .takeUnless { it.isNullOrEmpty() }
51
+ ?.split(",")
52
+ ?.map { item -> item.trim() }
53
+ ?.toList()
54
+ ?.run { result.put("trackingBlocklist", this) }
55
+
56
+ result
49
57
  }
50
58
  .also { Log.d(TAG, "loadOption : $it") }
51
59
  }
@@ -69,6 +69,13 @@ public class AirbridgeJSONSwizzler: NSObject {
69
69
  newDic["collectTCFDataEnabled"] = configuration.isCollectTCFDataEnabled
70
70
  newDic["inAppPurchaseEnvironment"] = configuration.inAppPurchaseEnvironment
71
71
 
72
+ // ios - 4.7.0 기준
73
+ // trackingBlocklist
74
+ // comma seperate 를 Array 로 변환 하여 전달
75
+ newDic["trackingBlocklist"] = configuration.trackingBlocklist
76
+ .split(separator: ",")
77
+ .map { $0.trimmingCharacters(in: .whitespacesAndNewlines) }
78
+
72
79
  configuration.applyToStorage()
73
80
  NSLog("Swizzling AirbridgeJSON loadOption: \(newDic)")
74
81
  return newDic
@@ -475,7 +475,7 @@
475
475
  );
476
476
  runOnlyForDeploymentPostprocessing = 0;
477
477
  shellPath = /bin/sh;
478
- shellScript = "echo '{\"wrapperName\": \"airbridge-react-native-sdk\", \"wrapperVersion\": \"4.5.1\"}' > \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/LibraryInfo.json\"\n";
478
+ shellScript = "echo '{\"wrapperName\": \"airbridge-react-native-sdk\", \"wrapperVersion\": \"4.7.0\"}' > \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/LibraryInfo.json\"\n";
479
479
  };
480
480
  F6A41C54EA430FDDC6A6ED99 /* [CP] Copy Pods Resources */ = {
481
481
  isa = PBXShellScriptBuildPhase;
@@ -19,9 +19,9 @@ Pod::Spec.new do |s|
19
19
  s.source = {
20
20
  :http => "https://sdk-internal.airbridge.io/build/airbridge-ios-sdk/#{airbridge_qa['internal_library']['ios_version']}/AirbridgeRestricted.zip"
21
21
  }
22
- s.preserve_paths = 'Airbridge'
23
- s.source_files = 'Airbridge/.Source/Airbridge.swift'
24
- s.vendored_frameworks = 'Airbridge/Airbridge.xcframework'
22
+ s.preserve_paths = 'AirbridgeRestricted'
23
+ s.source_files = 'AirbridgeRestricted/.Source/Airbridge.swift'
24
+ s.vendored_frameworks = 'AirbridgeRestricted/Airbridge.xcframework'
25
25
 
26
26
  s.summary = 'Airbridge SDK for iOS'
27
27
  s.description = <<-DESC
package/qa/ios/Podfile CHANGED
@@ -30,7 +30,7 @@ target 'AirbridgeQA' do
30
30
  if airbridge_qa['internal_library']['ios_version'].nil?
31
31
  pod 'airbridge-ios-sdk-qa-library', :podspec => 'Library/airbridge-ios-sdk-qa-library.podspec'
32
32
  else
33
- pod 'airbridge-ios-sdk-restricted', :podspec => 'InternalLibrary/airbridge-ios-restricted.podspec'
33
+ pod 'airbridge-ios-sdk-restricted', :podspec => 'InternalLibrary/airbridge-ios-sdk-restricted.podspec'
34
34
  pod 'airbridge-ios-sdk-qa-library', :podspec => 'InternalLibrary/airbridge-ios-sdk-qa-library.podspec'
35
35
  end
36
36
 
@@ -1,8 +1,8 @@
1
1
  PODS:
2
- - airbridge-ios-sdk (4.5.0)
3
- - airbridge-ios-sdk-qa-library (4.5.0)
4
- - airbridge-react-native-sdk (4.5.1):
5
- - airbridge-ios-sdk (= 4.5.0)
2
+ - airbridge-ios-sdk (4.7.0)
3
+ - airbridge-ios-sdk-qa-library (4.7.0)
4
+ - airbridge-react-native-sdk (4.7.0):
5
+ - airbridge-ios-sdk (= 4.7.0)
6
6
  - React
7
7
  - boost (1.84.0)
8
8
  - DoubleConversion (1.1.6)
@@ -1942,9 +1942,9 @@ EXTERNAL SOURCES:
1942
1942
  :path: "../node_modules/react-native/ReactCommon/yoga"
1943
1943
 
1944
1944
  SPEC CHECKSUMS:
1945
- airbridge-ios-sdk: 946af56d181b7a0844cc238b7e44d3ca769dece7
1946
- airbridge-ios-sdk-qa-library: feee7ec9693a94c8560d852142c94442c494c306
1947
- airbridge-react-native-sdk: baa500ccf28a44abfe4e78254bb71bdb59c939e4
1945
+ airbridge-ios-sdk: f0f227bfde8baf7b85f956b4772e32a3a2821c5a
1946
+ airbridge-ios-sdk-qa-library: 95371d16e0ecd8578d5d4be901be262fc9ba062d
1947
+ airbridge-react-native-sdk: a45768deb6456e26eca373cb16932364228dc420
1948
1948
  boost: 4cb898d0bf20404aab1850c656dcea009429d6c1
1949
1949
  DoubleConversion: 76ab83afb40bddeeee456813d9c04f67f78771b5
1950
1950
  FBAEMKit: e34530df538b8eb8aeb53c35867715ba6c63ef0c
@@ -14,7 +14,7 @@
14
14
  "airbridge-react-native-sdk-restricted": "file:..",
15
15
  "react": "18.3.1",
16
16
  "react-native": "0.75.1",
17
- "react-native-gesture-handler": "^2.18.0",
17
+ "react-native-gesture-handler": "2.25.0",
18
18
  "react-native-native-log": "^0.1.3",
19
19
  "react-native-safe-area-context": "^4.10.8",
20
20
  "react-native-screens": "^3.33.0",
@@ -43,7 +43,7 @@
43
43
  }
44
44
  },
45
45
  "..": {
46
- "version": "4.5.1",
46
+ "version": "4.7.0",
47
47
  "license": "MIT",
48
48
  "devDependencies": {
49
49
  "@types/jest": "^29.5.12",
package/qa/package.json CHANGED
@@ -21,7 +21,7 @@
21
21
  "airbridge-react-native-sdk-restricted": "file:..",
22
22
  "react": "18.3.1",
23
23
  "react-native": "0.75.1",
24
- "react-native-gesture-handler": "^2.18.0",
24
+ "react-native-gesture-handler": "2.25.0",
25
25
  "react-native-native-log": "^0.1.3",
26
26
  "react-native-safe-area-context": "^4.10.8",
27
27
  "react-native-screens": "^3.33.0",
@@ -0,0 +1,54 @@
1
+ #!/bin/bash
2
+
3
+ echo "Select Platform"
4
+ echo " 1. android"
5
+ echo " 2. ios"
6
+
7
+ read -p "Select Platform: " PLATFORM
8
+ echo ""
9
+
10
+ if [ $PLATFORM == "1" ]; then
11
+ export RUN_PLATFORM=run-android
12
+ elif [ $PLATFORM == "2" ]; then
13
+ export RUN_PLATFORM=run-ios
14
+ else
15
+ exit 1
16
+ fi
17
+
18
+ echo "Select AIRBRIDGE_ENVIRONMENT"
19
+ echo " 1. default"
20
+ echo " 2. development"
21
+ echo " 3. test-dev200"
22
+ echo " 4. test_dev201"
23
+ echo " 5. test-dev@notsupport"
24
+ echo " 6. test-not-exist"
25
+
26
+ read -p "Enter your environment (default: 1): " INPUT
27
+ echo ""
28
+
29
+ if [ $INPUT == "1" ]; then
30
+ echo "select default env"
31
+ elif [ $INPUT == "2" ]; then
32
+ export AIRBRIDGE_ENVIRONMENT=development
33
+ elif [ $INPUT == "3" ]; then
34
+ export AIRBRIDGE_ENVIRONMENT=test-dev200
35
+ elif [ $INPUT == "4" ]; then
36
+ export AIRBRIDGE_ENVIRONMENT=test_dev201
37
+ elif [ $INPUT == "5" ]; then
38
+ export AIRBRIDGE_ENVIRONMENT=test-dev@notsupport
39
+ elif [ $INPUT == "6" ]; then
40
+ export AIRBRIDGE_ENVIRONMENT=test-not-exist
41
+ else
42
+ echo "select wrong. set default env"
43
+ fi
44
+
45
+ cp "test/airbridge.$AIRBRIDGE_ENVIRONMENT.json" .
46
+
47
+ echo ""
48
+ echo "###############################################"
49
+ echo "## RUN_PLATFORM: $RUN_PLATFORM"
50
+ echo "## AIRBRIDGE_ENVIRONMENT: $AIRBRIDGE_ENVIRONMENT"
51
+ echo "###############################################"
52
+ echo ""
53
+
54
+ npx react-native $RUN_PLATFORM --port=9000
@@ -0,0 +1,6 @@
1
+ {
2
+ "sessionTimeoutInSecond": 30,
3
+ "collectTCFDataEnabled": true,
4
+ "logLevel": "debug",
5
+ "trackingBlocklist": ["gaid", "appsetid", "idfa", "idfv"]
6
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "sessionTimeoutInSecond": 200,
3
+ "logLevel": "debug"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "sessionTimeoutInSecond": 404,
3
+ "logLevel": "debug"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "sessionTimeoutInSecond": 201,
3
+ "logLevel": "debug"
4
+ }
@@ -27,9 +27,11 @@ perl -i -pe "s/from 'airbridge-react-native-sdk'/from 'airbridge-react-native-sd
27
27
  perl -i -pe "s/from 'airbridge-react-native-sdk'/from 'airbridge-react-native-sdk-restricted'/g" "$ROOT_DIRECTORY"/qa/source/**/*
28
28
  perl -i -pe "s/= 'airbridge-ios-sdk'/= 'airbridge-ios-sdk-restricted'/g" "$ROOT_DIRECTORY/qa/ios/InternalLibrary/airbridge-ios-sdk.podspec"
29
29
  perl -i -pe 's/Airbridge.zip"/AirbridgeRestricted.zip"/g' "$ROOT_DIRECTORY/qa/ios/InternalLibrary/airbridge-ios-sdk.podspec"
30
+ perl -i -pe "s/'Airbridge'/'AirbridgeRestricted'/g" "$ROOT_DIRECTORY/qa/ios/InternalLibrary/airbridge-ios-sdk.podspec"
31
+ perl -i -pe "s!'Airbridge/!'AirbridgeRestricted/!g" "$ROOT_DIRECTORY/qa/ios/InternalLibrary/airbridge-ios-sdk.podspec"
30
32
  mv "$ROOT_DIRECTORY/qa/ios/InternalLibrary/airbridge-ios-sdk.podspec" "$ROOT_DIRECTORY/qa/ios/InternalLibrary/airbridge-ios-sdk-restricted.podspec"
31
33
  perl -i -pe "s/pod 'airbridge-ios-sdk'/pod 'airbridge-ios-sdk-restricted'/g" "$ROOT_DIRECTORY/qa/ios/Podfile"
32
- perl -i -pe "s!:podspec => 'InternalLibrary/airbridge-ios-sdk.podspec'!:podspec => 'InternalLibrary/airbridge-ios-restricted.podspec'!g" "$ROOT_DIRECTORY/qa/ios/Podfile"
34
+ perl -i -pe "s!:podspec => 'InternalLibrary/airbridge-ios-sdk.podspec'!:podspec => 'InternalLibrary/airbridge-ios-sdk-restricted.podspec'!g" "$ROOT_DIRECTORY/qa/ios/Podfile"
33
35
  perl -i -pe 's/implementation "io.airbridge:sdk-android:/implementation "io.airbridge:sdk-android-restricted:/g' "$ROOT_DIRECTORY/qa/android/app/build.gradle"
34
36
 
35
37
  echo 'Done'
@@ -1,4 +0,0 @@
1
- {
2
- "sessionTimeoutInSecond": 30,
3
- "logLevel": "debug"
4
- }