diff --git a/example/android/app/src/main/AndroidManifest.xml b/example/android/app/src/main/AndroidManifest.xml
index b0b5a1ec..e04a4f83 100644
--- a/example/android/app/src/main/AndroidManifest.xml
+++ b/example/android/app/src/main/AndroidManifest.xml
@@ -10,7 +10,6 @@
{
isObserveMode: false,
);
+ Qonversion.setAppleSearchAdsAttributionEnabled(true);
+
setState(() {});
}
diff --git a/ios/Classes/SwiftQonversionFlutterSdkPlugin.swift b/ios/Classes/SwiftQonversionFlutterSdkPlugin.swift
index ee313877..3d351cc6 100644
--- a/ios/Classes/SwiftQonversionFlutterSdkPlugin.swift
+++ b/ios/Classes/SwiftQonversionFlutterSdkPlugin.swift
@@ -102,6 +102,10 @@ public class SwiftQonversionFlutterSdkPlugin: NSObject, FlutterPlugin {
case "identify":
return identify(args["userId"] as? String, result)
+
+ case "setAppleSearchAdsAttributionEnabled":
+ let enable = args["enable"] as? Bool ?? false
+ return setAppleSearchAdsAttributionEnabled(enable, result)
default:
return result(FlutterMethodNotImplemented)
@@ -336,6 +340,13 @@ public class SwiftQonversionFlutterSdkPlugin: NSObject, FlutterPlugin {
result(nil)
}
+
+ private func setAppleSearchAdsAttributionEnabled(_ enable: Bool, _ result: @escaping FlutterResult) {
+ if enable {
+ Qonversion.setAppleSearchAdsAttributionEnabled(enable)
+ }
+ result(nil)
+ }
}
extension SwiftQonversionFlutterSdkPlugin: Qonversion.PurchasesDelegate {
diff --git a/ios/qonversion_flutter.podspec b/ios/qonversion_flutter.podspec
index d062ad41..f56a85e1 100644
--- a/ios/qonversion_flutter.podspec
+++ b/ios/qonversion_flutter.podspec
@@ -16,7 +16,7 @@ Pod::Spec.new do |s|
s.source_files = 'Classes/**/*'
s.dependency 'Flutter'
s.platform = :ios, '9.0'
- s.dependency 'Qonversion', '2.18.1'
+ s.dependency 'Qonversion', '2.18.3'
# Flutter.framework does not contain a i386 slice. Only x86_64 simulators are supported.
s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'VALID_ARCHS[sdk=iphonesimulator*]' => 'x86_64' }
diff --git a/lib/src/constants.dart b/lib/src/constants.dart
index 4d9d5f7f..a638bb92 100644
--- a/lib/src/constants.dart
+++ b/lib/src/constants.dart
@@ -16,6 +16,7 @@ class Constants {
static const kProperty = 'property';
static const kValue = 'value';
static const kProrationMode = 'proration_mode';
+ static const kEnableAppleSearchAdsAttribution = 'enable';
// MethodChannel methods names
static const mLaunch = 'launch';
@@ -38,6 +39,8 @@ class Constants {
static const mStoreSdkInfo = 'storeSdkInfo';
static const mIdentify = 'identify';
static const mLogout = 'logout';
+ static const mSetAppleSearchAdsAttributionEnabled =
+ 'setAppleSearchAdsAttributionEnabled';
// Keys for NSUserDefaults on iOS and SharedPreferences on Android
static const keyPrefix = 'com.qonversion.keys';
diff --git a/lib/src/qonversion.dart b/lib/src/qonversion.dart
index 2faa24c1..91337a86 100644
--- a/lib/src/qonversion.dart
+++ b/lib/src/qonversion.dart
@@ -296,6 +296,16 @@ class Qonversion {
return QMapper.eligibilityFromJson(eligibilitiesString);
}
+ /// Enable attribution collection from Apple Search Ads. NO by default.
+ static Future setAppleSearchAdsAttributionEnabled(bool enable) async {
+ if (!Platform.isIOS) {
+ return null;
+ }
+
+ return _channel.invokeMethod(Constants.mSetAppleSearchAdsAttributionEnabled,
+ {Constants.kEnableAppleSearchAdsAttribution: enable});
+ }
+
// Private methods
static Future _storeSdkInfo() =>
_channel.invokeMethod(Constants.mStoreSdkInfo, {
diff --git a/macos/qonversion_flutter.podspec b/macos/qonversion_flutter.podspec
index d31def41..0de06989 100644
--- a/macos/qonversion_flutter.podspec
+++ b/macos/qonversion_flutter.podspec
@@ -16,7 +16,7 @@ Pod::Spec.new do |s|
s.source_files = 'Classes/**/*'
s.dependency 'FlutterMacOS'
s.platform = :osx, '10.12'
- s.dependency 'Qonversion', '2.18.1'
+ s.dependency 'Qonversion', '2.18.3'
s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES' }
s.swift_version = '5.0'
s.static_framework = true