Skip to content

Commit 52c577f

Browse files
Merge pull request #59 from qonversion/release/2.5.0
Release/2.5.0
2 parents 2a10e92 + 4addcdd commit 52c577f

19 files changed

+729
-12
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
## 2.5.0
2+
* MacOS support
3+
14
## 2.4.1
25
* Internal logic optimization and minor improvements
36

ios/Classes/BaseEventStreamHandler.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,11 @@
55
// Created by Ilya Virnik on 2/7/21.
66
//
77

8+
#if canImport(FlutterMacOS)
9+
import FlutterMacOS
10+
#else
811
import Flutter
12+
#endif
913

1014
protocol EventStreamHandler: NSObject, FlutterStreamHandler {}
1115

ios/Classes/BaseListenerWrapper.swift

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,11 @@
55
// Created by Ilya Virnik on 2/7/21.
66
//
77

8+
#if canImport(FlutterMacOS)
9+
import FlutterMacOS
10+
#else
811
import Flutter
12+
#endif
913

1014
typealias MethodCodec = NSObject & FlutterMethodCodec
1115

@@ -25,14 +29,22 @@ class FlutterListenerWrapper<T>: NSObject where T: EventStreamHandler {
2529
guard eventStreamHandler == nil else {
2630
return
2731
}
32+
33+
let messenger: FlutterBinaryMessenger
34+
#if canImport(FlutterMacOS)
35+
messenger = binding.messenger
36+
#else
37+
messenger = binding.messenger()
38+
#endif
39+
2840
eventStreamHandler = T()
2941
if let codec = codec {
3042
eventChannel = FlutterEventChannel(name: "qonversion_flutter_\(eventChannelPostfix)",
31-
binaryMessenger: binding.messenger(),
43+
binaryMessenger: messenger,
3244
codec: codec)
3345
} else {
3446
eventChannel = FlutterEventChannel(name: "qonversion_flutter_\(eventChannelPostfix)",
35-
binaryMessenger: binding.messenger())
47+
binaryMessenger: messenger)
3648
}
3749

3850
eventChannel?.setStreamHandler(eventStreamHandler)

ios/Classes/FlutterError+Custom.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,11 @@
55
// Created by Ilya Virnik on 6/21/20.
66
//
77

8+
#if canImport(FlutterMacOS)
9+
import FlutterMacOS
10+
#else
811
import Flutter
12+
#endif
913

1014
extension FlutterError {
1115
static private let passValidValue = "Please make sure you pass a valid value"
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
1+
#if TARGET_OS_OSX
2+
#import <FlutterMacOS/FlutterMacOS.h>
3+
#else
14
#import <Flutter/Flutter.h>
5+
#endif
26

37
@interface QonversionFlutterSdkPlugin : NSObject<FlutterPlugin>
48
@end

ios/Classes/SKProduct+toMap.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@ extension SKProduct {
1717
"priceLocale": priceLocale.toMap()
1818
]
1919

20-
if #available(iOS 11.2, *) {
20+
if #available(iOS 11.2, macOS 10.13.2, *) {
2121
map["subscriptionPeriod"] = subscriptionPeriod?.toMap()
2222
map["introductoryPrice"] = introductoryPrice?.toMap()
2323
}
24-
25-
if #available(iOS 12.0, *) {
24+
25+
if #available(iOS 12.0, macOS 10.14, *) {
2626
map["subscriptionGroupIdentifier"] = subscriptionGroupIdentifier
2727
}
2828

@@ -39,7 +39,7 @@ extension Locale {
3939
}
4040
}
4141

42-
@available(iOS 11.2, *)
42+
@available(iOS 11.2, macOS 10.13.2, *)
4343
extension SKProductSubscriptionPeriod {
4444
func toMap() -> [String: Any] {
4545
return [
@@ -49,7 +49,7 @@ extension SKProductSubscriptionPeriod {
4949
}
5050
}
5151

52-
@available(iOS 11.2, *)
52+
@available(iOS 11.2, macOS 10.13.2, *)
5353
extension SKProductDiscount {
5454
func toMap() -> [String: Any] {
5555
return [

ios/Classes/SwiftQonversionFlutterSdkPlugin.swift

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,22 @@
1+
#if canImport(FlutterMacOS)
2+
import FlutterMacOS
3+
#else
14
import Flutter
2-
import UIKit
5+
#endif
6+
37
import Qonversion
48

59
public class SwiftQonversionFlutterSdkPlugin: NSObject, FlutterPlugin {
610
var purchasesEventStreamHandler: BaseEventStreamHandler?
711

812
public static func register(with registrar: FlutterPluginRegistrar) {
9-
let channel = FlutterMethodChannel(name: "qonversion_flutter_sdk", binaryMessenger: registrar.messenger())
13+
let messenger: FlutterBinaryMessenger
14+
#if canImport(FlutterMacOS)
15+
messenger = registrar.messenger
16+
#else
17+
messenger = registrar.messenger()
18+
#endif
19+
let channel = FlutterMethodChannel(name: "qonversion_flutter_sdk", binaryMessenger: messenger)
1020
let instance = SwiftQonversionFlutterSdkPlugin()
1121
registrar.addMethodCallDelegate(instance, channel: channel)
1222

lib/src/qonversion.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import 'models/purchase_exception.dart';
1616
import 'qa_provider.dart';
1717

1818
class Qonversion {
19-
static const String _sdkVersion = "2.4.1";
19+
static const String _sdkVersion = "2.5.0";
2020

2121
static const MethodChannel _channel = MethodChannel('qonversion_flutter_sdk');
2222
static const _purchasesEventChannel =
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
//
2+
// BaseEventStreamHandler.swift
3+
// qonversion_flutter
4+
//
5+
// Created by Ilya Virnik on 2/7/21.
6+
//
7+
8+
#if canImport(FlutterMacOS)
9+
import FlutterMacOS
10+
#else
11+
import Flutter
12+
#endif
13+
14+
protocol EventStreamHandler: NSObject, FlutterStreamHandler {}
15+
16+
class BaseEventStreamHandler: NSObject, EventStreamHandler {
17+
var eventSink: FlutterEventSink?
18+
19+
public func onListen(withArguments arguments: Any?, eventSink events: @escaping FlutterEventSink) -> FlutterError? {
20+
eventSink = events
21+
return nil
22+
}
23+
24+
public func onCancel(withArguments arguments: Any?) -> FlutterError? {
25+
eventSink = nil
26+
return nil
27+
}
28+
}
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
//
2+
// BaseListenerWrapper.swift
3+
// qonversion_flutter
4+
//
5+
// Created by Ilya Virnik on 2/7/21.
6+
//
7+
8+
#if canImport(FlutterMacOS)
9+
import FlutterMacOS
10+
#else
11+
import Flutter
12+
#endif
13+
14+
typealias MethodCodec = NSObject & FlutterMethodCodec
15+
16+
class FlutterListenerWrapper<T>: NSObject where T: EventStreamHandler {
17+
let binding: FlutterPluginRegistrar
18+
let eventChannelPostfix: String
19+
20+
var eventChannel: FlutterEventChannel?
21+
var eventStreamHandler: T?
22+
23+
init(_ binding: FlutterPluginRegistrar, postfix: String) {
24+
self.binding = binding
25+
self.eventChannelPostfix = postfix
26+
}
27+
28+
func register(_ codec: MethodCodec? = nil, completion: ((T?) -> Void)? = nil) {
29+
guard eventStreamHandler == nil else {
30+
return
31+
}
32+
33+
let messenger: FlutterBinaryMessenger
34+
#if canImport(FlutterMacOS)
35+
messenger = binding.messenger
36+
#else
37+
messenger = binding.messenger()
38+
#endif
39+
40+
eventStreamHandler = T()
41+
if let codec = codec {
42+
eventChannel = FlutterEventChannel(name: "qonversion_flutter_\(eventChannelPostfix)",
43+
binaryMessenger: messenger,
44+
codec: codec)
45+
} else {
46+
eventChannel = FlutterEventChannel(name: "qonversion_flutter_\(eventChannelPostfix)",
47+
binaryMessenger: messenger)
48+
}
49+
50+
eventChannel?.setStreamHandler(eventStreamHandler)
51+
52+
completion?(eventStreamHandler)
53+
}
54+
55+
func unregister() {
56+
eventChannel?.setStreamHandler(nil)
57+
eventStreamHandler = nil
58+
eventChannel = nil
59+
}
60+
}

0 commit comments

Comments
 (0)