|
8 | 8 |
|
9 | 9 | # <img src="addon/icon.png" width="24"> Godot In-app Review Plugin |
10 | 10 |
|
11 | | -Godot in-app review plugin provides access to in-app review functionality for Google Play Store on the Android platform and Apple App Store on the iOS platform through a unified GDScript interface. |
| 11 | +In-app Review Plugin provides access to in-app review functionality for Google Play Store on the Android platform and Apple App Store on the iOS platform through a unified GDScript interface. |
12 | 12 |
|
13 | | -_This plugin has been moved under the umbrella of [Godot SDK Integrations](https://github.com/godot-sdk-integrations) organization in Github. Previously, the plugin was placed under three separate repositories: [Android](https://github.com/cengiz-pz/godot-android-inapp-review-plugin), [iOS](https://github.com/cengiz-pz/godot-ios-inapp-review-plugin), and [addon interface](https://github.com/cengiz-pz/godot-inapp-review-addon)._ |
| 13 | +**Features:** |
| 14 | +- Enable in-app review for Google Play |
| 15 | +- Enable in-app review for App Store |
14 | 16 |
|
15 | | -<br/> |
| 17 | +--- |
| 18 | + |
| 19 | +## <img src="addon/icon.png" width="20"> Table of Contents |
| 20 | +- [Installation](#installation) |
| 21 | +- [Usage](#usage) |
| 22 | +- [Demo](#demo) |
| 23 | +- [Signals](#signals) |
| 24 | +- [Platform-Specific Notes](#platform-specific-notes) |
| 25 | +- [Links](#links) |
| 26 | +- [All Plugins](#all-plugins) |
| 27 | +- [Credits](#credits) |
| 28 | +- [Contributing](#contributing) |
| 29 | + |
| 30 | +--- |
| 31 | + |
| 32 | +<a name="installation"> |
16 | 33 |
|
17 | 34 | ## <img src="addon/icon.png" width="20"> Installation |
18 | | -_Before installing this plugin, make sure to uninstall any previous versions of the same plugin._ |
19 | | - |
20 | | -_If installing both Android and iOS versions of the plugin in the same project, then make sure that both versions use the same addon interface version._ |
21 | | - |
22 | | -There are 2 ways to install this plugin into your project: |
23 | | -- Through the Godot Editor's AssetLib |
24 | | -- Manually by downloading archives from Github |
25 | | - |
26 | | -### <img src="addon/icon.png" width="18"> Installing via AssetLib |
27 | | -Steps: |
28 | | -- search for and select the `In-app Review` plugin in Godot Editor |
29 | | -- click `Download` button |
30 | | -- on the installation dialog... |
31 | | - - keep `Change Install Folder` setting pointing to your project's root directory |
32 | | - - keep `Ignore asset root` checkbox checked |
33 | | - - click `Install` button |
34 | | -- enable the plugin via the `Plugins` tab of `Project->Project Settings...` menu, in the Godot Editor |
35 | | - |
36 | | -#### <img src="addon/icon.png" width="16"> Installing both Android and iOS versions of the plugin in the same project |
37 | | -When installing via AssetLib, the installer may display a warning that states "_[x number of]_ files conflict with your project and won't be installed." You can ignore this warning since both versions use the same addon code. |
38 | | - |
39 | | -### <img src="addon/icon.png" width="18"> Installing manually |
40 | | -Steps: |
41 | | -- download release archive from Github |
42 | | -- unzip the release archive |
43 | | -- copy to your Godot project's root directory |
44 | | -- enable the plugin via the `Plugins` tab of `Project->Project Settings...` menu, in the Godot Editor |
| 35 | + |
| 36 | +**Uninstall previous versions** before installing. |
| 37 | +If using both Android & iOS, ensure **same addon interface version**. |
| 38 | + |
| 39 | +**Options:** |
| 40 | +1. **AssetLib** |
| 41 | + - Search for `In-app Review` |
| 42 | + - Click `Download` → `Install` |
| 43 | + - Install to project root, `Ignore asset root` checked |
| 44 | + - Enable via **Project → Project Settings → Plugins** |
| 45 | + - Ignore file conflict warnings when installing both versions |
| 46 | +2. **Manual** |
| 47 | + - Download release from GitHub |
| 48 | + - Unzip to project root |
| 49 | + - Enable via **Plugins** tab |
| 50 | + |
| 51 | +--- |
| 52 | + |
| 53 | +<a name="usage"> |
45 | 54 |
|
46 | 55 | ## <img src="addon/icon.png" width="20"> Usage |
47 | 56 | Add an `InappReview` node to your scene and follow the following steps: |
48 | | -- register listeners for the following signals emitted from the `InappReview` node |
49 | | - - `review_info_generated` |
50 | | - - `review_info_generation_failed` |
51 | | - - `review_flow_launched` |
52 | | - - `review_flow_launch_failed` |
| 57 | +- register listeners for the [all signals](#signals) emitted from the `InappReview` node |
53 | 58 | - call the `generate_review_info()` method of the `InappReview` node |
54 | 59 | - when the `review_info_generated` signal is received, call the `launch_review_flow()` of the `InappReview` node |
55 | | - - Google Play Store API will display a dialog |
| 60 | + - Depending on platform Google Play or App Store API will display a review dialog |
56 | 61 | - Dialog may not be displayed if the review flow was launched recently |
57 | 62 | - normal app functionality can resume when `review_flow_launched` signal is received |
58 | 63 |
|
59 | | -## <img src="addon/icon.png" width="20"> Demo |
60 | | -The demo app's only purpose is to provide sample code. Since the demo app is not registered with the Google Play store, the Google Play in-app review dialog will not be displayed. |
| 64 | +--- |
61 | 65 |
|
62 | | -<br/><br/> |
| 66 | +<a name="demo"> |
63 | 67 |
|
| 68 | +## <img src="addon/icon.png" width="20"> Demo |
| 69 | +The demo app's only purpose is to provide sample code. Since the demo app is not registered with the Google Play store or App Store, the in-app review dialog will not be displayed. |
| 70 | + |
64 | 71 | --- |
65 | 72 |
|
66 | | -# <img src="addon/icon.png" width="24"> Android In-app Review Plugin |
| 73 | +<a name="signals"> |
67 | 74 |
|
68 | | -<p align="center"> |
69 | | - <img width="256" height="256" src="demo/assets/inappreview-android.png"> |
70 | | -</p> |
| 75 | +## <img src="addon/icon.png" width="20"> Signals |
71 | 76 |
|
| 77 | +- `review_info_generated`: Emitted when info generation succeeded. |
| 78 | +- `review_info_generation_failed`: Emitted when info generation failed. |
| 79 | +- `review_flow_launched`: Emitted when review flow launched. |
| 80 | +- `review_flow_launch_failed`: Emitted when review flow launch failed. |
72 | 81 |
|
73 | | -## [Android-specific Documentation](android/README.md) |
74 | | -## [AssetLib Entry](https://godotengine.org/asset-library/asset/2549) |
| 82 | +--- |
75 | 83 |
|
76 | | -<br/><br/> |
| 84 | +<a name="platform-specific-notes"> |
77 | 85 |
|
78 | | ---- |
| 86 | +## <img src="addon/icon.png" width="20"> Platform-Specific Notes |
79 | 87 |
|
80 | | -# <img src="addon/icon.png" width="24"> iOS In-app Review Plugin |
| 88 | +### Android |
| 89 | +- **Build:** [Create custom Android gradle build](https://docs.godotengine.org/en/stable/tutorials/export/android_gradle_build.html). |
| 90 | +- **Registration:** App must be registered with the Google Play. |
| 91 | +- **Troubleshooting:** |
| 92 | + - Logs: `adb logcat | grep 'godot'` (Linux), `adb.exe logcat | select-string "godot"` (Windows) |
| 93 | + - _No review dialog shown_: Check [Google Play quotas](https://developer.android.com/guide/playcore/in-app-review#quotas) |
81 | 94 |
|
82 | | -<p align="center"> |
83 | | - <img width="256" height="256" src="demo/assets/inappreview-ios.png"> |
84 | | -</p> |
| 95 | +### iOS |
| 96 | +- **Registration:** App must be registered with the App Store. |
| 97 | +- **Troubleshooting:** |
| 98 | + - View XCode logs while running the game for troubleshooting. |
| 99 | + - See [Godot iOS Export Troubleshooting](https://docs.godotengine.org/en/stable/tutorials/export/exporting_for_ios.html#troubleshooting). |
85 | 100 |
|
86 | | -## [iOS-specific Documentation](ios/README.md) |
87 | | -## [AssetLib Entry](https://godotengine.org/asset-library/asset/2906) |
| 101 | +--- |
88 | 102 |
|
89 | | -<br/><br/> |
| 103 | +<a name="links"> |
| 104 | + |
| 105 | +# <img src="addon/icon.png" width="20"> Links |
| 106 | + |
| 107 | +- [AssetLib Entry Android](https://godotengine.org/asset-library/asset/2549) |
| 108 | +- [AssetLib Entry iOS](https://godotengine.org/asset-library/asset/2906) |
90 | 109 |
|
91 | 110 | --- |
| 111 | + |
| 112 | +<a name="all-plugins"> |
| 113 | + |
92 | 114 | # <img src="addon/icon.png" width="24"> All Plugins |
93 | 115 |
|
94 | 116 | | Plugin | Android | iOS | |
95 | | -| :--- | :---: | :---: | |
| 117 | +| :---: | :--- | :--- | |
96 | 118 | | [Notification Scheduler](https://github.com/godot-sdk-integrations/godot-notification-scheduler) | ✅ | ✅ | |
97 | 119 | | [Admob](https://github.com/godot-sdk-integrations/godot-admob) | ✅ | ✅ | |
98 | 120 | | [Deeplink](https://github.com/godot-sdk-integrations/godot-deeplink) | ✅ | ✅ | |
99 | 121 | | [Share](https://github.com/godot-sdk-integrations/godot-share) | ✅ | ✅ | |
100 | 122 | | [In-App Review](https://github.com/godot-sdk-integrations/godot-inapp-review) | ✅ | ✅ | |
101 | 123 |
|
102 | | -<br/><br/> |
103 | | - |
104 | 124 | --- |
| 125 | + |
| 126 | +<a name="credits"> |
| 127 | + |
105 | 128 | # <img src="addon/icon.png" width="24"> Credits |
106 | 129 |
|
107 | 130 | Developed by [Cengiz](https://github.com/cengiz-pz) |
108 | 131 |
|
109 | 132 | iOS part is based on [DrMoriarty](https://github.com/DrMoriarty)'s [Godot iOS Plugin Template](https://github.com/DrMoriarty/godot_ios_plugin_template) |
110 | 133 |
|
111 | 134 | Original repository: [Godot In-app Review Plugin](godot-sdk-integrations/godot-inapp-review) |
| 135 | + |
| 136 | +--- |
| 137 | + |
| 138 | +<a name="contributing"> |
| 139 | + |
| 140 | +# <img src="addon/icon.png" width="24"> Contributing |
| 141 | + |
| 142 | +This section provides information on how to build the plugin for contributors. |
| 143 | + |
| 144 | +--- |
| 145 | + |
| 146 | +## <img src="addon/icon.png" width="20"> iOS |
| 147 | + |
| 148 | +### Prerequisites |
| 149 | + |
| 150 | +- [Install SCons](https://scons.org/doc/production/HTML/scons-user/ch01s02.html) |
| 151 | +- [Install CocoaPods](https://guides.cocoapods.org/using/getting-started.html) |
| 152 | + |
| 153 | +--- |
| 154 | + |
| 155 | +### Build |
| 156 | + |
| 157 | +- Run `./script/build.sh -A <godot version>` initially to run a full build |
| 158 | +- Run `./script/build.sh -cgA <godot version>` to clean, redownload Godot, and rebuild |
| 159 | +- Run `./script/build.sh -ca` to clean and build without redownloading Godot |
| 160 | +- Run `./script/build.sh -cb -z4.0` to clean and build plugin without redownloading Godot and package in a zip archive as version 4.0 |
| 161 | +- Run `./script/build.sh -h` for more information on the build script |
| 162 | + |
| 163 | +___ |
| 164 | + |
| 165 | +## <img src="addon/icon.png" width="20"> Install Script |
| 166 | + |
| 167 | +- Run `./script/install.sh -t <target directory> -z <path to zip file>` install plugin to a Godot project. |
| 168 | +- Example `./script/install.sh -t demo -z build/release/DeeplinkPlugin-v4.0.zip` to install to demo app. |
| 169 | + |
| 170 | +___ |
| 171 | + |
| 172 | +## <img src="addon/icon.png" width="20"> Libraries |
| 173 | + |
| 174 | +Library archives will be created in the `build/release` directory. |
| 175 | + |
| 176 | +--- |
| 177 | + |
| 178 | +## <img src="addon/icon.png" width="20"> Android |
| 179 | + |
| 180 | +### Build |
| 181 | + |
| 182 | +**Options:** |
| 183 | +1. Use [Android Studio](https://developer.android.com/studio) to build via **Build->Assemble Project** menu |
| 184 | + - Switch **Active Build Variant** to **release** and repeat |
| 185 | + - Run **packageDistribution** task to create release archive |
| 186 | +2. Use project-root-level **build.sh** script |
| 187 | + - `./script/build.sh -ca` - clean existing build, do a debug build for Android |
| 188 | + - `./script/build.sh -carz` - clean existing build, do a release build for Android, and create archive |
0 commit comments