diff --git a/packages/quick_actions/quick_actions_ios/CHANGELOG.md b/packages/quick_actions/quick_actions_ios/CHANGELOG.md index 7334bbd6a632..e002bd70ac09 100644 --- a/packages/quick_actions/quick_actions_ios/CHANGELOG.md +++ b/packages/quick_actions/quick_actions_ios/CHANGELOG.md @@ -1,3 +1,8 @@ +## 1.0.1 + +* Removes custom modulemap file with "Test" submodule and private headers for Swift migration. +* Migrates `FLTQuickActionsPlugin` class to Swift. + ## 1.0.0 * Updates version to 1.0 to reflect current status. diff --git a/packages/quick_actions/quick_actions_ios/example/ios/RunnerTests/FLTQuickActionsPluginTests.m b/packages/quick_actions/quick_actions_ios/example/ios/RunnerTests/FLTQuickActionsPluginTests.m index b47f89848bbc..89651b573822 100644 --- a/packages/quick_actions/quick_actions_ios/example/ios/RunnerTests/FLTQuickActionsPluginTests.m +++ b/packages/quick_actions/quick_actions_ios/example/ios/RunnerTests/FLTQuickActionsPluginTests.m @@ -4,7 +4,6 @@ @import Flutter; @import quick_actions_ios; -@import quick_actions_ios.Test; @import XCTest; #import @@ -26,9 +25,9 @@ - (void)testHandleMethodCall_setShortcutItems { FLTShortcutStateManager *mockShortcutStateManager = OCMClassMock([FLTShortcutStateManager class]); - FLTQuickActionsPlugin *plugin = - [[FLTQuickActionsPlugin alloc] initWithChannel:OCMClassMock([FlutterMethodChannel class]) - shortcutStateManager:mockShortcutStateManager]; + QuickActionsPlugin *plugin = + [[QuickActionsPlugin alloc] initWithChannel:OCMClassMock([FlutterMethodChannel class]) + shortcutStateManager:mockShortcutStateManager]; XCTestExpectation *resultExpectation = [self expectationWithDescription:@"result block must be called."]; [plugin handleMethodCall:call @@ -45,9 +44,9 @@ - (void)testHandleMethodCall_clearShortcutItems { FlutterMethodCall *call = [FlutterMethodCall methodCallWithMethodName:@"clearShortcutItems" arguments:nil]; FLTShortcutStateManager *mockShortcutStateManager = OCMClassMock([FLTShortcutStateManager class]); - FLTQuickActionsPlugin *plugin = - [[FLTQuickActionsPlugin alloc] initWithChannel:OCMClassMock([FlutterMethodChannel class]) - shortcutStateManager:mockShortcutStateManager]; + QuickActionsPlugin *plugin = + [[QuickActionsPlugin alloc] initWithChannel:OCMClassMock([FlutterMethodChannel class]) + shortcutStateManager:mockShortcutStateManager]; XCTestExpectation *resultExpectation = [self expectationWithDescription:@"result block must be called."]; [plugin handleMethodCall:call @@ -63,9 +62,9 @@ - (void)testHandleMethodCall_getLaunchAction { FlutterMethodCall *call = [FlutterMethodCall methodCallWithMethodName:@"getLaunchAction" arguments:nil]; - FLTQuickActionsPlugin *plugin = - [[FLTQuickActionsPlugin alloc] initWithChannel:OCMClassMock([FlutterMethodChannel class]) - shortcutStateManager:OCMClassMock([FLTShortcutStateManager class])]; + QuickActionsPlugin *plugin = + [[QuickActionsPlugin alloc] initWithChannel:OCMClassMock([FlutterMethodChannel class]) + shortcutStateManager:OCMClassMock([FLTShortcutStateManager class])]; XCTestExpectation *resultExpectation = [self expectationWithDescription:@"result block must be called."]; [plugin handleMethodCall:call @@ -79,9 +78,9 @@ - (void)testHandleMethodCall_getLaunchAction { - (void)testHandleMethodCall_nonExistMethods { FlutterMethodCall *call = [FlutterMethodCall methodCallWithMethodName:@"nonExist" arguments:nil]; - FLTQuickActionsPlugin *plugin = - [[FLTQuickActionsPlugin alloc] initWithChannel:OCMClassMock([FlutterMethodChannel class]) - shortcutStateManager:OCMClassMock([FLTShortcutStateManager class])]; + QuickActionsPlugin *plugin = + [[QuickActionsPlugin alloc] initWithChannel:OCMClassMock([FlutterMethodChannel class]) + shortcutStateManager:OCMClassMock([FLTShortcutStateManager class])]; XCTestExpectation *resultExpectation = [self expectationWithDescription:@"result must be called."]; [plugin @@ -97,9 +96,9 @@ - (void)testHandleMethodCall_nonExistMethods { - (void)testApplicationPerformActionForShortcutItem { id mockChannel = OCMClassMock([FlutterMethodChannel class]); - FLTQuickActionsPlugin *plugin = - [[FLTQuickActionsPlugin alloc] initWithChannel:mockChannel - shortcutStateManager:OCMClassMock([FLTShortcutStateManager class])]; + QuickActionsPlugin *plugin = + [[QuickActionsPlugin alloc] initWithChannel:mockChannel + shortcutStateManager:OCMClassMock([FLTShortcutStateManager class])]; UIApplicationShortcutItem *item = [[UIApplicationShortcutItem alloc] initWithType:@"SearchTheThing" @@ -118,9 +117,9 @@ - (void)testApplicationPerformActionForShortcutItem { - (void)testApplicationDidFinishLaunchingWithOptions_launchWithShortcut { id mockShortcutStateManager = OCMClassMock([FLTShortcutStateManager class]); - FLTQuickActionsPlugin *plugin = - [[FLTQuickActionsPlugin alloc] initWithChannel:OCMClassMock([FlutterMethodChannel class]) - shortcutStateManager:mockShortcutStateManager]; + QuickActionsPlugin *plugin = + [[QuickActionsPlugin alloc] initWithChannel:OCMClassMock([FlutterMethodChannel class]) + shortcutStateManager:mockShortcutStateManager]; UIApplicationShortcutItem *item = [[UIApplicationShortcutItem alloc] initWithType:@"SearchTheThing" @@ -138,9 +137,9 @@ - (void)testApplicationDidFinishLaunchingWithOptions_launchWithShortcut { } - (void)testApplicationDidFinishLaunchingWithOptions_launchWithoutShortcut { - FLTQuickActionsPlugin *plugin = - [[FLTQuickActionsPlugin alloc] initWithChannel:OCMClassMock([FlutterMethodChannel class]) - shortcutStateManager:OCMClassMock([FLTShortcutStateManager class])]; + QuickActionsPlugin *plugin = + [[QuickActionsPlugin alloc] initWithChannel:OCMClassMock([FlutterMethodChannel class]) + shortcutStateManager:OCMClassMock([FLTShortcutStateManager class])]; BOOL launchResult = [plugin application:[UIApplication sharedApplication] didFinishLaunchingWithOptions:@{}]; XCTAssertTrue(launchResult, @@ -150,11 +149,14 @@ - (void)testApplicationDidFinishLaunchingWithOptions_launchWithoutShortcut { - (void)testApplicationDidBecomeActive_launchWithoutShortcut { id mockChannel = OCMClassMock([FlutterMethodChannel class]); id mockShortcutStateManager = OCMClassMock([FLTShortcutStateManager class]); - FLTQuickActionsPlugin *plugin = - [[FLTQuickActionsPlugin alloc] initWithChannel:mockChannel - shortcutStateManager:mockShortcutStateManager]; + QuickActionsPlugin *plugin = + [[QuickActionsPlugin alloc] initWithChannel:mockChannel + shortcutStateManager:mockShortcutStateManager]; - [plugin application:[UIApplication sharedApplication] didFinishLaunchingWithOptions:@{}]; + BOOL launchResult = [plugin application:[UIApplication sharedApplication] + didFinishLaunchingWithOptions:@{}]; + XCTAssertTrue(launchResult, + @"didFinishLaunchingWithOptions must return true if not launched from shortcut."); [plugin applicationDidBecomeActive:[UIApplication sharedApplication]]; OCMVerify(never(), [mockChannel invokeMethod:OCMOCK_ANY arguments:OCMOCK_ANY]); } @@ -162,9 +164,9 @@ - (void)testApplicationDidBecomeActive_launchWithoutShortcut { - (void)testApplicationDidBecomeActive_launchWithShortcut { id mockChannel = OCMClassMock([FlutterMethodChannel class]); id mockShortcutStateManager = OCMClassMock([FLTShortcutStateManager class]); - FLTQuickActionsPlugin *plugin = - [[FLTQuickActionsPlugin alloc] initWithChannel:mockChannel - shortcutStateManager:mockShortcutStateManager]; + QuickActionsPlugin *plugin = + [[QuickActionsPlugin alloc] initWithChannel:mockChannel + shortcutStateManager:mockShortcutStateManager]; UIApplicationShortcutItem *item = [[UIApplicationShortcutItem alloc] initWithType:@"SearchTheThing" @@ -173,9 +175,10 @@ - (void)testApplicationDidBecomeActive_launchWithShortcut { icon:[UIApplicationShortcutIcon iconWithTemplateImageName:@"search_the_thing.png"] userInfo:nil]; - [plugin application:[UIApplication sharedApplication] - didFinishLaunchingWithOptions:@{UIApplicationLaunchOptionsShortcutItemKey : item}]; - + BOOL launchResult = [plugin application:[UIApplication sharedApplication] + didFinishLaunchingWithOptions:@{UIApplicationLaunchOptionsShortcutItemKey : item}]; + XCTAssertFalse(launchResult, + @"didFinishLaunchingWithOptions must return false if launched from shortcut."); [plugin applicationDidBecomeActive:[UIApplication sharedApplication]]; OCMVerify([mockChannel invokeMethod:@"launch" arguments:item.type]); } @@ -183,9 +186,9 @@ - (void)testApplicationDidBecomeActive_launchWithShortcut { - (void)testApplicationDidBecomeActive_launchWithShortcut_becomeActiveTwice { id mockChannel = OCMClassMock([FlutterMethodChannel class]); id mockShortcutStateManager = OCMClassMock([FLTShortcutStateManager class]); - FLTQuickActionsPlugin *plugin = - [[FLTQuickActionsPlugin alloc] initWithChannel:mockChannel - shortcutStateManager:mockShortcutStateManager]; + QuickActionsPlugin *plugin = + [[QuickActionsPlugin alloc] initWithChannel:mockChannel + shortcutStateManager:mockShortcutStateManager]; UIApplicationShortcutItem *item = [[UIApplicationShortcutItem alloc] initWithType:@"SearchTheThing" @@ -194,9 +197,10 @@ - (void)testApplicationDidBecomeActive_launchWithShortcut_becomeActiveTwice { icon:[UIApplicationShortcutIcon iconWithTemplateImageName:@"search_the_thing.png"] userInfo:nil]; - [plugin application:[UIApplication sharedApplication] - didFinishLaunchingWithOptions:@{UIApplicationLaunchOptionsShortcutItemKey : item}]; - + BOOL launchResult = [plugin application:[UIApplication sharedApplication] + didFinishLaunchingWithOptions:@{UIApplicationLaunchOptionsShortcutItemKey : item}]; + XCTAssertFalse(launchResult, + @"didFinishLaunchingWithOptions must return false if launched from shortcut."); [plugin applicationDidBecomeActive:[UIApplication sharedApplication]]; [plugin applicationDidBecomeActive:[UIApplication sharedApplication]]; // shortcut should only be handled once per launch. diff --git a/packages/quick_actions/quick_actions_ios/example/ios/RunnerTests/FLTShortcutStateManagerTests.m b/packages/quick_actions/quick_actions_ios/example/ios/RunnerTests/FLTShortcutStateManagerTests.m index f5b8b3405fc8..96fbf229e566 100644 --- a/packages/quick_actions/quick_actions_ios/example/ios/RunnerTests/FLTShortcutStateManagerTests.m +++ b/packages/quick_actions/quick_actions_ios/example/ios/RunnerTests/FLTShortcutStateManagerTests.m @@ -3,7 +3,6 @@ // found in the LICENSE file. @import quick_actions_ios; -@import quick_actions_ios.Test; @import XCTest; #import diff --git a/packages/quick_actions/quick_actions_ios/ios/Classes/FLTQuickActionsPlugin.h b/packages/quick_actions/quick_actions_ios/ios/Classes/FLTQuickActionsPlugin.h deleted file mode 100644 index 63f615440dea..000000000000 --- a/packages/quick_actions/quick_actions_ios/ios/Classes/FLTQuickActionsPlugin.h +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright 2013 The Flutter Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -@import Flutter; - -@interface FLTQuickActionsPlugin : NSObject - -/// Unavailable. -- (instancetype)init NS_UNAVAILABLE; - -/// Unavailable. -+ (instancetype)new NS_UNAVAILABLE; -@end diff --git a/packages/quick_actions/quick_actions_ios/ios/Classes/FLTQuickActionsPlugin.m b/packages/quick_actions/quick_actions_ios/ios/Classes/FLTQuickActionsPlugin.m deleted file mode 100644 index fb8994322a9b..000000000000 --- a/packages/quick_actions/quick_actions_ios/ios/Classes/FLTQuickActionsPlugin.m +++ /dev/null @@ -1,99 +0,0 @@ -// Copyright 2013 The Flutter Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#import "FLTQuickActionsPlugin.h" -#import "FLTQuickActionsPlugin_Test.h" -#import "FLTShortcutStateManager.h" - -static NSString *const kChannelName = @"plugins.flutter.io/quick_actions_ios"; - -@interface FLTQuickActionsPlugin () -@property(nonatomic, strong) FlutterMethodChannel *channel; -/// The type of the shortcut item selected when launching the app. -@property(nonatomic, strong, nullable) NSString *launchingShortcutType; -@property(nonatomic, strong) FLTShortcutStateManager *shortcutStateManager; -@end - -@implementation FLTQuickActionsPlugin - -+ (void)registerWithRegistrar:(NSObject *)registrar { - FlutterMethodChannel *channel = - [FlutterMethodChannel methodChannelWithName:kChannelName - binaryMessenger:[registrar messenger]]; - FLTQuickActionsPlugin *instance = - [[FLTQuickActionsPlugin alloc] initWithChannel:channel - shortcutStateManager:[[FLTShortcutStateManager alloc] init]]; - [registrar addMethodCallDelegate:instance channel:channel]; - [registrar addApplicationDelegate:instance]; -} - -- (instancetype)initWithChannel:(FlutterMethodChannel *)channel - shortcutStateManager:(FLTShortcutStateManager *)shortcutStateManager { - if ((self = [super init])) { - _channel = channel; - _shortcutStateManager = shortcutStateManager; - } - return self; -} - -- (void)handleMethodCall:(FlutterMethodCall *)call result:(FlutterResult)result { - if ([call.method isEqualToString:@"setShortcutItems"]) { - [self.shortcutStateManager setShortcutItems:call.arguments]; - result(nil); - } else if ([call.method isEqualToString:@"clearShortcutItems"]) { - [self.shortcutStateManager setShortcutItems:@[]]; - result(nil); - } else if ([call.method isEqualToString:@"getLaunchAction"]) { - result(nil); - } else { - result(FlutterMethodNotImplemented); - } -} - -- (void)dealloc { - [_channel setMethodCallHandler:nil]; - _channel = nil; -} - -- (BOOL)application:(UIApplication *)application - performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem - completionHandler:(void (^)(BOOL succeeded))completionHandler - API_AVAILABLE(ios(9.0)) { - [self handleShortcut:shortcutItem.type]; - return YES; -} - -- (BOOL)application:(UIApplication *)application - didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { - UIApplicationShortcutItem *shortcutItem = - launchOptions[UIApplicationLaunchOptionsShortcutItemKey]; - if (shortcutItem) { - // Keep hold of the shortcut type and handle it in the - // `applicationDidBecomeActure:` method once the Dart MethodChannel - // is initialized. - self.launchingShortcutType = shortcutItem.type; - - // Return NO to indicate we handled the quick action to ensure - // the `application:performActionFor:` method is not called (as - // per Apple's documentation: - // https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1622935-application?language=objc). - return NO; - } - return YES; -} - -- (void)applicationDidBecomeActive:(UIApplication *)application { - if (self.launchingShortcutType) { - [self handleShortcut:self.launchingShortcutType]; - self.launchingShortcutType = nil; - } -} - -#pragma mark Private functions - -- (void)handleShortcut:(NSString *)shortcut { - [self.channel invokeMethod:@"launch" arguments:shortcut]; -} - -@end diff --git a/packages/quick_actions/quick_actions_ios/ios/Classes/PrivateHeaders/FLTShortcutStateManager.h b/packages/quick_actions/quick_actions_ios/ios/Classes/FLTShortcutStateManager.h similarity index 100% rename from packages/quick_actions/quick_actions_ios/ios/Classes/PrivateHeaders/FLTShortcutStateManager.h rename to packages/quick_actions/quick_actions_ios/ios/Classes/FLTShortcutStateManager.h diff --git a/packages/quick_actions/quick_actions_ios/ios/Classes/PrivateHeaders/FLTQuickActionsPlugin_Test.h b/packages/quick_actions/quick_actions_ios/ios/Classes/PrivateHeaders/FLTQuickActionsPlugin_Test.h deleted file mode 100644 index 514d0633f198..000000000000 --- a/packages/quick_actions/quick_actions_ios/ios/Classes/PrivateHeaders/FLTQuickActionsPlugin_Test.h +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2013 The Flutter Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -@import Flutter; -#import "FLTShortcutStateManager.h" - -NS_ASSUME_NONNULL_BEGIN - -/// APIs exposed for unit tests. -@interface FLTQuickActionsPlugin () - -/// Initializes a FLTQuickActionsPlugin with the given method channel. -/// API exposed for unit tests. -/// @param channel A method channel. -/// @param shortcutStateManager An FLTShortcutStateManager that manages shortcut related states. -/// @return The initialized FLTQuickActionsPlugin. -- (instancetype)initWithChannel:(FlutterMethodChannel *)channel - shortcutStateManager:(FLTShortcutStateManager *)shortcutStateManager; - -@end - -NS_ASSUME_NONNULL_END diff --git a/packages/quick_actions/quick_actions_ios/ios/Classes/QuickActionsPlugin.modulemap b/packages/quick_actions/quick_actions_ios/ios/Classes/QuickActionsPlugin.modulemap deleted file mode 100644 index 3f7d7ce08203..000000000000 --- a/packages/quick_actions/quick_actions_ios/ios/Classes/QuickActionsPlugin.modulemap +++ /dev/null @@ -1,11 +0,0 @@ -framework module quick_actions_ios { - umbrella header "quick_actions_ios-umbrella.h" - - export * - module * { export * } - - explicit module Test { - header "FLTQuickActionsPlugin_Test.h" - header "FLTShortcutStateManager.h" - } -} diff --git a/packages/quick_actions/quick_actions_ios/ios/Classes/QuickActionsPlugin.swift b/packages/quick_actions/quick_actions_ios/ios/Classes/QuickActionsPlugin.swift new file mode 100644 index 000000000000..26d6d20f8c02 --- /dev/null +++ b/packages/quick_actions/quick_actions_ios/ios/Classes/QuickActionsPlugin.swift @@ -0,0 +1,90 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import Flutter + +public final class QuickActionsPlugin: NSObject, FlutterPlugin { + + public static func register(with registrar: FlutterPluginRegistrar) { + let channel = FlutterMethodChannel( + name: "plugins.flutter.io/quick_actions_ios", + binaryMessenger: registrar.messenger()) + let instance = QuickActionsPlugin(channel: channel) + registrar.addMethodCallDelegate(instance, channel: channel) + registrar.addApplicationDelegate(instance) + } + + private let channel: FlutterMethodChannel + private let shortcutStateManager: FLTShortcutStateManager + /// The type of the shortcut item selected when launching the app. + private var launchingShortcutType: String? = nil + + // TODO: (hellohuanlin) remove `@objc` attribute and make it non-public after migrating tests to Swift. + @objc + public init( + channel: FlutterMethodChannel, + shortcutStateManager: FLTShortcutStateManager = FLTShortcutStateManager() + ) { + self.channel = channel + self.shortcutStateManager = shortcutStateManager + } + + public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) { + switch call.method { + case "setShortcutItems": + // `arguments` must be an array of dictionaries + let items = call.arguments as! [[String: Any]] + shortcutStateManager.setShortcutItems(items) + result(nil) + case "clearShortcutItems": + shortcutStateManager.setShortcutItems([]) + result(nil) + case "getLaunchAction": + result(nil) + case _: + result(FlutterMethodNotImplemented) + } + } + + public func application( + _ application: UIApplication, performActionFor shortcutItem: UIApplicationShortcutItem, + completionHandler: @escaping (Bool) -> Void + ) -> Bool { + handleShortcut(shortcutItem.type) + return true + } + + public func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [AnyHashable: Any] = [:] + ) -> Bool { + if let shortcutItem = launchOptions[UIApplication.LaunchOptionsKey.shortcutItem] + as? UIApplicationShortcutItem + { + // Keep hold of the shortcut type and handle it in the + // `applicationDidBecomeActive:` method once the Dart MethodChannel + // is initialized. + launchingShortcutType = shortcutItem.type + + // Return false to indicate we handled the quick action to ensure + // the `application:performActionFor:` method is not called (as + // per Apple's documentation: + // https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1622935-application). + return false + } + return true + } + + public func applicationDidBecomeActive(_ application: UIApplication) { + if let shortcutType = launchingShortcutType { + handleShortcut(shortcutType) + launchingShortcutType = nil + } + } + + private func handleShortcut(_ shortcut: String) { + channel.invokeMethod("launch", arguments: shortcut) + } + +} diff --git a/packages/quick_actions/quick_actions_ios/ios/Classes/quick_actions_ios-umbrella.h b/packages/quick_actions/quick_actions_ios/ios/Classes/quick_actions_ios-umbrella.h deleted file mode 100644 index d099a0411cf0..000000000000 --- a/packages/quick_actions/quick_actions_ios/ios/Classes/quick_actions_ios-umbrella.h +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright 2013 The Flutter Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#import - -FOUNDATION_EXPORT double quickActionsIOSVersionNumber; -FOUNDATION_EXPORT const unsigned char quickActionsIOSVersionString[]; - -#import diff --git a/packages/quick_actions/quick_actions_ios/ios/quick_actions_ios.podspec b/packages/quick_actions/quick_actions_ios/ios/quick_actions_ios.podspec index 68eaa6ff7dc9..d8090caa8ef6 100644 --- a/packages/quick_actions/quick_actions_ios/ios/quick_actions_ios.podspec +++ b/packages/quick_actions/quick_actions_ios/ios/quick_actions_ios.podspec @@ -14,11 +14,14 @@ Downloaded by pub (not CocoaPods). s.author = { 'Flutter Dev Team' => 'flutter-dev@googlegroups.com' } s.source = { :http => 'https://github.com/flutter/plugins/tree/main/packages/quick_actions' } s.documentation_url = 'https://pub.dev/packages/quick_actions' - s.source_files = 'Classes/**/*.{h,m}' - s.public_header_files = 'Classes/*.h' - s.private_header_files = 'Classes/PrivateHeaders/*.h' + s.swift_version = '5.0' + s.source_files = 'Classes/**/*.{h,m,swift}' + s.xcconfig = { + 'LIBRARY_SEARCH_PATHS' => '$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)/ $(SDKROOT)/usr/lib/swift', + 'LD_RUNPATH_SEARCH_PATHS' => '/usr/lib/swift', + } + s.public_header_files = 'Classes/**/*.h' s.dependency 'Flutter' s.platform = :ios, '9.0' s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES' } - s.module_map = 'Classes/QuickActionsPlugin.modulemap' end diff --git a/packages/quick_actions/quick_actions_ios/pubspec.yaml b/packages/quick_actions/quick_actions_ios/pubspec.yaml index 82fd25f06b2c..f01ae4aed9c3 100644 --- a/packages/quick_actions/quick_actions_ios/pubspec.yaml +++ b/packages/quick_actions/quick_actions_ios/pubspec.yaml @@ -2,7 +2,7 @@ name: quick_actions_ios description: An implementation for the iOS platform of the Flutter `quick_actions` plugin. repository: https://github.com/flutter/plugins/tree/main/packages/quick_actions/quick_actions_ios issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+in_app_purchase%22 -version: 1.0.0 +version: 1.0.1 environment: sdk: ">=2.15.0 <3.0.0" @@ -13,7 +13,7 @@ flutter: implements: quick_actions platforms: ios: - pluginClass: FLTQuickActionsPlugin + pluginClass: QuickActionsPlugin dartPluginClass: QuickActionsIos dependencies: