88 lines
3.9 KiB
Markdown
88 lines
3.9 KiB
Markdown
# 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). |