Skip to content

Conversation

LouiseHsu
Copy link
Contributor

@LouiseHsu LouiseHsu commented Aug 21, 2024

This PR contains support for StoreKit2's canMakePayments and products.

This also contains basic scaffolding for SK2 support, such as pigeon translators.

Part of flutter/flutter#116383

Pre-launch Checklist

  • I read the [Contributor Guide] and followed the process outlined there for submitting PRs.
  • I read the [Tree Hygiene] page, which explains my responsibilities.
  • I read and followed the [relevant style guides] and ran the auto-formatter. (Unlike the flutter/flutter repo, the flutter/packages repo does use dart format.)
  • I signed the [CLA].
  • The title of the PR starts with the name of the package surrounded by square brackets, e.g. [shared_preferences]
  • I [linked to at least one issue that this PR fixes] in the description above.
  • I updated pubspec.yaml with an appropriate new version according to the [pub versioning philosophy], or this PR is [exempt from version changes].
  • I updated CHANGELOG.md to add a description of the change, [following repository CHANGELOG style], or this PR is [exempt from CHANGELOG changes].
  • I updated/added relevant documentation (doc comments with ///).
  • I added new tests to check the change I am making, or this PR is [test-exempt].
  • All existing and new tests are passing.

@LouiseHsu LouiseHsu changed the title compiles [in_app_purchase_storekit] Add storekit 2 support for canMakePayments and products Aug 21, 2024
@LouiseHsu LouiseHsu marked this pull request as ready for review August 27, 2024 23:24
@LouiseHsu LouiseHsu requested a review from hellohuanlin August 28, 2024 21:32
@@ -41,6 +41,9 @@ public class InAppPurchasePlugin: NSObject, FlutterPlugin, InAppPurchaseAPI {
registrar.addMethodCallDelegate(instance, channel: channel)
registrar.addApplicationDelegate(instance)
SetUpInAppPurchaseAPI(messenger, instance)
if #available(iOS 15.0, *) {
InAppPurchase2APISetup.setUp(binaryMessenger: messenger, api: instance)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

InAppPurchaseStoreKit2APISetup

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

let products = try await Product.products(for: identifiers)
let productMessages = products.map { product in
product.convertToPigeon()
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

products.map { $0.convertToPigeon() }

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done


@available(iOS 15.0, macOS 12.0, *)
extension Product {
func convertToPigeon() -> SK2ProductMessage {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

var pigeonMessage: SK2ProductMessage {
  return ...
}

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done


@available(iOS 15.0, macOS 12.0, *)
extension Product.ProductType {
func convertToPigeon() -> SK2ProductTypeMessage {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same here

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

@@ -17,6 +18,9 @@ const String kPurchaseErrorCode = 'purchase_error';
/// Indicates store front is Apple AppStore.
const String kIAPSource = 'app_store';

/// Experimental flag for StoreKit2.
bool _useStoreKit2 = false;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

move inside the class

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

@@ -5,6 +5,7 @@
import 'package:in_app_purchase_platform_interface/in_app_purchase_platform_interface.dart';

import '../../store_kit_wrappers.dart';
import '../store_kit_2_wrappers/sk2_product_wrapper.dart';

/// The class represents the information of a product as registered in the Apple
/// AppStore.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can you update comments

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

Copy link
Contributor

@hellohuanlin hellohuanlin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, just a few comments

@LouiseHsu LouiseHsu added the autosubmit Merge PR when tree becomes green via auto submit App label Aug 29, 2024
@auto-submit auto-submit bot merged commit d472256 into flutter:main Aug 29, 2024
76 checks passed
engine-flutter-autoroll added a commit to engine-flutter-autoroll/flutter that referenced this pull request Aug 30, 2024
auto-submit bot pushed a commit to flutter/flutter that referenced this pull request Aug 30, 2024
flutter/packages@2a0f254...c9c0004

2024-08-30 [email protected] [pigeon] Kotlin implementation for ProxyApis  (flutter/packages#6371)
2024-08-29 [email protected] [in_app_purchase_storekit] Add storekit 2 support for canMakePayments and products (flutter/packages#7473)
2024-08-29 [email protected] [flutter_adaptive_scaffold] Add correct material spacing and panes (flutter/packages#7428)
2024-08-29 [email protected] [many] Upgrade example apps to AGP 8.5.2 (if they were below 8.1.0) (flutter/packages#7521)
2024-08-29 [email protected] [pigeon] allow gen of unused classes (flutter/packages#7529)
2024-08-29 [email protected] Increase deprecation check minimum to iOS 14 and macOS 13 (flutter/packages#7431)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages-flutter-autoroll
Please CC [email protected],[email protected] on the revert to ensure that a human
is aware of the problem.

To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
vasilich6107 pushed a commit to artflutter/flutter that referenced this pull request Aug 30, 2024
flutter/packages@2a0f254...c9c0004

2024-08-30 [email protected] [pigeon] Kotlin implementation for ProxyApis  (flutter/packages#6371)
2024-08-29 [email protected] [in_app_purchase_storekit] Add storekit 2 support for canMakePayments and products (flutter/packages#7473)
2024-08-29 [email protected] [flutter_adaptive_scaffold] Add correct material spacing and panes (flutter/packages#7428)
2024-08-29 [email protected] [many] Upgrade example apps to AGP 8.5.2 (if they were below 8.1.0) (flutter/packages#7521)
2024-08-29 [email protected] [pigeon] allow gen of unused classes (flutter/packages#7529)
2024-08-29 [email protected] Increase deprecation check minimum to iOS 14 and macOS 13 (flutter/packages#7431)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages-flutter-autoroll
Please CC [email protected],[email protected] on the revert to ensure that a human
is aware of the problem.

To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Buchimi pushed a commit to Buchimi/flutter that referenced this pull request Sep 2, 2024
flutter/packages@2a0f254...c9c0004

2024-08-30 [email protected] [pigeon] Kotlin implementation for ProxyApis  (flutter/packages#6371)
2024-08-29 [email protected] [in_app_purchase_storekit] Add storekit 2 support for canMakePayments and products (flutter/packages#7473)
2024-08-29 [email protected] [flutter_adaptive_scaffold] Add correct material spacing and panes (flutter/packages#7428)
2024-08-29 [email protected] [many] Upgrade example apps to AGP 8.5.2 (if they were below 8.1.0) (flutter/packages#7521)
2024-08-29 [email protected] [pigeon] allow gen of unused classes (flutter/packages#7529)
2024-08-29 [email protected] Increase deprecation check minimum to iOS 14 and macOS 13 (flutter/packages#7431)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages-flutter-autoroll
Please CC [email protected],[email protected] on the revert to ensure that a human
is aware of the problem.

To file a bug in Flutter: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
autosubmit Merge PR when tree becomes green via auto submit App p: in_app_purchase platform-ios platform-macos
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants