Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[in_app_purchase_storekit] Add storekit 2 support for canMakePayments and products #7473

Merged
merged 19 commits into from
Aug 29, 2024

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
@@ -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 10687576+bparrishMines@users.noreply.github.com [pigeon] Kotlin implementation for ProxyApis  (flutter/packages#6371)
2024-08-29 louisehsu@google.com [in_app_purchase_storekit] Add storekit 2 support for canMakePayments and products (flutter/packages#7473)
2024-08-29 mhvdijk@gmail.com [flutter_adaptive_scaffold] Add correct material spacing and panes (flutter/packages#7428)
2024-08-29 34871572+gmackall@users.noreply.github.com [many] Upgrade example apps to AGP 8.5.2 (if they were below 8.1.0) (flutter/packages#7521)
2024-08-29 tarrinneal@gmail.com [pigeon] allow gen of unused classes (flutter/packages#7529)
2024-08-29 magder@google.com 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 flutter-ecosystem@google.com,rmistry@google.com 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 10687576+bparrishMines@users.noreply.github.com [pigeon] Kotlin implementation for ProxyApis  (flutter/packages#6371)
2024-08-29 louisehsu@google.com [in_app_purchase_storekit] Add storekit 2 support for canMakePayments and products (flutter/packages#7473)
2024-08-29 mhvdijk@gmail.com [flutter_adaptive_scaffold] Add correct material spacing and panes (flutter/packages#7428)
2024-08-29 34871572+gmackall@users.noreply.github.com [many] Upgrade example apps to AGP 8.5.2 (if they were below 8.1.0) (flutter/packages#7521)
2024-08-29 tarrinneal@gmail.com [pigeon] allow gen of unused classes (flutter/packages#7529)
2024-08-29 magder@google.com 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 flutter-ecosystem@google.com,rmistry@google.com 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 10687576+bparrishMines@users.noreply.github.com [pigeon] Kotlin implementation for ProxyApis  (flutter/packages#6371)
2024-08-29 louisehsu@google.com [in_app_purchase_storekit] Add storekit 2 support for canMakePayments and products (flutter/packages#7473)
2024-08-29 mhvdijk@gmail.com [flutter_adaptive_scaffold] Add correct material spacing and panes (flutter/packages#7428)
2024-08-29 34871572+gmackall@users.noreply.github.com [many] Upgrade example apps to AGP 8.5.2 (if they were below 8.1.0) (flutter/packages#7521)
2024-08-29 tarrinneal@gmail.com [pigeon] allow gen of unused classes (flutter/packages#7529)
2024-08-29 magder@google.com 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 flutter-ecosystem@google.com,rmistry@google.com 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