ente/thirdparty/in_app_purchase/example/README.md

88 lines
3.9 KiB
Markdown
Raw Normal View History

# In App Purchase Example
Demonstrates how to use the In App Purchase (IAP) Plugin.
## Getting Started
This plugin is in beta. Please use with caution and file any potential issues
you see on our [issue tracker](https://github.com/flutter/flutter/issues/new/choose).
There's a significant amount of setup required for testing in app purchases
successfully, including registering new app IDs and store entries to use for
testing in both the Play Developer Console and App Store Connect. Both Google
Play and the App Store require developers to configure an app with in-app items
for purchase to call their in-app-purchase APIs. Both stores have extensive
documentation on how to do this, and we've also included a high level guide
below.
* [In-App Purchase (App Store)](https://developer.apple.com/in-app-purchase/)
* [Google Play Biling Overview](https://developer.android.com/google/play/billing/billing_overview)
### Android
1. Create a new app in the [Play Developer
Console](https://play.google.com/apps/publish/) (PDC).
2. Sign up for a merchant's account in the PDC.
3. Create IAPs in the PDC available for purchase in the app. The example assumes
the following SKU IDs exist:
- `consumable`: A managed product.
- `upgrade`: A managed product.
- `subscription`: A subscription.
Make sure that all of the products are set to `ACTIVE`.
4. Update `APP_ID` in `example/android/app/build.gradle` to match your package
ID in the PDC.
5. Create an `example/android/keystore.properties` file with all your signing
information. `keystore.example.properties` exists as an example to follow.
It's impossible to use any of the `BillingClient` APIs from an unsigned APK.
See
[here](https://developer.android.com/studio/publish/app-signing#secure-shared-keystore)
and [here](https://developer.android.com/studio/publish/app-signing#sign-apk)
for more information.
6. Build a signed apk. `flutter build apk` will work for this, the gradle files
in this project have been configured to sign even debug builds.
7. Upload the signed APK from step 6 to the PDC, and publish that to the alpha
test channel. Add your test account as an approved tester. The
`BillingClient` APIs won't work unless the app has been fully published to
the alpha channel and is being used by an authorized test account. See
[here](https://support.google.com/googleplay/android-developer/answer/3131213)
for more info.
8. Sign in to the test device with the test account from step #7. Then use
`flutter run` to install the app to the device and test like normal.
### iOS
1. Follow ["Workflow for configuring in-app
purchases"](https://help.apple.com/app-store-connect/#/devb57be10e7), a
detailed guide on all the steps needed to enable IAPs for an app. Complete
steps 1 ("Sign a Paid Applications Agreement") and 2 ("Configure in-app
purchases").
For step #2, "Configure in-app purchases in App Store Connect," you'll want
to create the following products:
- A consumable with product ID `consumable`
- An upgrade with product ID `upgrade`
- An auto-renewing subscription with product ID `subscription`
2. In XCode, `File > Open File` `example/ios/Runner.xcworkspace`. Update the
Bundle ID to match the Bundle ID of the app created in step #1.
3. [Create a Sandbox tester
account](https://help.apple.com/app-store-connect/#/dev8b997bee1) to test the
in-app purchases with.
4. Use `flutter run` to install the app and test it. Note that you need to test
it on a real device instead of a simulator, and signing into any production
service (including iTunes!) with the test account will permanently invalidate
it. Sign in to the test account in the example app following the steps in the
[*In-App Purchase Programming
Guide*](https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/ShowUI.html#//apple_ref/doc/uid/TP40008267-CH3-SW11).