StoreKit: What is Love? Baby, don't hurt me. Don't hurt me no more.

Originator:quellish
Number:rdar://26130371 Date Originated:05-May-2016 05:21 PM
Status:Open Resolved:
Product:iOS SDK Product Version:9.0
Classification:Enhancement Reproducible:NA
 
Summary:
Meet Alice. Alice is a software tester at a small company and loves cat pictures. Yesterday she downloaded the CatsWritingBugReports app from the iTunes App Store and her life has not been the same since. A photo of a cat writing steps to reproduce catching a laser pointer had her rolling on the floor with laughter and delight 😻. She quickly messaged Bob that he MUST HAVE this app before moving on to the next cat entering a bug report.

Meet Bob. Bob also loves cats. And bug reports. After all, bug reports can be fun, right? Bob downloaded CatsWritingBugReports and started using it while in the restroom. The second cat writing a bug report had him laughing so hard he dropped his phone.
Yes, he dropped his phone. Splash. Right into the... 💩   <--(that is totally chocolate soft serve ice cream... smiling)

Bob, angry and frustrated with his dripping phone returned to his workstation and immediately opened iTunes. "THIS APP KILLED MY PHONE!!!". One star review.
Bob did not have AppleCare. Bob was in for a bad day.

Look at Alice. She LOVES this app. But... she did not review it. She did not rate it. She is so engrossed in the app that it never occurs to her.
Bob on the other hand had a bad experience - which had little to do with the app. Bob gave a negative review.

Users tend to leave reviews when they have a bad experience but not when they have a good one. For app developers this is a big deal - we want those happy, delighted users to leave feedback and ratings, but right now the mechanisms to do that can be... cumbersome. It would be fantastic if there was a means for an app developer to have users give ratings or reviews *while* they are using the app. 

There is a solution. Inside StoreKit there are two classes: SKComposeReviewViewController and SKStarRatingControl. Both of these are private APIs that provide rating or review functionality. Public versions of these APIs could allow users to provide App Store feedback from within apps.

Steps to Reproduce:
1. Create an awesome app (Such as Cats Writing Bug Reports)
2. Release to app store

Expected Results:
Awesome, positive feedback from users who are delighted by the app. 😄

Actual Results:
Negative feedback from that one guy who dropped his phone while using the app. 😕
Little positive feedback from users. Users who have positive experiences rarely run to the App Store to leave a rating.

Version:
iOS 9.x

Notes:
Obviously, an API for in-app App Store rating could easily be abused. 

Possible solutions:
- Only allow rating of the currently executing app (StoreKit gets the receipt for the app, uses that to determine what app can be rated, etc.) 
- Rate limit ratings.
- Require Apple ID authentication, or even go so far as to require Touch ID authentication specifically.
- ...etc.

Configuration:
iPhone 6s, 9.3.1

Attachments:

Comments


Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at bugreport.apple.com before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!