Skip to content

Commit

Permalink
Clarify store rulings
Browse files Browse the repository at this point in the history
Related to issue microsoft#927, my take on expanding the section that mentions Apple's ruling over OTA updates & update promts.
  • Loading branch information
kelset committed Jul 22, 2017
1 parent 5b640b2 commit 940265b
Showing 1 changed file with 16 additions and 1 deletion.
17 changes: 16 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ This plugin provides client-side integration for the [CodePush service](http://c
* [Android Setup](docs/setup-android.md)
* [Windows Setup](docs/setup-windows.md)
* [Plugin Usage](#plugin-usage)
* [Compliancy with stores' rules](#compliancy-with-stores-rules)
* [Releasing Updates](#releasing-updates)
* [Multi-Deployment Testing](#multi-deployment-testing)
* [Dynamic Deployment Assignment](#dynamic-deployment-assignment)
Expand Down Expand Up @@ -181,7 +182,21 @@ If you would like to display an update confirmation dialog (an "active install")

*NOTE: If you are using [Redux](http://redux.js.org) and [Redux Saga](http://yelouafi.github.io/redux-saga/), you can alternatively use the [react-native-code-push-saga](http://github.com/lostintangent/react-native-code-push-saga) module, which allows you to customize when `sync` is called in a perhaps simpler/more idiomatic way.*

<a id="apple-note">*NOTE: While [Apple's developer agreement](https://developer.apple.com/programs/ios/information/iOS_Program_Information_4_3_15.pdf) fully allows performing over-the-air updates of JavaScript and assets (which is what enables CodePush!), it is against their policy for an app to display an update prompt. Because of this, we recommend that App Store-distributed apps don't enable the `updateDialog` option when calling `sync`, whereas Google Play and internally distributed apps (e.g. Enterprise, Fabric, HockeyApp) can choose to enable/customize it.*</a>
### Compliancy with stores' rules

While Google Play and internally distributed apps (e.g. Enterprise, Fabric, HockeyApp) have no limitations over how to integrate CodePush, use and show update promts (so that developers can choose to how enable/customize it) Apple has a more precise ruling that evolved over time to allow its usage.

Paragraph **3.3.2**, since back in 2015's [Apple Developer Program License Agreement](https://developer.apple.com/programs/ios/information/iOS_Program_Information_4_3_15.pdf) fully allowed performing over-the-air updates of JavaScript and assets - and in its latest version (20170605) [downloadable here](https://developer.apple.com/terms/) this ruling is even broader:

> Interpreted code may be downloaded to an Application but only so long as such code: (a) does not change the primary purpose of the Application by providing features or functionality that are inconsistent with the intended and advertised purpose of the Application as submitted to the App Store, (b) does not create a store or storefront for other code or applications, and (c) does not bypass signing, sandbox, or other security features of the OS.
And CodePush allows you do follow these rules just fine, so you should never be worried of seeing your app rejected.

A side note has to be made for showing update promts: we suggest that App Store-distributed apps don't enable the `updateDialog` option when calling `sync`, since in the [App Store Review Guidelines](https://developer.apple.com/app-store/review/guidelines/) it is written that:

> Apps must not force users to rate the app, review the app, download other apps, or other similar actions in order to access functionality, content, or use of the app.
This is not necessarely the case for `updateDialog`, since it won't force the user to download the new version, but at least you should be aware of that ruling if you decide to show it.

## Releasing Updates

Expand Down

0 comments on commit 940265b

Please sign in to comment.