diff --git a/README.md b/README.md
index fa0db0e..0181eb3 100644
--- a/README.md
+++ b/README.md
@@ -1,12 +1,11 @@
# NativeScript Taptic Engine plugin
-> __BEWARE__ This plugin uses an undocumented feature which may get your app rejected when reviewed by Apple. Once Apple releases an official API this plugin will be updated of course. [People have used this approach __without problems__ though.](http://stackoverflow.com/questions/32526868/taptic-in-ios-9)
-
-
-### Supported platforms
-* iPhone 6s / 6s Plus or newer
+## Supported platforms
+* Official API: iPhone 7 / 7 Plus or newer
+* Unofficial API: iPhone 6s / 6s Plus or newer
+* Requires Xcode 8 to build
## Installation
From the command prompt go to your app's root folder and execute:
@@ -23,10 +22,27 @@ You can run the demo app from the root of the project by typing `npm run demo.io
-## API
+## Official API (requires at least iPhone 7)
+It's recommended to use this API, but you're limited to iPhone 7 and higher.
+As per [Apples guidelines](https://developer.apple.com/reference/uikit/uifeedbackgenerator)
+there's no runtime way to determine if the device is capable of providing haptic feedback,
+so the Promise can largely be ignored so I'm not even showing them here.
-### `weakBoom`
-This triggers the same effect as the 'Peek' in 'Peek & Pop', a very brief vibration.
+The API names are modeled after what [Apple has called them](https://developer.apple.com/reference/uikit/uifeedbackgenerator):
+
+### `selection`
+Use selection feedback generators to indicate a change in selection.
+
+##### TypeScript
+```js
+// require the plugin
+import {TapticEngine} from "nativescript-taptic-engine";
+
+// instantiate the plugin
+let tapticEngine = new TapticEngine();
+
+tapticEngine.selection();
+```
##### JavaScript
```js
@@ -36,31 +52,88 @@ var TapticEngine = require("nativescript-taptic-engine").TapticEngine;
// instantiate the plugin
var tapticEngine = new TapticEngine();
-tapticEngine.weakBoom().then(
- function() {
- // note that unsupported iOS devices like the simulator also end up here
- console.log("Boomed weakly, if available.");
- }, function () {
- console.log("You're running on Android. Meh.");
- }
-);
+tapticEngine.selection();
```
+### `notification`
+Use notification feedback generators to indicate successes, failures, and warnings.
+
+There are 3 notification types: `TapticEngineNotificationType.SUCCESS` (default), `.WARNING`, and `.ERROR`.
+
##### TypeScript
```js
// require the plugin
-import {TapticEngine} from "nativescript-taptic-engine";
+import {TapticEngine, TapticEngineNotificationType} from "nativescript-taptic-engine";
// instantiate the plugin
let tapticEngine = new TapticEngine();
-tapticEngine.weakBoom().then(() => {
+tapticEngine.notification({
+ type: TapticEngineNotificationType.ERROR
+});
+```
+
+### `impact`
+Use impact feedback generators to indicate that an impact has occurred.
+For example, you might trigger impact feedback when a user interface object
+collides with something or snaps into place.
+
+There are 3 impact styles: `TapticEngineImpactStyle.LIGHT`, `.MEDIUM` (default), and `.HEAVY`.
+
+##### TypeScript
+```js
+// require the plugin
+import {TapticEngine, TapticEngineImpactStyle} from "nativescript-taptic-engine";
+
+// instantiate the plugin
+let tapticEngine = new TapticEngine();
+
+tapticEngine.impact({
+ type: TapticEngineImpactStyle.HEAVY
+});
+```
+
+
+## Unofficial API (requires at least iPhone 6s)
+__BEWARE__ This uses an undocumented feature which may get your app rejected when reviewed by Apple.
+[People have used this approach __without problems__ though.](http://stackoverflow.com/questions/32526868/taptic-in-ios-9)
+
+### `weakBoom`
+This triggers the same effect as the 'Peek' in 'Peek & Pop', a very brief vibration.
+
+##### TypeScript
+```js
+// require the plugin
+import {TapticEngineUnofficial} from "nativescript-taptic-engine";
+
+// instantiate the plugin
+let tapticEngineUnofficial = new TapticEngineUnofficial();
+
+tapticEngineUnofficial.weakBoom().then(() => {
// note that unsupported iOS devices like the simulator also end up here
}, (err) => {
console.log("You're running on Android. Meh.");
});
```
+##### JavaScript
+```js
+// require the plugin
+var TapticEngineUnofficial = require("nativescript-taptic-engine").TapticEngineUnofficial;
+
+// instantiate the plugin
+var tapticEngineUnofficial = new TapticEngineUnofficial();
+
+tapticEngineUnofficial.weakBoom().then(
+ function() {
+ // note that unsupported iOS devices like the simulator also end up here
+ console.log("Boomed weakly, if available.");
+ }, function () {
+ console.log("You're running on Android. Meh.");
+ }
+);
+```
+
### `strongBoom`
This triggers the 'Pop' effect of 'Peek & Pop', which is a bit more profound than the 'Peek' effect.
@@ -73,7 +146,5 @@ This triggers the 'Nope' effect you get when fi. force touching a home icon whic
Codewise this is exactly the same as `weakBoom` and `strongBoom`, except for the function name of course.
## Changelog
-* 1.0.0 Initial release
-
-## Future work
-* Implement the official API. If any. Ever.
+* 2.0.0 Added official API for iPhone 7. Moved the old API to TapticEngineUnofficial.*. Requires Xcode 8 to build.
+* 1.0.0 Initial release, unofficial API only. Compatible with any Xcode version.