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

update #18

Merged
merged 347 commits into from
Dec 31, 2020
Merged
Changes from 1 commit
Commits
Show all changes
347 commits
Select commit Hold shift + click to select a range
4fa704c
Update index.md
mbaabuones Dec 12, 2020
24d88a4
Update index.md
mbaabuones Dec 12, 2020
f40bb7d
Update index.md
mbaabuones Dec 12, 2020
418d91d
- prelim revision done
LinusMuema Dec 12, 2020
379c5bf
- prelim revision done
LinusMuema Dec 12, 2020
3aff831
messed up the first PR, doing a second
tensoncai Dec 12, 2020
e3e7bb9
minor changes
lalith1403 Dec 13, 2020
3415743
minor changes
lalith1403 Dec 13, 2020
15de3ca
minor changes
lalith1403 Dec 13, 2020
4c7a61f
submitted article and images
EKahuha Dec 13, 2020
597061b
added image source link
EKahuha Dec 13, 2020
9322bc3
- fix the repo suggestion
LinusMuema Dec 13, 2020
b04ecd3
Merge remote-tracking branch 'upstream/master' into gitlab
adithbharadwaj Dec 13, 2020
7881d99
used headers h3 and beyond, reduced repetition of phrases
tensoncai Dec 13, 2020
b1208a6
fixed merge conflicts
tensoncai Dec 13, 2020
9d599a4
minor changes
JudyNduati Dec 14, 2020
18a06ab
final update
JudyNduati Dec 14, 2020
d1a88e8
final update
JudyNduati Dec 14, 2020
61fa570
Update index.md
adrianmurage Dec 14, 2020
ebc8f93
made requested change
lalith1403 Dec 14, 2020
64d8246
- rename repl.it
LinusMuema Dec 14, 2020
2b7e31a
minor changes
JudyNduati Dec 14, 2020
2fa3ef3
- format code snippets
LinusMuema Dec 14, 2020
af81c3f
Update index.md
paulodhiambo Dec 14, 2020
3bbcbe1
Update index.md
paulodhiambo Dec 14, 2020
aecfd4c
third commit
bluemutheu Dec 14, 2020
317d4e7
Made requested changes
Dec 14, 2020
5e0f4ee
Minor edits
cyberShaw Dec 14, 2020
18b4230
Add peer review line
cyberShaw Dec 14, 2020
9d6eb3b
added front matter
hectorkambow Dec 14, 2020
7298a8f
Merge pull request #794 from kimkimani/Google-Play-In-App-Review-usin…
hectorkambow Dec 14, 2020
f1697e4
collection of plagiarism
Jeff-mwangi Dec 14, 2020
fe8ab3e
added front matter
hectorkambow Dec 14, 2020
026ea81
Merge pull request #838 from EKahuha/iot-deployments-with-sd-wan
hectorkambow Dec 14, 2020
41b796b
change file name
hectorkambow Dec 14, 2020
1301022
added couple links
hectorkambow Dec 14, 2020
2ef1d46
Merge pull request #766 from mbaabuones/autoscaling-in-aws2
hectorkambow Dec 14, 2020
89f20ce
adding front matter review process walkthrough
hectorkambow Dec 15, 2020
e2aa002
made requested changes
lalith1403 Dec 15, 2020
b1a0a40
minor changes
lalith1403 Dec 15, 2020
44129f3
minor changes
lalith1403 Dec 15, 2020
4e66f11
reverting
bluemutheu Dec 15, 2020
59a4169
updating the changes
Jeff-mwangi Dec 15, 2020
e43b707
adding front matter
hectorkambow Dec 15, 2020
357ba0e
minor
hectorkambow Dec 15, 2020
8f9c3e7
minor
hectorkambow Dec 15, 2020
cc5667e
Merge pull request #816 from lalith1403/nlp-tl
hectorkambow Dec 15, 2020
9efd1be
preliminery changes
bluemutheu Dec 15, 2020
e0ab832
adding front matter
hectorkambow Dec 15, 2020
2221de6
minor time
hectorkambow Dec 15, 2020
7a1cc0b
Merge pull request #762 from lalith1403/divide-n-conquer
hectorkambow Dec 15, 2020
299d5d3
made the requested changes
adithbharadwaj Dec 15, 2020
2934c5a
Minor Updates to Flow & Spacing
zolomohan Dec 15, 2020
fb93a18
Finish grammer review
Dec 15, 2020
96f70a7
Merge pull request #961 from section-io/adding-front-matter-doc
hectorkambow Dec 15, 2020
27b6d64
minor - list format
hectorkambow Dec 15, 2020
0b975c9
adding note
hectorkambow Dec 15, 2020
d14c462
change front matter
hectorkambow Dec 15, 2020
c29a6c2
minor made into list
hectorkambow Dec 15, 2020
d3595cd
minor
hectorkambow Dec 15, 2020
f8ee11f
adding image of front matter
hectorkambow Dec 15, 2020
77f83f4
minor
hectorkambow Dec 15, 2020
9d0f796
date and update image
hectorkambow Dec 15, 2020
b82175a
Merge pull request #971 from section-io/adding-image-front-matter
hectorkambow Dec 15, 2020
a2fae75
added front matter
hectorkambow Dec 15, 2020
ee15d40
minor
hectorkambow Dec 15, 2020
a3fc6f0
Merge pull request #854 from LinusMuema/android-workmanager
hectorkambow Dec 15, 2020
73625a7
second revision
bluemutheu Dec 16, 2020
0fd899d
spacing
zolomohan Dec 16, 2020
629e7b6
remove redundant headings
zolomohan Dec 16, 2020
e57e5e4
Fix headings
zolomohan Dec 16, 2020
32676a9
third revision
bluemutheu Dec 16, 2020
4a35970
Merge branch 'master' of https://github.com/bluemutheu/engineering-ed…
bluemutheu Dec 16, 2020
0278b22
fourth revision
bluemutheu Dec 16, 2020
7bc6e75
minor changes
lalith1403 Dec 16, 2020
ffe1ebd
minor
lalith1403 Dec 16, 2020
724b8e5
current edits
hectorkambow Dec 16, 2020
0e55454
minor changes
lalith1403 Dec 16, 2020
c02b870
updating changes
Jeff-mwangi Dec 16, 2020
38c023b
Finish tech review
Dec 16, 2020
e285f1b
Added peer reviewer line
Dec 16, 2020
13f6761
additional minor edits for flow
hectorkambow Dec 16, 2020
bb48334
edits to flow and grammar
zolomohan Dec 16, 2020
eac8fa0
updating minor changes
Jeff-mwangi Dec 16, 2020
b113d02
final preview
hectorkambow Dec 16, 2020
7a90791
time
hectorkambow Dec 16, 2020
d5dccf9
Merge pull request #851 from paulodhiambo/securing-django-api
hectorkambow Dec 16, 2020
79e426d
- added peer reviewer line
LinusMuema Dec 16, 2020
ebcd9ef
- added peer reviewer line
LinusMuema Dec 16, 2020
e638753
Minor fixes
srishilesh Dec 16, 2020
8d290d5
fix merge conflict issues
zolomohan Dec 16, 2020
f01bf90
minor updates
zolomohan Dec 16, 2020
ea8d5e8
minor updates
zolomohan Dec 16, 2020
8d1974e
add front matter
zolomohan Dec 16, 2020
1df9525
changed hero image
hectorkambow Dec 16, 2020
42d5f3f
minor fix
zolomohan Dec 16, 2020
0185d0f
tech revision
bluemutheu Dec 16, 2020
efb12c7
added author picture and bio
tensoncai Dec 16, 2020
9d6eeb0
Merge branch 'master' of https://github.com/bluemutheu/engineering-ed…
bluemutheu Dec 16, 2020
d5aa6b6
changed hero image again-not rendering
hectorkambow Dec 16, 2020
dae6ac0
first tech rev
bluemutheu Dec 16, 2020
6db4ef1
had to place older image-hero did not render
hectorkambow Dec 16, 2020
234035f
Merge pull request #902 from EKahuha/breaking-down-public-cloud-vs-hy…
hectorkambow Dec 16, 2020
49fa86d
edits to flow
zolomohan Dec 16, 2020
00be8ef
minor update
zolomohan Dec 16, 2020
b75e98f
punctuation and minor updates
zolomohan Dec 16, 2020
4f681a4
minor updates
zolomohan Dec 16, 2020
cee7186
add front matter
zolomohan Dec 16, 2020
e24825d
adding hero image
hectorkambow Dec 16, 2020
c0463d2
Merge pull request #883 from mbaabuones/understanding-hill-climbing-i…
hectorkambow Dec 16, 2020
f0809fc
minor
hectorkambow Dec 16, 2020
ea0104e
adding front matter
hectorkambow Dec 16, 2020
2ed46b6
preim review
hectorkambow Dec 17, 2020
acdd6ad
minor edits for flow
hectorkambow Dec 17, 2020
b48ab79
alt tag
hectorkambow Dec 17, 2020
5b774f2
Merge pull request #872 from JudyNduati/exception-handling-in-javascript
hectorkambow Dec 17, 2020
cff95ba
Minor changes on image
Pius1991 Dec 17, 2020
b19e261
Merge branch 'digital-assistants-vs-digital-companions' of https://gi…
Pius1991 Dec 17, 2020
f0031b5
re-submitted PR
EKahuha Dec 17, 2020
f7aaed1
minor edits for flow
hectorkambow Dec 17, 2020
32e980a
minor
hectorkambow Dec 17, 2020
61a5881
Merge pull request #790 from lalith1403/activation-func
hectorkambow Dec 17, 2020
0da9b63
added front matter
hectorkambow Dec 17, 2020
023bb79
Merge pull request #937 from tensoncai/master
hectorkambow Dec 17, 2020
d8b7168
Minor updates
collins-a Dec 17, 2020
c6130a6
adding front matter
hectorkambow Dec 17, 2020
00ddf40
Merge pull request #874 from kayere/introduction-to-room-db
hectorkambow Dec 17, 2020
3141ac8
add a missing explanation
cwilvx Dec 17, 2020
6ee3213
adding front matter
hectorkambow Dec 17, 2020
c1a42eb
minor & time
hectorkambow Dec 17, 2020
6adb072
Merge pull request #906 from collins-a/active-learning
hectorkambow Dec 17, 2020
1de7698
made some edits for flow
hectorkambow Dec 18, 2020
ff28631
minor
hectorkambow Dec 18, 2020
92c12a7
Merge pull request #915 from Pius1991/digital-assistants-vs-digital-c…
hectorkambow Dec 18, 2020
1cfead0
Update index.md
Manley12 Dec 18, 2020
06057d9
resized hero
adithbharadwaj Dec 18, 2020
ff636e2
Merge branch 'gitlab' of https://github.com/adithbharadwaj/engineerin…
adithbharadwaj Dec 18, 2020
094364d
Fixed changes
bloodprashure Dec 18, 2020
69a2a1b
add peer review attribution
adrianmurage Dec 18, 2020
7c68cec
add peer review contribution
adrianmurage Dec 18, 2020
74e1297
Update index.md
WanjaMIKE Dec 18, 2020
0190aeb
very minor changes for flow
hectorkambow Dec 18, 2020
a32eaed
minor
hectorkambow Dec 18, 2020
af17147
Merge pull request #884 from mwangiKibui/diving-deeper-into-js-objects
hectorkambow Dec 18, 2020
f4ab185
adding front matter
hectorkambow Dec 18, 2020
6553e7d
image paths
hectorkambow Dec 18, 2020
94d7adf
Merge pull request #890 from geoffrey45/django-google-oauth
hectorkambow Dec 18, 2020
dcca221
alt image tag
hectorkambow Dec 18, 2020
c3afca0
adding front matter process link
hectorkambow Dec 18, 2020
c1a1c14
added front matter
hectorkambow Dec 19, 2020
1f12096
Merge pull request #998 from EKahuha/how-to-optimize-cloud-computing-…
hectorkambow Dec 19, 2020
f486eaa
Update index.md
WanjaMIKE Dec 19, 2020
82eb03f
minor edits for flow
hectorkambow Dec 19, 2020
4a7f044
Merge pull request #833 from bloodprashure/master
hectorkambow Dec 19, 2020
54e7308
minor edits for flow
hectorkambow Dec 21, 2020
5c40b6d
minor
hectorkambow Dec 21, 2020
92560e9
Merge pull request #868 from srishilesh/building-xml-webpages-using-xslt
hectorkambow Dec 21, 2020
f9d4a59
edit to hero image
hectorkambow Dec 21, 2020
ce88a6a
alt image tage
hectorkambow Dec 21, 2020
0aa3a40
Merge pull request #893 from adithbharadwaj/gitlab
hectorkambow Dec 21, 2020
260ae2e
Update index.md
jumamiller Dec 21, 2020
afde33e
change file name
hectorkambow Dec 21, 2020
eab1570
added front matter
hectorkambow Dec 21, 2020
3bea775
alt image tag
hectorkambow Dec 21, 2020
14fb05e
Merge pull request #923 from collins-a/underspecification
hectorkambow Dec 21, 2020
98d8833
edit spacing
zolomohan Dec 22, 2020
4788c45
Update index.md
WanjaMIKE Dec 22, 2020
2759636
Add files via upload
mbaabuones Dec 22, 2020
2f06427
Update index.md
mbaabuones Dec 22, 2020
d30b561
Delete equation.gif
mbaabuones Dec 22, 2020
5dc95b4
Add files via upload
mbaabuones Dec 22, 2020
af20a42
Update index.md
mbaabuones Dec 22, 2020
8b5184d
Update index.md
mohamedgh16 Dec 22, 2020
f1dface
Add files via upload
mohamedgh16 Dec 22, 2020
90112a5
changed file name
hectorkambow Dec 22, 2020
679861f
minor change
lalith1403 Dec 22, 2020
4fa1baf
adding peer reviewer line
hectorkambow Dec 22, 2020
a8dad58
change name of file
hectorkambow Dec 22, 2020
0bc0650
minor change
lalith1403 Dec 22, 2020
acef63a
minor
hectorkambow Dec 22, 2020
b0438d5
Merge pull request #925 from Jeff-mwangi/introduction-to-c#
hectorkambow Dec 22, 2020
b03f862
minor
hectorkambow Dec 22, 2020
db33223
minor
hectorkambow Dec 22, 2020
52ee915
Finish prelim
Dec 22, 2020
70d131d
minor edits
zolomohan Dec 22, 2020
285ea62
minor edit on further reading
zolomohan Dec 22, 2020
907e584
minor edits
zolomohan Dec 22, 2020
a483e87
added front matter
hectorkambow Dec 22, 2020
0ecde8d
Merge pull request #938 from EKahuha/comparing-intrusion-detection-sy…
hectorkambow Dec 22, 2020
ac2a8be
very minor edits for flow
hectorkambow Dec 22, 2020
8c96b28
minor added mathjax script
hectorkambow Dec 22, 2020
0172120
Merge pull request #917 from mbaabuones/an-overview-of-fuzzy-logic-sy…
hectorkambow Dec 22, 2020
259f8e3
minor edits for flow
hectorkambow Dec 23, 2020
89f8ec2
minor
hectorkambow Dec 23, 2020
66a5e47
minor
hectorkambow Dec 23, 2020
67709c9
date time
hectorkambow Dec 23, 2020
9d8623c
minor
hectorkambow Dec 23, 2020
aeaabde
Merge pull request #933 from bluemutheu/master
hectorkambow Dec 23, 2020
ec11932
minor changes
WanjaMIKE Dec 23, 2020
41f1dc7
Finish tech review
Dec 23, 2020
c8dc7bd
Major edits
kimkimani Dec 23, 2020
3abdc26
Update index.md
kimkimani Dec 23, 2020
a37fac2
Update index.md
mohamedgh16 Dec 23, 2020
8899afa
minor edits
zolomohan Dec 23, 2020
234aff1
minor
zolomohan Dec 23, 2020
f2ad73c
minor
zolomohan Dec 23, 2020
ff43a00
Minor edits
cyberShaw Dec 23, 2020
f8492e0
Add front matter
cyberShaw Dec 23, 2020
060f8ad
Add peer review line
cyberShaw Dec 23, 2020
1e0cc30
minor
zolomohan Dec 23, 2020
4ce142e
add front matter
zolomohan Dec 23, 2020
9515a58
Add Image URLs
zolomohan Dec 23, 2020
5d333b1
Delete properties window and toolbox.png
mohamedgh16 Dec 24, 2020
8b535b3
replacing image
mohamedgh16 Dec 24, 2020
45ae44d
renaming image
mohamedgh16 Dec 24, 2020
dae0ea0
Add files via upload
mbaabuones Dec 24, 2020
0425372
Delete hero-image.webp
mbaabuones Dec 24, 2020
4e58e87
Add files via upload
mbaabuones Dec 24, 2020
f0e3067
add peer review line
zolomohan Dec 28, 2020
a643ec2
Update Fork with Master
louisefindlay23 Dec 28, 2020
fe5016c
Fixed EJS partial syntax error
louisefindlay23 Dec 28, 2020
8101f7d
Merge pull request #1087 from louisefindlay23/article-fix
ninjaginja Dec 28, 2020
a4598e1
some minor changes to Format and style for flow
hectorkambow Dec 28, 2020
5b0c326
minor
hectorkambow Dec 28, 2020
520087e
Merge pull request #844 from jumamiller/laravel-8-new-features
hectorkambow Dec 28, 2020
d642a49
minor
hectorkambow Dec 28, 2020
b54d6ae
minor edits for flow
hectorkambow Dec 28, 2020
57327f0
minor
hectorkambow Dec 28, 2020
2daa800
description change
hectorkambow Dec 28, 2020
abfac3b
Merge pull request #904 from mbaabuones/automation-testing-in-selenium
hectorkambow Dec 28, 2020
22dc799
previewed
hectorkambow Dec 29, 2020
1ce0658
title
hectorkambow Dec 29, 2020
cfd1a02
minor
hectorkambow Dec 29, 2020
65e804b
Merge pull request #840 from lalith1403/hugging-face
hectorkambow Dec 29, 2020
ffdc1d7
very minor edits for flow and format
hectorkambow Dec 29, 2020
ec28928
minor
hectorkambow Dec 29, 2020
6ebf313
minor
hectorkambow Dec 29, 2020
6853d4b
Merge pull request #905 from LinusMuema/android-navigation-components
hectorkambow Dec 29, 2020
b03c618
very minor edits for flow
hectorkambow Dec 29, 2020
365e29a
Merge pull request #913 from mohamedgh16/master
hectorkambow Dec 30, 2020
efffc27
minor
WanjaMIKE Dec 30, 2020
5a78d58
rebrand of EngEd portion of site
ninjaginja Dec 30, 2020
afda56d
Merge branch 'master' of https://github.com/section-io/engineering-ed…
ninjaginja Dec 30, 2020
bc8b234
Finish review
Dec 30, 2020
55dd957
minor formatting updates
ninjaginja Dec 30, 2020
78cafa7
Merge pull request #796 from kimkimani/Android-Application-An-app-Upd…
ninjaginja Dec 30, 2020
bc79eb1
added front matter
ninjaginja Dec 30, 2020
7ad0ded
minor formatting updates
ninjaginja Dec 30, 2020
b940952
Remove personal note
lalith1403 Dec 30, 2020
7113676
Merge pull request #801 from lalith1403/qna
ninjaginja Dec 30, 2020
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
added front matter
very minor for flow
previewed
  • Loading branch information
hectorkambow committed Dec 14, 2020
commit 9d6eb3bd88a13bd1b7e9ffda5f2b8b488045408f
100 changes: 70 additions & 30 deletions articles/google-play-in-app-reviews/index.md
Original file line number Diff line number Diff line change
@@ -1,100 +1,135 @@
---
layout: engineering-education
status: publish
published: true
url: /engineering-education/google-play-in-app-reviews/
title: Google Play In-App Review using Android Studio
description: This article will explain how to implement an in-app review API that prompts users to submit Play store ratings and reviews without leaving the application and without opening the Play store either.
author: joseph-chege
date: 2020-12-14T00:00:00-11:00
topics: []
excerpt_separator: <!--more-->
images:

- url: /engineering-education/google-play-in-app-reviews/hero.png
alt: Google play in-app review Android Studio example image
---
In this guide, we will learn how to implement the *rate this app* functionality within your Android application using Google core in-app review API.
<!--more-->
When a user is interacting with your application, you always want to get feedback. Feedback will give you insight into what your users think about your application.

In this guide, we'll learn how to implement the "rate this app" functionality within your android application using Google Core in-app review API.

In the old days, a user would have to open the Google Play store to write a review. In some fashion, you would use a fallback review dialog with some "call to action" buttons to nudge the user to review your application. If the user agrees, the button redirects to the Play store so that the user can write a review about your application.

This approach does not promote a user good experience and can potentially ruin your application's reputation among users. To make matters worse, this method doesn’t establish communication between the Play store and your application; it will keep popping up even after a user leaves a review. This type of call to action will force your user to leave your application. And you don’t want such a scenario, as there's a chance that a user may not reopen your application once redirected to the play store.
This approach does not promote a user good experience and can potentially ruin your application's reputation among users. To make matters worse, this method doesn’t establish communication between the Play store and your application; it will keep popping up even after a user leaves a review.

This type of call to action will force your user to leave your application. You don’t want such a scenario, as there's a chance that a user may not reopen your application once redirected to the play store.

Google announced an [in-app review API](https://developer.android.com/guide/playcore/in-app-review) that prompts users to submit Play store ratings and reviews without leaving the application and without opening the Play store either. Users' reviews/ratings will eventually be displayed in the Google Play store. This encourages users to give feedback on your application.
Google announced an [in-app review API](https://developer.android.com/guide/playcore/in-app-review) that prompts users to submit Play store ratings and reviews without leaving the application and without opening the Play store either. Users' reviews/ratings will eventually be displayed in the Google Play store.

This encourages users to give feedback on your application.

![image](/engineering-education/google-play-in-app-reviews/in-app-review-flow.jpg)

***[Image source.](https://developer.android.com/guide/playcore/in-app-review)***
***[Image source](https://developer.android.com/guide/playcore/in-app-review)***

This is how the in-app review API looks compared to the old fallback dialog.

![image](/engineering-education/google-play-in-app-reviews/in-app-dialog-and-fallback-dialog.png)

Typically, this API concept is a better way to ask users for a review than the fallback rate dialog.
Typically, this API concept is a better way of asking users for a review than the fallback rate dialog.

### Prerequisites
This guide assumes you have prior knowledge of Android application development using Android Studio.

To carry out testing you need;
To carry out testing you will need:
- A Google Play [Console account](https://play.google.com/console/about/).
- An application already published in the Google Play store.

### Why you should ask your users for reviews
Reviews play a marketing role in your application. They are a crucial part of securing more downloads because they can convince a new user whether they should download the application. There's a good chance a new user will check reviews and ratings to decide which application to try. The reviews give the experiences of previous users.
Reviews play a marketing role in your application. They are a crucial part of securing more downloads because they can convince a new user whether they should download the application. There's a good chance a new user will check reviews and ratings to decide which application to try. The reviews share the experiences of previous users.

Reviews also form a line of communication between you and your users, as they tell you what to improve in your application. Potentially, a user could experience a bug while interacting with your application. Feedback lets you know that something might not be working well, giving you a nudge to fix said bug.

Reviews also form a line of communication between you and your users, as they tell you what to improve in your application. Potentially, a user could catch a bug while interacting with your application. Feedback lets you know that something might not be working well, giving you a nudge to fix a bug.
Improvement on your Play store ranking can make your application more discoverable via organic searches. Apart from keywords that you add such as the application title and description, Google Play store indexes almost every text in your store listing.

Improvement of your Play store ranking can make your application more discoverable from organic searches. Apart from keywords that you add such as application title and description, Google Play store indexes almost every text in your store listing. Reviews are part of this text because they appear in your store listing. When indexed, your application becomes more discoverable to the relevant users. This translates to a good ranking, which results in more downloads from traffic conversion.
Reviews are part of this text because they appear in your store listing. When indexed, your application becomes more discoverable to the relevant users. This translates to a good ranking, which results in more downloads from traffic conversion.

### When to show in-app reviews
Google in-app review is a great concept. However, you should be smart about when to implement in-app reviews.

Typically, you don’t want to ask a user to rate your application, for example, in the middle of a game. This will lead to a bad user experience, and the chances are that users might write negative reviews. You don’t want that. You should strategically know when is appropriate to show a review dialog. For example, after a user has finished playing a particular game level, that would be a perfect moment to do so. This will ensure the user gives a review that accurately reflects their experience playing that game.
Typically, you don’t want to ask a user to rate your application, for example, in the middle of a game. This will lead to a bad user experience, and the chances are that users might write negative reviews. You should strategically know when is appropriate to show a review dialog.

For example, after a user has finished playing a particular game level, that would be a perfect moment to do so. This will ensure the user gives a review that accurately reflects their experience playing that game.

Another case would be that you have, say, an e-commerce application. In this case, it would be inappropriate to tell a user to review the app in the middle of making an order.

You want the user to have enough information about your application services before submitting a review. In this case, you would ask a user to write a review when the order has been processed, to capture the right moment.

You don’t want to show the review dialog when a user is yet to interact with your application enough to give adequate feedback.

Another case would be that you have, say, an e-commerce application. In this case, it would be inappropriate to tell a user to review the app in the middle of making an order. You want the user to have enough information about your application services before submitting a review. In this case, you would ask a user to write a review when the order has been processed, to capture the right moment. You don’t want to show the review dialog when a user is yet to interact with your application enough to give feedback.
With Google Core, the API is designed to respect user privacy. The rating sheet does not show up at any time. It's not attached to any call to action event. To limit API misuse, the API has quota limits per user.

With Google Core, the API is designed to respect user privacy. The rating sheet does not show up at any time. It is not attached to any call to action event. To limit API misuse, the API has quota limits per user. However, Google has not provided the exact number of times the rating dialog will open up per user. A similar iOS API has its quota limits set three times a year per user, which makes sense, as this will not be annoying to the user.
However, Google has not provided the exact number of times the rating dialog will open up per user. A similar iOS API has its quota limits set three times a year per user, which makes sense, as this will not be annoying to the user.

Check the documentation [guidelines](https://developer.android.com/guide/playcore/in-app-review#when-to-request) regarding when you should request the review flow. The API states that you need to take care to note the following.
Check the documentation [guidelines](https://developer.android.com/guide/playcore/in-app-review#when-to-request) regarding when you should request the review flow.

1. How you ask for reviews matters. When using this API, you should not ask predictive or opinion questions before or after the review sheet dialogs show the app in your application. These questions include:
The API states that you need to note the following:

1. How you ask for reviews matters. When using this API, you should not ask predictive or opinionated questions before or after the review sheet dialogs show the app in your application. These questions include:

- Would you rate this application five stars?
- Do you like this app?

2. This API also advises you only to show dialog once a user has enough experience with your application. It's not a good practice to ask a user to write a review before the app delivers value to that user. Chances are, the user will get annoyed and skip the review. And if they don't skip it, they will give negative reviews.
2. The API also advises you only to show dialog once a user has enough experience with your application. It's not a good practice to ask a user to write a review before the app delivers value to that user. Chances are, the user will get annoyed and skip the review. And if they don't skip it, they will give negative reviews.

3. In order to minimize API usage and avoid annoying users, it would be best if you did not excessively ask users to write reviews.

### Implementation
Google describes this API as light, and indeed it is. It is simple to integrate within your application. To begin, identify an activity where you want to implement the review flow. Once implemented, the API will handle the review flow for you.
Google describes this API as light. It's simple to integrate within your application. To begin, identify an activity where you want to implement the review flow. Once implemented, the API will handle the review flow for you.

#### Requirements
- An Android phone running android 5.0 (API 21) or higher. The device should have Google Play installed and connected with a Gmail account.
- An Android phone running Android 5.0 (API 21) or higher. The device should have Google Play installed and connected with a Gmail account.
- Google Play Core Library, version 1.8.0 or higher.

#### Integration

##### Step 1: Adding dependency
#### Step 1: Adding dependency
Add Google Core Library to your `build.gradle` file.

```java
implementation 'com.google.android.play:core:1.9.0'
```

Sync to download the library to have access to the necessary classes to initiate review flow.

Always ensure that you are using the latest library version. Check [here](https://developer.android.com/reference/com/google/android/play/core/release-notes) for newly added versions.

##### Step 2: Creating an instance of a `ReviewManager`
#### Step 2: Creating an instance of a 'ReviewManager'
The `ReviewManager` provides the required functions that trigger the review flow.
They include;

They include:
- `requestReviewFlow()` — fetches application information from the Play store.
- `launchReviewFlow()` — initiates the review flow.

Declare `ReviewManager` right above `onCreate()`.

To create an instance of `ReviewManager`,
To create an instance of `ReviewManager`:
- Declare `ReviewManager` right above `onCreate()`.
- Use `ReviewManagerFactory` calling the `create` function, and pass your application context to it.

```java
reviewManager = ReviewManagerFactory.create(getApplicationContext());
```

##### Step 3: Requesting review info
`requestReviewFlow()` communicates with the Google Play store remotely to get the information that references your application. Declare `ReviewInfo`.
#### Step 3: Requesting review info
`requestReviewFlow()` communicates with the Google Play store remotely to get the information that references your application.

Declare `ReviewInfo`.

```java
ReviewInfo reviewInfo;
```

`ReviewInfo` holds this information, which will be used to trigger the review flow process to the end user.
`ReviewInfo` holds this information, that will be used to trigger the review flow process to the end user.

```js
Task<ReviewInfo> manager = reviewManager.requestReviewFlow();
Expand All @@ -106,9 +141,11 @@ Task<ReviewInfo> manager = reviewManager.requestReviewFlow();
});
```

Calling `requestReviewFlow()` will return the data associated with your play store application. This function performs an asynchronous operation, meaning we have to wait for the operation to complete. For this reason, we need to assign a listener. The listener will let `ReviewManager` know when the `Task` is completed and assign the request's results to `ReviewInfo`.
Calling `requestReviewFlow()` will return the data associated with your play store application. This function performs an asynchronous operation, meaning we have to wait for the operation to complete.

For this reason, we need to assign a listener. The listener will let `ReviewManager` know when the `Task` is completed and assign the request's results to `ReviewInfo`.

##### Step 4: Launching ReviewFlow
#### Step 4: Launching ReviewFlow
Referencing the `ReviewFlow`, we can start and show the review dialog to the user. However, in some instances, `requestReviewFlow()` can fail to get the application information, meaning that `ReviewFlow` will be null.

These instances include:
Expand Down Expand Up @@ -139,9 +176,9 @@ else {
}
```

When `requestReviewFlow()` is successful, `ReviewFlow` will be assigned to the request results. You need to check if `reviewInfo != null` to trigger the review flow with `launchReviewFlow()`. Then the API will handle the review's comment and rating and update your application store listing showing them.
When `requestReviewFlow()` is successful, `ReviewFlow` will be assigned to the request results. You need to check if `reviewInfo != null` to trigger the review flow with `launchReviewFlow()`. Then the API will handle the review's comment and rating and update your application store listing showing them.

This API state's that if an error occurs during the review flow, you should never inform the user or change your normal application flow. The app should continue its usual flow after `onComplete` Is called.
This API state's that if an error occurs during the review flow, you should never inform the user or change your normal application flow. The app should continue its usual flow after `onComplete` is called.

### Final Activity Code
***Remember to press `alt + enter` on a PC and `option + enter` on a Mac to import the classes after copying and pasting the code blocks into your IDE.***
Expand Down Expand Up @@ -253,3 +290,6 @@ mButton.setOnClickListener(new View.OnClickListener() {
For more reference, check the code on [GitHub](https://github.com/kimkimani/InAppReview).

I hope this guide is a helpful source on how to ask users for reviews as well as implement in-app reviews within your application.

---
Peer Review Contributions by: [Linus Muema](/engineering-education/authors/linus-muema/)