SKStoreReviewController : How do I know user has rated the app to avoid alert in Future? - ios10.3

Here is the reference API:
[SKStoreReviewController requestReview];

You don't Apple does it automatically for you, up to 3 times per year max I think. I guess the rule is 'do not ask again if it's the same version' otherwise ask again for new version.

Here is how I detect if the skstorereviewcontroller has been presented: https://stackoverflow.com/a/45329548/2589276
However this does not guarantee that the user has rated the app. It doesn't matter anyways, Apple is only going to allow you to show 3 times regardless if the user rated or clicked "Later"

Related

How to handle submit button action in SKstoreviewcontroller ios

I have implimented SKStoreReviewController in My app. I just want to know how the functionality works. I need to satisfy below requirements.
I need to disply popup in all the 3 cases
For first 10 successful logins
After every 90 days
I don't want to disply rating popup never if he provide the rating.
How do I know if a user gave the rating and also I need to send
response to server if user gave the rating.
SKStoreReviewController submit button is active after your app is live in appStore. The submit button is automatically disable when you're running in debug mode. It's only active when you're launching your app in appStore. That is not mistake from apple or Xcode.
Thank you.
Apple provides some suggested best practices and sample code for requesting reviews.
In answer to your requirements:
This is definitely not best practice; after 10 successful logins might be a reasonable time to ask for a review, but asking each time the user logs in will probably just be annoying.
Again, asking after 90 days is probably a reasonable interval.
By design there is no indication to your app as to whether the review request was shown, nor whether a review was left.
You can link directly to the App Store page where the user can provide a review, however you still have no indication of whether the user actually left a review or simply cancelled out of the web page.
The sample code I linked to shows how to track whether you have requested a review for the current version of your app. You cannot know whether the user has actually reviewed the current version.

Apple developer - Update free app to subscription app

I have a (ios)free app for a while now in appstore and I am considering to change it to subscription app in the next update. It will be a subscription with the first month free.
I would like to know, from the user point of view, how will he know that updating the app will change the type of payment from free to subscription ? Anyone has experience in the matter ?
Thank you
Well from a user standpoint it's quite common to update a well running app to subscription But usualy the users that already own your app are still free to use it. (it's like "you helped me ramp up my app" = "you get it lifetime free").
Otherwise you should make it clear in the release notes and maybe add a single screen for the first startup to make it more obviouse. But the user can't know it up front if for example auto updates are activated.

When I use requestReview function of StoreKit, is there any way to know if the user has clicked on Submit or Not Now or Cancel button?

I am using the SKStoreKitReviewController in 10.3 and above to request a rating of the app. The alert is displayed. However, I need to implement a logic, wherein, if the user has already rated the app for one major release then I should not ask the user again for rating. Hence, is there a way to know that the user has successfully submitted the rating? Also, I would want to know if the user clicked on "Not now", so that I can prompt them again for rating after a few days. Is there a way to know this?
According to this Apple Developer page, you cannot prompt a user more than three times in a year.
Give users an easy way to provide feedback on the App Store without leaving your app using the SKStoreReviewController API. You can prompt for ratings up to three times in a 365-day period.

SKStore​Review​Controller: How to get written reviews?

At first SKStore​Review​Controller looks great: An easy and standardized way to ask users for a review. However SKStore​Review​Controller only allows the user to rate the app by giving it 1 to 5 stars. But am I supposed to engage the user to leave a written review in the store? Is this possible using SKStore​Review​Controller as well?
Or do I have to do this manually, e.g. by prompting something like "Thanks for rating the App, would you like to write a review as well"? I doubt that many users would be happy to perform another action after they just rated the app...
Wouldn't prompting for a written review would conflict with Apples guidelines not to prompt the user without using SKStore​Review​Controller?
Users cannot add a review though SKStoreReviewController.
It is also not possible for you to know if your requestReview() call actually resulted in a rate alert being presented. If the user has already rated the app recently, requestReview() will silently fail. Because of this, it is not advised to perform UI changes relying on the existence of an SKStoreReviewController.
I believe the suggested method for letting users review your app is to add a dedicated "Review App" button that deep links to your app in the App Store. This should be prompted by the user, and not the product of an alert.
To automatically open a page on which users can write a review in the App Store, append the query parameter action=write-review to your product URL.

Update in-app purchase content for iOS app?

I can't seem to find an answer to this question anywhere, so here goes...
I've developing an iOS app that will have non-consumable in-app purchases (expansion packs). Say I sell a pack that has 10 levels in it, for example, and in a month I want to update that in-app purchase to have 15 levels. The user will NOT have to re-purchase the pack; they would just need to update it.
Three questions:
Is this even possible?
How are users notified of this (or how SHOULD they be notified of this change?)
Does Apple need to review changes like this?
Thanks in advance,
Rick
Clearly yes. It is up to you, to write the code in a way, that your app remembers which updates a user has bought and how these updates are interpreted in your app. The only thing that will stop you from changing an in-app purchase content is when you take functionality or in your case levels, away again. Apple won't allow you to upload a new paid version with less functionality.
I would probably tell the user in the info text you have on the app-store, that they will receive 5 additional levels if they already have the 10 level upgrade.
Apple reviews every change you make to the app when you upload a new version to the app-store. This is true for any feature as it is for updates to in app purchase.
I did something similar to this in my app recently. I was saving a BOOL value in NSUserDefaults that specified if the user had purchased the expansion pack. In my update I simply had the change the code that was given to the user based on whether or not that BOOL value was YES or NO. As long as you designed it correctly you shouldn't have any troubles updating
Yes it's possible. Provided you keep a track of who has bought what pack (ie. keep a bool value as an NSUserDefault), then they will still have access to it (even if you add more stuff/levels to it).
It depends what you mean by notified; they will know if they read the update comments when they install the update. Also you could just choose to alert them when the load the app after the update - your call.
If you're submitting the code Apple will review it. Just think of it like any other update to an app.
Hope this helps!

Resources