airbridge-react-native-sdk-restricted 4.6.0 → 4.7.1
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 +12 -7
- package/airbridge_sdk.json +2 -2
- package/android/src/main/java/co/ab180/airbridge/reactnative/extension/AirbridgeOptionBuilderApply.kt +15 -0
- package/android/src/main/java/co/ab180/airbridge/reactnative/module/RegisterInteractor.kt +1 -1
- package/changelog.md +14 -0
- package/ios/AirbridgeReactNative/Extension/AirbridgeOptionBuilderApply.swift +17 -1
- package/package.json +1 -1
- package/qa/airbridge_qa.json +1 -1
- package/qa/android/app/src/main/java/co/ab180/airbridge/qa/application/ConfigurationLoader.kt +12 -4
- package/qa/ios/AirbridgeQA/AirbridgeJSONSwizzler.swift +7 -0
- package/qa/ios/AirbridgeQA.xcodeproj/project.pbxproj +1 -1
- package/qa/ios/Podfile.lock +7 -7
- package/qa/package-lock.json +1 -1
- package/qa/run-test-env.sh +1 -1
- package/qa/test/airbridge.development.json +2 -1
|
@@ -41,13 +41,12 @@ env:
|
|
|
41
41
|
}}
|
|
42
42
|
BRANCH: ${{ github.event.pull_request.head.ref || github.ref_name }}
|
|
43
43
|
TYPE: ${{
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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(
|
|
@@ -184,6 +183,9 @@ jobs:
|
|
|
184
183
|
cache: 'npm'
|
|
185
184
|
cache-dependency-path: '**/package-lock.json'
|
|
186
185
|
|
|
186
|
+
- name: Install missing iOS SDK platform
|
|
187
|
+
run: sudo xcodebuild -downloadPlatform iOS
|
|
188
|
+
|
|
187
189
|
- name: Cache CocoaPods
|
|
188
190
|
uses: actions/cache@v4
|
|
189
191
|
with:
|
|
@@ -262,6 +264,9 @@ jobs:
|
|
|
262
264
|
cache: 'npm'
|
|
263
265
|
cache-dependency-path: '**/package-lock.json'
|
|
264
266
|
|
|
267
|
+
- name: Install missing iOS SDK platform
|
|
268
|
+
run: sudo xcodebuild -downloadPlatform iOS
|
|
269
|
+
|
|
265
270
|
- name: Cache CocoaPods
|
|
266
271
|
uses: actions/cache@v4
|
|
267
272
|
with:
|
package/airbridge_sdk.json
CHANGED
|
@@ -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
|
}
|
|
@@ -51,7 +51,7 @@ internal class RegisterInteractor(
|
|
|
51
51
|
|
|
52
52
|
when(value.type) {
|
|
53
53
|
ReadableType.Number -> Airbridge.setUserAttribute(key, value.asDouble())
|
|
54
|
-
ReadableType.String -> Airbridge.setUserAttribute(key,
|
|
54
|
+
ReadableType.String -> value.asString()?.run { Airbridge.setUserAttribute(key, this) }
|
|
55
55
|
ReadableType.Boolean -> Airbridge.setUserAttribute(key, value.asBoolean())
|
|
56
56
|
else -> {}
|
|
57
57
|
}
|
package/changelog.md
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
## 4.7.1
|
|
2
|
+
|
|
3
|
+
**FIXED**
|
|
4
|
+
* Fixed compatibility with `asString()` method changes in React Native 0.80's null safety updates.
|
|
5
|
+
|
|
6
|
+
## 4.7.0
|
|
7
|
+
|
|
8
|
+
**ADDED**
|
|
9
|
+
* Added `trackingBlocklist` option that blocks specific tracking.
|
|
10
|
+
|
|
11
|
+
**CHANGED**
|
|
12
|
+
* Update `Airbridge Android SDK` to 4.7.0
|
|
13
|
+
* Update `Airbridge iOS SDK` to 4.7.0
|
|
14
|
+
|
|
1
15
|
## 4.6.0
|
|
2
16
|
|
|
3
17
|
**CHANGED**
|
|
@@ -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
package/qa/airbridge_qa.json
CHANGED
package/qa/android/app/src/main/java/co/ab180/airbridge/qa/application/ConfigurationLoader.kt
CHANGED
|
@@ -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
|
-
//
|
|
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
|
-
|
|
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.
|
|
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;
|
package/qa/ios/Podfile.lock
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
PODS:
|
|
2
|
-
- airbridge-ios-sdk (4.
|
|
3
|
-
- airbridge-ios-sdk-qa-library (4.
|
|
4
|
-
- airbridge-react-native-sdk (4.
|
|
5
|
-
- airbridge-ios-sdk (= 4.
|
|
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:
|
|
1946
|
-
airbridge-ios-sdk-qa-library:
|
|
1947
|
-
airbridge-react-native-sdk:
|
|
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
|
package/qa/package-lock.json
CHANGED
package/qa/run-test-env.sh
CHANGED