Skip to content

Commit 9d4c69a

Browse files
Merge pull request #274 from qonversion/release/7.2.0
Release 7.2.0
2 parents 4922415 + 1beab13 commit 9d4c69a

File tree

11 files changed

+93
-7
lines changed

11 files changed

+93
-7
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
## 7.2.0
2+
* Added attach/detach remote configuration functions
3+
14
## 7.1.0
25
* Added remote configuration source property.
36
* Added rate limits for API calls.

android/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,6 @@ android {
4343

4444
dependencies {
4545
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
46-
implementation "io.qonversion.sandwich:sandwich:3.1.1"
46+
implementation "io.qonversion.sandwich:sandwich:3.2.0"
4747
implementation 'com.google.code.gson:gson:2.9.0'
4848
}

android/src/main/kotlin/com/qonversion/flutter/sdk/qonversion_flutter_sdk/QonversionPlugin.kt

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,8 @@ class QonversionPlugin : MethodCallHandler, FlutterPlugin, ActivityAware {
138138
"checkTrialIntroEligibility" -> checkTrialIntroEligibility(args, result)
139139
"attachUserToExperiment" -> attachUserToExperiment(args, result)
140140
"detachUserFromExperiment" -> detachUserFromExperiment(args, result)
141+
"attachUserToRemoteConfiguration" -> attachUserToRemoteConfiguration(args, result)
142+
"detachUserFromRemoteConfiguration" -> detachUserFromRemoteConfiguration(args, result)
141143
"storeSdkInfo" -> storeSdkInfo(args, result)
142144
"identify" -> identify(args["userId"] as? String, result)
143145
"automationsSetNotificationsToken" -> automationsPlugin.setNotificationsToken(args["notificationsToken"] as? String, result)
@@ -280,20 +282,30 @@ class QonversionPlugin : MethodCallHandler, FlutterPlugin, ActivityAware {
280282
}
281283

282284
private fun attachUserToExperiment(args: Map<String, Any>, result: Result) {
283-
@Suppress("UNCHECKED_CAST")
284285
val experimentId = args["experimentId"] as? String ?: return result.noNecessaryDataError()
285286
val groupId = args["groupId"] as? String ?: return result.noNecessaryDataError()
286287

287288
qonversionSandwich.attachUserToExperiment(experimentId, groupId, result.toJsonResultListener())
288289
}
289290

290291
private fun detachUserFromExperiment(args: Map<String, Any>, result: Result) {
291-
@Suppress("UNCHECKED_CAST")
292292
val experimentId = args["experimentId"] as? String ?: return result.noNecessaryDataError()
293293

294294
qonversionSandwich.detachUserFromExperiment(experimentId, result.toJsonResultListener())
295295
}
296296

297+
private fun attachUserToRemoteConfiguration(args: Map<String, Any>, result: Result) {
298+
val remoteConfigurationId = args["remoteConfigurationId"] as? String ?: return result.noNecessaryDataError()
299+
300+
qonversionSandwich.attachUserToRemoteConfiguration(remoteConfigurationId, result.toJsonResultListener())
301+
}
302+
303+
private fun detachUserFromRemoteConfiguration(args: Map<String, Any>, result: Result) {
304+
val remoteConfigurationId = args["remoteConfigurationId"] as? String ?: return result.noNecessaryDataError()
305+
306+
qonversionSandwich.detachUserFromRemoteConfiguration(remoteConfigurationId, result.toJsonResultListener())
307+
}
308+
297309
private fun userInfo(result: Result) {
298310
qonversionSandwich.userInfo(result.toResultListener())
299311
}

ios/Classes/SwiftQonversionPlugin.swift

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,12 @@ public class SwiftQonversionPlugin: NSObject, FlutterPlugin {
138138
case "detachUserFromExperiment":
139139
return detachUserFromExperiment(args, result)
140140

141+
case "attachUserToRemoteConfiguration":
142+
return attachUserToRemoteConfiguration(args, result)
143+
144+
case "detachUserFromRemoteConfiguration":
145+
return detachUserFromRemoteConfiguration(args, result)
146+
141147
case "automationsSetNotificationsToken":
142148
automationsPlugin?.setNotificationsToken(args["notificationsToken"] as? String, result)
143149
return
@@ -295,6 +301,22 @@ public class SwiftQonversionPlugin: NSObject, FlutterPlugin {
295301

296302
qonversionSandwich?.detachUserFromExperiment(with: experimentId, completion: getJsonCompletion(result))
297303
}
304+
305+
private func attachUserToRemoteConfiguration(_ args: [String: Any], _ result: @escaping FlutterResult) {
306+
guard let remoteConfigurationId = args["remoteConfigurationId"] as? String else {
307+
return result(FlutterError.noNecessaryData)
308+
}
309+
310+
qonversionSandwich?.attachUserToRemoteConfiguration(with: remoteConfigurationId, completion: getJsonCompletion(result))
311+
}
312+
313+
private func detachUserFromRemoteConfiguration(_ args: [String: Any], _ result: @escaping FlutterResult) {
314+
guard let remoteConfigurationId = args["remoteConfigurationId"] as? String else {
315+
return result(FlutterError.noNecessaryData)
316+
}
317+
318+
qonversionSandwich?.detachUserFromRemoteConfiguration(with: remoteConfigurationId, completion: getJsonCompletion(result))
319+
}
298320

299321
private func storeSdkInfo(_ args: [String: Any], _ result: @escaping FlutterResult) {
300322
guard let version = args["version"] as? String,

ios/qonversion_flutter.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ Pod::Spec.new do |s|
1616
s.source_files = 'Classes/**/*'
1717
s.dependency 'Flutter'
1818
s.platform = :ios, '9.0'
19-
s.dependency "QonversionSandwich", "3.1.1"
19+
s.dependency "QonversionSandwich", "3.2.0"
2020

2121
# Flutter.framework does not contain a i386 slice. Only x86_64 simulators are supported.
2222
s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'VALID_ARCHS[sdk=iphonesimulator*]' => 'x86_64' }

lib/src/internal/constants.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ class Constants {
2727
static const kConfigData = 'configData';
2828
static const kExperimentId = 'experimentId';
2929
static const kGroupId = 'groupId';
30+
static const kRemoteConfigurationId = 'remoteConfigurationId';
3031

3132
// MethodChannel methods names
3233
static const mInitialize = 'initialize';
@@ -57,6 +58,8 @@ class Constants {
5758
static const mRemoteConfig = 'remoteConfig';
5859
static const mAttachUserToExperiment = 'attachUserToExperiment';
5960
static const mDetachUserFromExperiment = 'detachUserFromExperiment';
61+
static const mAttachUserToRemoteConfiguration = 'attachUserToRemoteConfiguration';
62+
static const mDetachUserFromRemoteConfiguration = 'detachUserFromRemoteConfiguration';
6063
static const mCollectAppleSearchAdsAttribution = 'collectAppleSearchAdsAttribution';
6164
static const mPresentCodeRedemptionSheet = 'presentCodeRedemptionSheet';
6265
static const mSubscribeAutomations = 'automationsSubscribe';

lib/src/internal/qonversion_internal.dart

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import 'package:qonversion_flutter/src/internal/utils/string.dart';
1111
import 'constants.dart';
1212

1313
class QonversionInternal implements Qonversion {
14-
static const String _sdkVersion = "7.1.0";
14+
static const String _sdkVersion = "7.2.0";
1515

1616
final MethodChannel _channel = MethodChannel('qonversion_plugin');
1717

@@ -240,6 +240,22 @@ class QonversionInternal implements Qonversion {
240240
return;
241241
}
242242

243+
Future<void> attachUserToRemoteConfiguration(String remoteConfigurationId) async {
244+
final args = {
245+
Constants.kRemoteConfigurationId: remoteConfigurationId,
246+
};
247+
await _channel.invokeMethod(Constants.mAttachUserToRemoteConfiguration, args);
248+
return;
249+
}
250+
251+
Future<void> detachUserFromRemoteConfiguration(String remoteConfigurationId) async {
252+
final args = {
253+
Constants.kRemoteConfigurationId: remoteConfigurationId,
254+
};
255+
await _channel.invokeMethod(Constants.mDetachUserFromRemoteConfiguration, args);
256+
return;
257+
}
258+
243259
@override
244260
Future<void> attribution(Map<dynamic, dynamic> data, QAttributionProvider provider) {
245261
final args = {

lib/src/qonversion.dart

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,14 @@ abstract class Qonversion {
188188
/// Use this function to detach the user from the experiment.
189189
Future<void> detachUserFromExperiment(String experimentId);
190190

191+
/// This function should be used for the test purposes only. Do not forget to delete the usage of this function before the release.
192+
/// Use this function to attach the user to the remote configuration.
193+
Future<void> attachUserToRemoteConfiguration(String remoteConfigurationId);
194+
195+
/// This function should be used for the test purposes only. Do not forget to delete the usage of this function before the release.
196+
/// Use this function to detach the user from the remote configuration.
197+
Future<void> detachUserFromRemoteConfiguration(String remoteConfigurationId);
198+
191199
/// iOS only. Returns `null` if called on Android.
192200
///
193201
/// Starts a promo purchase process with App Store [productId].

macos/Classes/SwiftQonversionPlugin.swift

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,12 @@ public class SwiftQonversionPlugin: NSObject, FlutterPlugin {
116116
case "detachUserFromExperiment":
117117
return detachUserFromExperiment(args, result)
118118

119+
case "attachUserToRemoteConfiguration":
120+
return attachUserToRemoteConfiguration(args, result)
121+
122+
case "detachUserFromRemoteConfiguration":
123+
return detachUserFromRemoteConfiguration(args, result)
124+
119125
default:
120126
return result(FlutterMethodNotImplemented)
121127
}
@@ -269,6 +275,22 @@ public class SwiftQonversionPlugin: NSObject, FlutterPlugin {
269275

270276
qonversionSandwich?.detachUserFromExperiment(with: experimentId, completion: getJsonCompletion(result))
271277
}
278+
279+
private func attachUserToRemoteConfiguration(_ args: [String: Any], _ result: @escaping FlutterResult) {
280+
guard let remoteConfigurationId = args["remoteConfigurationId"] as? String else {
281+
return result(FlutterError.noNecessaryData)
282+
}
283+
284+
qonversionSandwich?.attachUserToRemoteConfiguration(with: remoteConfigurationId, completion: getJsonCompletion(result))
285+
}
286+
287+
private func detachUserFromRemoteConfiguration(_ args: [String: Any], _ result: @escaping FlutterResult) {
288+
guard let remoteConfigurationId = args["remoteConfigurationId"] as? String else {
289+
return result(FlutterError.noNecessaryData)
290+
}
291+
292+
qonversionSandwich?.detachUserFromRemoteConfiguration(with: remoteConfigurationId, completion: getJsonCompletion(result))
293+
}
272294

273295
private func getDefaultCompletion(_ result: @escaping FlutterResult) -> BridgeCompletion {
274296
return { data, error in

macos/qonversion_flutter.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ Pod::Spec.new do |s|
1616
s.source_files = 'Classes/**/*'
1717
s.dependency 'FlutterMacOS'
1818
s.platform = :osx, '10.12'
19-
s.dependency "QonversionSandwich", "3.1.1"
19+
s.dependency "QonversionSandwich", "3.2.0"
2020

2121
s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES' }
2222
s.swift_version = '5.0'

0 commit comments

Comments
 (0)