diff --git a/android/src/main/kotlin/com/qonversion/flutter/sdk/qonversion_flutter_sdk/NoCodesPlugin.kt b/android/src/main/kotlin/com/qonversion/flutter/sdk/qonversion_flutter_sdk/NoCodesPlugin.kt index 23d9e91..5f76609 100644 --- a/android/src/main/kotlin/com/qonversion/flutter/sdk/qonversion_flutter_sdk/NoCodesPlugin.kt +++ b/android/src/main/kotlin/com/qonversion/flutter/sdk/qonversion_flutter_sdk/NoCodesPlugin.kt @@ -60,10 +60,17 @@ class NoCodesPlugin(private val messenger: BinaryMessenger, private val context: this.screenFailedToLoadEventStreamHandler = screenFailedToLoadListener.eventStreamHandler } - fun initializeNoCodes(projectKey: String, result: Result) { + fun initializeNoCodes(args: Map, result: Result) { + val projectKey = args["projectKey"] as? String ?: return result.noNecessaryDataError() + val version = args["version"] as? String ?: return result.noNecessaryDataError() + val source = args["source"] as? String ?: return result.noNecessaryDataError() + if (projectKey.isNotEmpty()) { // Initialize NoCodes Sandwich noCodesSandwich = NoCodesSandwich() + + noCodesSandwich?.storeSdkInfo(context, source, version) + noCodesSandwich?.initialize(context, projectKey) noCodesSandwich?.setDelegate(this) result.success(null) diff --git a/android/src/main/kotlin/com/qonversion/flutter/sdk/qonversion_flutter_sdk/QonversionPlugin.kt b/android/src/main/kotlin/com/qonversion/flutter/sdk/qonversion_flutter_sdk/QonversionPlugin.kt index 041d628..5b3de7f 100644 --- a/android/src/main/kotlin/com/qonversion/flutter/sdk/qonversion_flutter_sdk/QonversionPlugin.kt +++ b/android/src/main/kotlin/com/qonversion/flutter/sdk/qonversion_flutter_sdk/QonversionPlugin.kt @@ -133,7 +133,7 @@ class QonversionPlugin : MethodCallHandler, FlutterPlugin, ActivityAware { "storeSdkInfo" -> storeSdkInfo(args, result) "identify" -> identify(args["userId"] as? String, result) // NoCodes methods - "initializeNoCodes" -> noCodesPlugin?.initializeNoCodes(args["projectKey"] as? String ?: "", result) + "initializeNoCodes" -> noCodesPlugin?.initializeNoCodes(args, result) "setScreenPresentationConfig" -> noCodesPlugin?.setScreenPresentationConfig(args["config"] as? Map, args["contextKey"] as? String, result) "showNoCodesScreen" -> noCodesPlugin?.showNoCodesScreen(args["contextKey"] as? String, result) else -> result.notImplemented() diff --git a/example/.gitignore b/example/.gitignore index 422d998..025e456 100644 --- a/example/.gitignore +++ b/example/.gitignore @@ -36,6 +36,7 @@ ios/Podfile.lock # Android related android/keystore/ +.cxx/ # Web related lib/generated_plugin_registrant.dart diff --git a/lib/qonversion_flutter.dart b/lib/qonversion_flutter.dart index f075cd5..4a4cae8 100644 --- a/lib/qonversion_flutter.dart +++ b/lib/qonversion_flutter.dart @@ -7,7 +7,9 @@ export 'src/dto/entitlement_source.dart'; export 'src/dto/entitlements_cache_lifetime.dart'; export 'src/dto/environment.dart'; export 'src/dto/launch_mode.dart'; +export 'src/dto/nocodes_events.dart'; export 'src/dto/offerings.dart'; +export 'src/dto/presentation_config.dart'; export 'src/dto/product.dart'; export 'src/dto/product_type.dart'; export 'src/dto/promotional_offer.dart'; @@ -42,10 +44,9 @@ export 'src/dto/store_product/product_offer_details.dart'; export 'src/dto/store_product/product_price.dart'; export 'src/dto/store_product/product_pricing_phase.dart'; export 'src/dto/store_product/product_store_details.dart'; +export 'src/nocodes.dart'; +export 'src/nocodes_config.dart'; +export 'src/nocodes_config_builder.dart'; export 'src/qonversion.dart'; export 'src/qonversion_config.dart'; export 'src/qonversion_config_builder.dart'; -export 'src/nocodes/nocodes.dart'; -export 'src/nocodes/nocodes_config.dart'; -export 'src/nocodes/nocodes_events.dart'; -export 'src/nocodes/presentation_config.dart'; diff --git a/lib/src/nocodes/nocodes_events.dart b/lib/src/dto/nocodes_events.dart similarity index 100% rename from lib/src/nocodes/nocodes_events.dart rename to lib/src/dto/nocodes_events.dart diff --git a/lib/src/nocodes/presentation_config.dart b/lib/src/dto/presentation_config.dart similarity index 100% rename from lib/src/nocodes/presentation_config.dart rename to lib/src/dto/presentation_config.dart diff --git a/lib/src/internal/constants.dart b/lib/src/internal/constants.dart index 088a56d..60b16ad 100644 --- a/lib/src/internal/constants.dart +++ b/lib/src/internal/constants.dart @@ -33,6 +33,8 @@ class Constants { static const kDiscountId = 'discountId'; static const kPromoOffer = 'promoOffer'; static const kConfig = 'config'; + static const kVersion = 'version'; + static const kSource = 'source'; // MethodChannel methods names static const mInitialize = 'initialize'; @@ -74,6 +76,7 @@ class Constants { static const mShowNoCodesScreen = 'showNoCodesScreen'; static const mCloseNoCodes = 'closeNoCodes'; - // Numeric constants + // Other constants static const skuDetailsPriceRatio = 1000000; + static const sdkSource = "flutter"; } diff --git a/lib/src/nocodes/nocodes_internal.dart b/lib/src/internal/nocodes_internal.dart similarity index 93% rename from lib/src/nocodes/nocodes_internal.dart rename to lib/src/internal/nocodes_internal.dart index 72c409a..f58c3d2 100644 --- a/lib/src/nocodes/nocodes_internal.dart +++ b/lib/src/internal/nocodes_internal.dart @@ -1,10 +1,11 @@ import 'dart:async'; import 'dart:io'; import 'package:flutter/services.dart'; -import 'nocodes_events.dart'; -import 'nocodes_config.dart'; -import 'nocodes.dart'; -import 'presentation_config.dart'; +import 'package:qonversion_flutter/src/internal/qonversion_internal.dart'; +import '../dto/nocodes_events.dart'; +import '../dto/presentation_config.dart'; +import '../nocodes_config.dart'; +import '../nocodes.dart'; import 'dart:convert'; import '../internal/constants.dart'; @@ -28,9 +29,11 @@ class NoCodesInternal implements NoCodes { if (Platform.isMacOS) { return; } - + final args = { Constants.kProjectKey: config.projectKey, + Constants.kVersion: QonversionInternal.sdkVersion, + Constants.kSource: Constants.sdkSource, }; _channel.invokeMethod(Constants.mInitializeNoCodes, args); } @@ -152,4 +155,4 @@ class NoCodesInternal implements NoCodes { await _channel.invokeMethod(Constants.mCloseNoCodes); } -} \ No newline at end of file +} \ No newline at end of file diff --git a/lib/src/internal/qonversion_internal.dart b/lib/src/internal/qonversion_internal.dart index 170a11a..9e71950 100644 --- a/lib/src/internal/qonversion_internal.dart +++ b/lib/src/internal/qonversion_internal.dart @@ -11,7 +11,7 @@ import 'package:qonversion_flutter/src/internal/utils/string.dart'; import 'constants.dart'; class QonversionInternal implements Qonversion { - static const String _sdkVersion = "10.0.2"; + static const String sdkVersion = "10.0.2"; final MethodChannel _channel = MethodChannel('qonversion_plugin'); @@ -402,8 +402,8 @@ class QonversionInternal implements Qonversion { // Private methods Future _storeSdkInfo() => _channel.invokeMethod(Constants.mStoreSdkInfo, { - "version": _sdkVersion, - "source": "flutter", + Constants.kVersion: sdkVersion, + Constants.kSource: Constants.sdkSource, }); static QPurchaseException _convertPurchaseException(PlatformException error) { diff --git a/lib/src/nocodes/nocodes.dart b/lib/src/nocodes.dart similarity index 96% rename from lib/src/nocodes/nocodes.dart rename to lib/src/nocodes.dart index d763d64..d722117 100644 --- a/lib/src/nocodes/nocodes.dart +++ b/lib/src/nocodes.dart @@ -1,8 +1,8 @@ import 'dart:async'; -import 'nocodes_events.dart'; +import 'dto/nocodes_events.dart'; +import 'dto/presentation_config.dart'; import 'nocodes_config.dart'; -import 'nocodes_internal.dart'; -import 'presentation_config.dart'; +import 'internal/nocodes_internal.dart'; /// Main No-Codes API class /// diff --git a/lib/src/nocodes_config.dart b/lib/src/nocodes_config.dart new file mode 100644 index 0000000..b36d343 --- /dev/null +++ b/lib/src/nocodes_config.dart @@ -0,0 +1,6 @@ +/// Configuration for No-Codes initialization +class NoCodesConfig { + final String projectKey; + + const NoCodesConfig(this.projectKey); +} \ No newline at end of file diff --git a/lib/src/nocodes/nocodes_config.dart b/lib/src/nocodes_config_builder.dart similarity index 63% rename from lib/src/nocodes/nocodes_config.dart rename to lib/src/nocodes_config_builder.dart index 7b00a2c..e39b7b7 100644 --- a/lib/src/nocodes/nocodes_config.dart +++ b/lib/src/nocodes_config_builder.dart @@ -1,11 +1,6 @@ -/// Configuration for NoCodes initialization -class NoCodesConfig { - final String projectKey; - - const NoCodesConfig(this.projectKey); -} +import 'nocodes_config.dart'; -/// Builder for NoCodes configuration +/// Builder for No-Codes configuration class NoCodesConfigBuilder { final String projectKey; @@ -17,4 +12,4 @@ class NoCodesConfigBuilder { NoCodesConfig build() { return NoCodesConfig(projectKey); } -} \ No newline at end of file +} \ No newline at end of file diff --git a/pubspec.lock b/pubspec.lock index 9727636..9cf0e31 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -29,10 +29,10 @@ packages: dependency: transitive description: name: async - sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb" + sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63 url: "https://pub.dev" source: hosted - version: "2.13.0" + version: "2.12.0" boolean_selector: dependency: transitive description: @@ -173,10 +173,10 @@ packages: dependency: transitive description: name: fake_async - sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" + sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc" url: "https://pub.dev" source: hosted - version: "1.3.3" + version: "1.3.2" file: dependency: transitive description: @@ -279,10 +279,10 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0" + sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec url: "https://pub.dev" source: hosted - version: "10.0.9" + version: "10.0.8" leak_tracker_flutter_testing: dependency: transitive description: @@ -500,10 +500,10 @@ packages: dependency: transitive description: name: vm_service - sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02 + sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14" url: "https://pub.dev" source: hosted - version: "15.0.0" + version: "14.3.1" watcher: dependency: transitive description: