Compare commits

..
116 Commits
Author SHA1 Message Date
Daniel 41c034cc19 chore(): update changelog 2018-09-18 16:03:39 +02:00
Daniel 89631a9fa6 4.14.0 2018-09-18 16:03:29 +02:00
Daniel 04db233b33 feat(chooster): add plugin
closes: #2612
2018-09-18 15:58:57 +02:00
Daniel 10d222dcea feat(local-notifications): add missing functions 2018-09-18 15:37:39 +02:00
Daniel 640da1b618 docs(ibeacon): typo 2018-09-18 15:22:17 +02:00
Daniel aecb0f9460 chore(package): bump dgeni 2018-09-18 15:17:21 +02:00
Daniel d077c48205 fix(web-intent): add missing properties
closes: #2701
2018-09-18 11:08:45 +02:00
Daniel 49d27e816c refactor(email-composer): reorder code 2018-09-18 11:03:02 +02:00
Daniel SoglandGitHub 3699fa9b50 fix(mobile-accessibility): add correct pluginRef
closes: #1860
2018-09-18 10:12:27 +02:00
Daniel ab4f1f5bbe docs(onesignal): hide option from docs
closes: #1969
2018-09-18 10:08:24 +02:00
Daniel 51006a76a0 feat(onesignal): add missing functions
closes: #2504
2018-09-18 10:05:34 +02:00
Rishi HindochaandDaniel Sogl 8bab32173a fix(onesignal): add missing setLocationShared method (#2723)
* fix(onesignal): add missing setLocationShared method

* Update index.ts
2018-09-18 09:40:55 +02:00
Daniel SoglandGitHub 3ef9593704 fix(push): add missing Chanel options
closes: #2712
2018-09-18 09:30:09 +02:00
Daniel 33e4392b63 refactor: remove unused lint rules 2018-09-17 17:59:41 +02:00
Daniel 9acbb9fcd6 refactor: follow only-arrow-functions lint rule 2018-09-17 17:56:35 +02:00
Daniel c1e1c5cb79 refactor: follow order-imports lint rule 2018-09-17 17:50:36 +02:00
Daniel 0c7cfeeeb8 refactor: update lint rules 2018-09-17 17:09:46 +02:00
Daniel a7830693af chore(scripts): remove fs-extra-promise 2018-09-17 15:14:37 +02:00
Daniel b60d5d4851 chore(): update changelog 2018-09-15 11:15:09 +02:00
Daniel 0c4aeddd1b 4.13.0 2018-09-15 11:15:04 +02:00
Daniel 667de5ba26 Revert "chore(): update changelog"
This reverts commit 2c2c1e482c.
2018-09-15 11:14:49 +02:00
Daniel 2dc7ee8916 Revert "4.12.3"
This reverts commit 7c419b48ad.
2018-09-15 11:14:41 +02:00
Daniel 2c2c1e482c chore(): update changelog 2018-09-15 11:05:56 +02:00
Daniel 7c419b48ad 4.12.3 2018-09-15 11:05:48 +02:00
弄潮儿andDaniel Sogl 0b9717636c feat(janalytics): add plugin (#2711)
* add janalytics native plugin

* add new plugin of wechat

* rm plugin wechat

* Update index.ts
2018-09-15 11:02:53 +02:00
弄潮儿andDaniel Sogl 10ac9ff9de feat(wechat): add plugin (#2716)
* add janalytics native plugin

* add new plugin of wechat

* rm janalytics plugin

* Update index.ts

* Update index.ts

* Update index.ts
2018-09-15 11:01:10 +02:00
Paul StelzerandDaniel Sogl 90d75af9d1 feat(branch-io): Add branch.io attribution and invitation plugin (#2691)
* feat(branch-io): Add branch.io attribution and invitation plugin

* Update index.ts
2018-09-15 10:55:01 +02:00
Paul StelzerandDaniel Sogl 3b3f942ed5 feat(appsflyer): Added Appsflyer Cordova SDK as ionic native plugin (#2690)
* feat(appsflyer): Added Appsflyer Cordova SDK

* fix(appsflyer): Corrected promises

* fix(appsflyer): Add description

* fix(appsflyer): Missing semicolon

* Update index.ts
2018-09-15 10:48:17 +02:00
Niklas MerzandDaniel Sogl 9601a64227 feat(calldirectory): add log function (#2708)
* feat(calldirectory): add log function

* Update index.ts
2018-09-15 10:43:11 +02:00
Paul StelzerandDaniel Sogl 22fd49b5d3 fix(in-app-review): Transfer Plugin to the correct folder (#2688) 2018-09-15 10:41:20 +02:00
ratnakar24andDaniel Sogl 890129bfda fix(ms-adal): Update createAuthenticationContext (#2705)
* Update createAuthenticationContext

Update createAuthenticationContext to include validateAuthority flag since it is throwing Error: Fail to valid authority with errors: [50049].
Without the flag it is throwing Error: Fail to valid authority with errors: [50049].

* Update index.ts
2018-09-15 10:39:41 +02:00
Tyler HallandDaniel Sogl 6a9a871758 docs(onesignal): update incorrect path to hook file (#2715) 2018-09-15 10:39:14 +02:00
Todd VrbaandDaniel Sogl ac467c50ac feat(mixpanel): Update/add functions (#2697)
* Update mixpanel typings for Ionic native.

* Update index.ts
2018-09-15 10:37:52 +02:00
iAmMrHandsandDaniel Sogl 267149b16f feat(local-notifications): Added local additional local notification action fields (#2713) 2018-09-15 10:37:24 +02:00
somqandDaniel Sogl 7047920a2a fix(bluetooth-le): Various methods fixes (#2707)
* feat(bluetooth-le): implemented all available methods and refactored existing ones

* fix(bluetooth-le): Removed @memberof jsdoc annotations to avoid ci check failure

* fix(bluetooth-le): Fixed multiple jsdocs typos/misformats preventing CI to pass checks while generating readmes

* fix(bluetooth-le): Removed package-lock.json

* Update index.ts

* fix(bluetooth-le): Fixed stringToBytes method, now properly takes a string as arg and return an Uint8Array

* fix(bluetooth-le): getAdapterInfo now returns an Observable for easier tracking of adapter states

* fix(bluetooth-le): Fixed missing cordova param (observable: true) in initializePeripheral method, fixed getAdapterInfo method, now return an adapterInfo object

* chore(bluetooth-le): Removed @description markup to allow a proper doc auto-format

* fix(bluetooth-le): Reverted getAdapterInfo method to a Promise return
2018-09-15 10:37:03 +02:00
Daniel aad814fcf1 chore(): update changelog 2018-08-31 19:09:35 +02:00
Daniel 03d6b2373c 4.12.2 2018-08-31 19:09:24 +02:00
Daniel KasperandDaniel Sogl d82e675442 fix(in-app-browser): fix mandatory options (#2684)
fix(in-app-browser): fix mandatory options
2018-08-31 19:05:33 +02:00
Daniel 1e84e23fd9 chore(): update changelog 2018-08-31 14:26:00 +02:00
Daniel f3f12cb306 4.12.1 2018-08-31 14:25:53 +02:00
Daniel b3bd0a83c7 chore(package): bump deps 2018-08-31 14:24:28 +02:00
rvdleunandDaniel Sogl 03e4f0e439 feat(push): Added voip property to IOSPushOptions (#2681)
* feat(push): Added missing voip property to IOSPushOptions

* Update index.ts
2018-08-31 14:23:40 +02:00
Pandiarajan NagarajanandDaniel Sogl a73146648f feat(aes256): Added new utility methods to generate secure key and secure IV (#2675) 2018-08-31 14:21:30 +02:00
Daniel KasperandDaniel Sogl d90724ef70 feat(in-app-browser): Add missing InAppBrowserOptions-properties (#2669) 2018-08-31 14:21:19 +02:00
Brad MallowandDaniel Sogl be0dc3dac4 fix(open-native-settings): allow supported input (#2666)
* allow supported input

* Update index.ts
2018-08-31 14:21:07 +02:00
Daniel a0a64da518 chore(package): bump deps 2018-08-25 12:02:03 +02:00
somqandDaniel Sogl 591ee87e05 feat(bluetooth-le): add bluetooth-le plugin (#2651)
* feat(bluetooth-le): implemented all available methods and refactored existing ones

* fix(bluetooth-le): Removed @memberof jsdoc annotations to avoid ci check failure

* fix(bluetooth-le): Fixed multiple jsdocs typos/misformats preventing CI to pass checks while generating readmes

* fix(bluetooth-le): Removed package-lock.json

* Update index.ts
2018-08-25 12:01:05 +02:00
Daniel 8db1dbef71 feat(http): add setSSLCertMode function 2018-08-21 20:39:21 +02:00
Daniel 73ae92d77c chore(): update changelog 2018-08-17 00:33:54 +02:00
Daniel 3c2753df64 4.12.0 2018-08-17 00:33:47 +02:00
Daniel 9035476833 chore(package): bump package-lock 2018-08-17 00:33:34 +02:00
Daniel 5f5e605e66 Merge remote-tracking branch 'origin/master' 2018-08-16 22:23:09 +02:00
Daniel ea6746d134 chore(build): refactor 2018-08-16 22:23:03 +02:00
Daniel SoglandGitHub 753fa4a7a4 Update CHANGELOG.md 2018-08-16 22:19:18 +02:00
Daniel ff784a4377 Auto stash before revert of "4.12.0" 2018-08-16 22:18:20 +02:00
Daniel 0764e28408 Revert "4.12.0"
This reverts commit 5825932e03.
2018-08-16 22:18:04 +02:00
Daniel 0197c88a03 chore(): update changelog 2018-08-16 22:10:36 +02:00
Daniel 5825932e03 4.12.0 2018-08-16 22:10:23 +02:00
Daniel bccc8ac379 chore(package): update package-lock 2018-08-16 22:10:15 +02:00
Daniel 3eb382d438 chore(package): bump deps 2018-08-16 22:06:19 +02:00
Ashwin DineshandDaniel Sogl ca9a702808 feat(webengage): add optional config with initialization (#2637)
* feat(webengage): add optional config with initialization

* Update index.ts
2018-08-16 22:01:54 +02:00
3f415f9bef fix(photo-library): interface missing includeVideos
Co-authored-by: @devdaddy 

closes: #2624
2018-08-16 21:58:30 +02:00
Luis Enrique Perez AlvarezandDaniel Sogl 0c6d1eabe2 docs(onesignal): fix typo
OneSignla -> OneSignal
2018-08-16 21:56:11 +02:00
Niklas MerzandDaniel Sogl 61fecf511b docs(firebase-dynamic-links): Change example (#2646)
* docs(firebase-dynamic-links): Change example

* Update index.ts
2018-08-16 21:55:59 +02:00
Daniel EhrhardtandDaniel Sogl 2ac52822b8 fix(extended-device-information): Fixed Memory Display Bug (#2641)
* Fixed Memory Display Bug with ExtendedDeviceInformation Plugin

* Update index.ts

* Update index.ts
2018-08-16 21:55:51 +02:00
rupendraaandDaniel Sogl 229b62c10b feat(local-notifications): add new foreground property (#2633)
* Update index.ts

* Update index.ts
2018-08-16 21:55:17 +02:00
Gordeev ArtemandDaniel Sogl 9b4fd02fa5 feat(fabric): add fabric plugin (#2618)
* feat(fabric): add fabric plugin

* Update index.ts
2018-08-16 21:54:39 +02:00
Marat DyatkoandIbby Hadeed d10777a33b fix(network): bind listener to document instead of window (#2622)
We noticed that in some cases network state listeners are stopped triggering, but `navigator.onLine` still reflects the state correctly. I used the following code to debug and found out an issue with `window` and `document` difference:

```js
window.addEventListener("online", ()=>console.warn('WINDOW ONLINE'), false); // won't be triggered
window.addEventListener("online", ()=>console.warn('WINDOW ONLINE'), false); // won't be triggered
document.addEventListener("online", ()=>console.warn('DOCUMENT ONLINE'), false); // triggered
document.addEventListener("online", ()=>console.warn('DOCUMENT ONLINE'), false); // triggered
```

Also, according to plugin documentation, listeners should be bound to `document`: https://github.com/apache/cordova-plugin-network-information#offline
2018-08-01 04:41:51 -04:00
Daniel 4f26069ca6 chore(): update changelog 2018-07-29 10:05:10 +02:00
Daniel 40571e5c99 4.11.0 2018-07-29 10:04:57 +02:00
Daniel 83194f616b Revert "chore(package): upgrade fs-extra"
This reverts commit 4297c3d43e.
2018-07-29 09:59:53 +02:00
Daniel b1f4df530a rerun build 2018-07-29 09:57:03 +02:00
Daniel 4297c3d43e chore(package): upgrade fs-extra 2018-07-29 09:52:36 +02:00
Daniel 95d495b468 chore(package): bump deps 2018-07-29 09:44:22 +02:00
Daniel f0989d1b96 chore(package): upgrade to angular 5
BREAKING: Ionic Native v4 requires now Angular 5
2018-07-29 09:21:43 +02:00
Daniel c113417878 docs(readme): update readme 2018-07-29 09:20:23 +02:00
Daniel cedd6df423 Merge remote-tracking branch 'origin/master' 2018-07-29 09:16:11 +02:00
Daniel 4b14ce2eec refactor(http): change return type to any 2018-07-29 09:16:00 +02:00
pwilknissandDaniel Sogl 27d380ef4b feat(clevertap): add CleverTap plugin (#2609)
* feat(clevertap): add CleverTap plugin

* style(clevertap): cleanup stray lint error

* refactor
2018-07-29 09:13:37 +02:00
Ashwin DineshandDaniel Sogl bd5bd7ea9d feat(webengage): add webengage plugin (#2604)
* feat(webengage): add webengage plugin

* refactor
2018-07-29 09:11:05 +02:00
Jan PiotrowskiandDaniel Sogl c6713862c5 refactor: Improve Ionic Native warnings (#2611)
- Explicitly spell out that this is coming from "Ionic Native", instead of just "Native"
- Improve sentence that explains 2 most common reasons for missing Cordova
2018-07-29 09:10:48 +02:00
Daniel 3b32e19bf1 feat(facebook): add getDeferredApplink function
closes: #2510
2018-07-29 09:10:17 +02:00
Daniel 4092831754 fix(http): add correct return types for downloadFile and uploadFile
closes: #2615
2018-07-29 08:57:16 +02:00
Daniel SoglandGitHub c2fe5f8336 docs(contacts): mark as deprecated 2018-07-27 21:39:58 +02:00
Daniel 3f9067d090 chore(): update changelog 2018-07-25 12:57:52 +02:00
Daniel 36a4e81fe4 4.10.1 2018-07-25 12:57:38 +02:00
Gustavo Maximiliano CortezandDaniel Sogl 79cb478c26 fix(user-agent): Plugin not installed (#2607)
fix(user-agent): Plugin not installed
2018-07-24 16:59:19 +02:00
Dominik GengandDaniel Sogl b635ba99ea fix(nfs): Optional arguments for records like textRecord (#2605)
fix(nfs): Optional arguments for records like textRecord
2018-07-24 16:59:02 +02:00
Daniel 0f84249b13 chore: update changelog 2018-07-18 21:53:13 +02:00
Daniel 80adfe0891 chore(): update changelog 2018-07-18 21:52:41 +02:00
Daniel 0550a4fcc1 4.10.0 2018-07-18 21:52:19 +02:00
Etienne BLANC-COQUANDandDaniel Sogl e50ef18e10 docs(network-interface): update example (#2602)
Don't need {
2018-07-18 21:50:30 +02:00
MosheandDaniel Sogl b581a5b2b6 feat(ccm): replace plugin source (#2601) 2018-07-18 21:50:16 +02:00
jing-zhouandDaniel Sogl e640983340 feat(alipay): replace plugin (#2591)
BREAKING CHANGE: Replaced plugin with maintained Cordova plugin
2018-07-18 21:49:32 +02:00
Sebastian BaarandDaniel Sogl a6c8045593 feat(classkit): add ClassKit plugin (#2590)
* add classkit plugin

* refactor
2018-07-18 21:48:07 +02:00
Carsten SchindlerandDaniel Sogl ecc698ee7a feat(abbyy-rtr): add ABBYY Real-Time Recognition plugin (#2580)
* feat(abbyy-rtr): add ABBYY Real-Time Recognition plugin

* refactor(abbyy-rtr) add CordovaCheck
2018-07-18 21:47:44 +02:00
Daniel b66d27b794 chore(): update changelog 2018-07-13 17:12:51 +02:00
Daniel c3a9296a36 4.9.2 2018-07-13 17:12:38 +02:00
Gustav BylundandDaniel Sogl 565c766813 fix(sqlite): mark optional arguments for executeSql (#2592) 2018-07-13 17:06:51 +02:00
jasvindersingh-evonandDaniel Sogl 1684202629 docs(document-picker): fix example (#2593) 2018-07-13 17:06:37 +02:00
Don ColemanandDaniel Sogl d95a359719 fix(ble): change signature for autoConnect (#2594)
* fix(ble): change signature for autoConnect (#2573)

* fix(ble): update usage for autoConnect (#2573)
2018-07-13 17:06:17 +02:00
Daniel 12ddf96705 chore(): update changelog 2018-07-09 19:51:19 +02:00
Daniel fead657fbd 4.9.1 2018-07-09 19:50:51 +02:00
Daniel f1d8d3b255 Revert "chore(package): bump deps"
This reverts commit 6af01d2dc1.
2018-07-09 19:48:52 +02:00
Daniel 6af01d2dc1 chore(package): bump deps 2018-07-09 19:45:23 +02:00
Shubham PandeyandDaniel Sogl 006ba4425f docs(linkedin): fix example (#2588)
* added missing `)` in login code
2018-07-08 18:43:54 +02:00
Judson NeerandDaniel Sogl 4f415892b1 feat(network-interface): match latest plugin release (#2587) 2018-07-08 18:43:44 +02:00
MattandDaniel Sogl 713efd7206 docs(sqlite): Add interface for transaction callback function argument (#2586)
The transaction callback function argument is currently typed as `any`, however this isn't very  helpful so I have added a base interface which contains only the `executeSql` function. This function is all that is available on the object returned by WebSQL, but is also available on the full SQLite implementation.
2018-07-08 18:43:31 +02:00
Sebastián RamírezandDaniel Sogl 3f9311090d docs(app-version): explain results (#2582)
* fix(app-version): fix getVersionCode to return number

as is in the actual implementation. Also update and clarify the method docs

* fix(app-version): fix getVersionCode for compatibility
with Android and iOS at the same time
2018-07-04 13:43:46 +02:00
Daniel SoglandGitHub 28a1b83d1d docs(readme): update examples 2018-07-02 10:59:40 +02:00
Cosmic Web ServicesandDaniel Sogl 956e644fa4 fix(health-kit): add missing checkAuthStatus param (#2544)
* Fix checkAuthStatus

* Update index.ts

* Update index.ts
2018-07-02 10:51:10 +02:00
Timothy ShamilovandDaniel Sogl f62a123a34 feat(streaming-media): add new parameters & docs (#2576) 2018-07-02 10:47:28 +02:00
Daniel 8e1ca359ab refactor(build): remove decamelize 2018-07-01 13:16:55 +02:00
filippoandDaniel Sogl 61714ff7ca fix(barcode-scanner): wrong barcode format identifier PDF417 -> PDF_417 (#2574) 2018-06-29 21:38:46 +02:00
CharlesandDaniel Sogl 9f9a3461f7 feat(ble): add missing functions (#2572) 2018-06-29 21:30:13 +02:00
Renjith VKandDaniel Sogl 22ffb4914f docs(deeplinks): update example (#2570)
If it has only one argument, then no need function brackets. It would decrease the readability of the source code snippets.
2018-06-28 14:40:37 +02:00
190 changed files with 10960 additions and 2477 deletions
+1
View File
@@ -5,3 +5,4 @@ node_modules/
aot/
scripts/ionic-native-bower
dist/
+212 -55
View File
@@ -1,5 +1,180 @@
<a name="4.9.0"></a>
# [4.9.0](https://github.com/ionic-team/ionic-native/compare/v4.8.0...v4.9.0) (2018-06-28)
<a name="4.14.0"></a>
# [4.14.0](https://github.com/ionic-team/ionic-native/compare/v4.13.0...v4.14.0) (2018-09-18)
### Bug Fixes
* **mobile-accessibility:** add correct pluginRef ([3699fa9](https://github.com/ionic-team/ionic-native/commit/3699fa9)), closes [#1860](https://github.com/ionic-team/ionic-native/issues/1860)
* **onesignal:** add missing setLocationShared method ([#2723](https://github.com/ionic-team/ionic-native/issues/2723)) ([8bab321](https://github.com/ionic-team/ionic-native/commit/8bab321))
* **push:** add missing Chanel options ([3ef9593](https://github.com/ionic-team/ionic-native/commit/3ef9593)), closes [#2712](https://github.com/ionic-team/ionic-native/issues/2712)
* **web-intent:** add missing properties ([d077c48](https://github.com/ionic-team/ionic-native/commit/d077c48)), closes [#2701](https://github.com/ionic-team/ionic-native/issues/2701)
### Features
* **chooster:** add plugin ([04db233](https://github.com/ionic-team/ionic-native/commit/04db233)), closes [#2612](https://github.com/ionic-team/ionic-native/issues/2612)
* **local-notifications:** add missing functions ([10d222d](https://github.com/ionic-team/ionic-native/commit/10d222d))
* **onesignal:** add missing functions ([51006a7](https://github.com/ionic-team/ionic-native/commit/51006a7)), closes [#2504](https://github.com/ionic-team/ionic-native/issues/2504)
<a name="4.13.0"></a>
# [4.13.0](https://github.com/ionic-team/ionic-native/compare/v5.0.0-beta.17...v4.13.0) (2018-09-15)
### Bug Fixes
* **bluetooth-le:** Various methods fixes ([#2707](https://github.com/ionic-team/ionic-native/issues/2707)) ([7047920](https://github.com/ionic-team/ionic-native/commit/7047920))
* **in-app-review:** Transfer Plugin to the correct folder ([#2688](https://github.com/ionic-team/ionic-native/issues/2688)) ([22fd49b](https://github.com/ionic-team/ionic-native/commit/22fd49b))
* **ms-adal:** Update createAuthenticationContext ([#2705](https://github.com/ionic-team/ionic-native/issues/2705)) ([890129b](https://github.com/ionic-team/ionic-native/commit/890129b))
### Features
* **appsflyer:** Added Appsflyer Cordova SDK as ionic native plugin ([#2690](https://github.com/ionic-team/ionic-native/issues/2690)) ([3b3f942](https://github.com/ionic-team/ionic-native/commit/3b3f942))
* **branch-io:** Add branch.io attribution and invitation plugin ([#2691](https://github.com/ionic-team/ionic-native/issues/2691)) ([90d75af](https://github.com/ionic-team/ionic-native/commit/90d75af))
* **calldirectory:** add log function ([#2708](https://github.com/ionic-team/ionic-native/issues/2708)) ([9601a64](https://github.com/ionic-team/ionic-native/commit/9601a64))
* **janalytics:** add plugin ([#2711](https://github.com/ionic-team/ionic-native/issues/2711)) ([0b97176](https://github.com/ionic-team/ionic-native/commit/0b97176))
* **local-notifications:** Added local additional local notification action fields ([#2713](https://github.com/ionic-team/ionic-native/issues/2713)) ([267149b](https://github.com/ionic-team/ionic-native/commit/267149b))
* **mixpanel:** Update/add functions ([#2697](https://github.com/ionic-team/ionic-native/issues/2697)) ([ac467c5](https://github.com/ionic-team/ionic-native/commit/ac467c5))
* **wechat:** add plugin ([#2716](https://github.com/ionic-team/ionic-native/issues/2716)) ([10ac9ff](https://github.com/ionic-team/ionic-native/commit/10ac9ff))
<a name="5.0.0-beta.17"></a>
# [5.0.0-beta.17](https://github.com/ionic-team/ionic-native/compare/v5.0.0-beta.16...v5.0.0-beta.17) (2018-08-31)
### Bug Fixes
* **in-app-browser:** fix mandatory options ([#2684](https://github.com/ionic-team/ionic-native/issues/2684)) ([d82e675](https://github.com/ionic-team/ionic-native/commit/d82e675))
<a name="4.12.1"></a>
## [4.12.1](https://github.com/ionic-team/ionic-native/compare/v5.0.0-beta.15...v4.12.1) (2018-08-31)
### Bug Fixes
* **open-native-settings:** allow supported input ([#2666](https://github.com/ionic-team/ionic-native/issues/2666)) ([be0dc3d](https://github.com/ionic-team/ionic-native/commit/be0dc3d))
### Features
* **aes256:** Added new utility methods to generate secure key and secure IV ([#2675](https://github.com/ionic-team/ionic-native/issues/2675)) ([a731466](https://github.com/ionic-team/ionic-native/commit/a731466))
* **in-app-browser:** Add missing InAppBrowserOptions-properties ([#2669](https://github.com/ionic-team/ionic-native/issues/2669)) ([d90724e](https://github.com/ionic-team/ionic-native/commit/d90724e))
* **push:** Added voip property to IOSPushOptions ([#2681](https://github.com/ionic-team/ionic-native/issues/2681)) ([03e4f0e](https://github.com/ionic-team/ionic-native/commit/03e4f0e))
<a name="5.0.0-beta.15"></a>
# [5.0.0-beta.15](https://github.com/ionic-team/ionic-native/compare/v4.12.0...v5.0.0-beta.15) (2018-08-25)
### Features
* **bluetooth-le:** add bluetooth-le plugin ([#2651](https://github.com/ionic-team/ionic-native/issues/2651)) ([591ee87](https://github.com/ionic-team/ionic-native/commit/591ee87))
* **http:** add setSSLCertMode function ([8db1dbe](https://github.com/ionic-team/ionic-native/commit/8db1dbe))
<a name="4.12.0"></a>
# [4.12.0](https://github.com/ionic-team/ionic-native/compare/v4.11.0...v4.12.0) (2018-08-16)
### Bug Fixes
* **extended-device-information:** Fixed Memory Display Bug ([#2641](https://github.com/ionic-team/ionic-native/issues/2641)) ([2ac5282](https://github.com/ionic-team/ionic-native/commit/2ac5282))
* **network:** bind listener to document instead of window ([#2622](https://github.com/ionic-team/ionic-native/issues/2622)) ([d10777a](https://github.com/ionic-team/ionic-native/commit/d10777a))
* **photo-library:** interface missing includeVideos ([3f415f9](https://github.com/ionic-team/ionic-native/commit/3f415f9)), closes [#2624](https://github.com/ionic-team/ionic-native/issues/2624)
### Features
* **fabric:** add fabric plugin ([#2618](https://github.com/ionic-team/ionic-native/issues/2618)) ([9b4fd02](https://github.com/ionic-team/ionic-native/commit/9b4fd02))
* **local-notifications:** add new foreground property ([#2633](https://github.com/ionic-team/ionic-native/issues/2633)) ([229b62c](https://github.com/ionic-team/ionic-native/commit/229b62c))
* **webengage:** add optional config with initialization ([#2637](https://github.com/ionic-team/ionic-native/issues/2637)) ([ca9a702](https://github.com/ionic-team/ionic-native/commit/ca9a702))
<a name="4.11.0"></a>
# [4.11.0](https://github.com/ionic-team/ionic-native/compare/v4.10.1...v4.11.0) (2018-07-29)
### Bug Fixes
* **http:** add correct return types for downloadFile and uploadFile ([4092831](https://github.com/ionic-team/ionic-native/commit/4092831)), closes [#2615](https://github.com/ionic-team/ionic-native/issues/2615)
### Features
* **clevertap:** add CleverTap plugin ([#2609](https://github.com/ionic-team/ionic-native/issues/2609)) ([27d380e](https://github.com/ionic-team/ionic-native/commit/27d380e))
* **facebook:** add getDeferredApplink function ([3b32e19](https://github.com/ionic-team/ionic-native/commit/3b32e19)), closes [#2510](https://github.com/ionic-team/ionic-native/issues/2510)
* **webengage:** add webengage plugin ([#2604](https://github.com/ionic-team/ionic-native/issues/2604)) ([bd5bd7e](https://github.com/ionic-team/ionic-native/commit/bd5bd7e))
<a name="4.10.1"></a>
## [4.10.1](https://github.com/ionic-team/ionic-native/compare/v5.0.0-beta.14...v4.10.1) (2018-07-25)
### Bug Fixes
* **nfs:** Optional arguments for records like textRecord ([#2605](https://github.com/ionic-team/ionic-native/issues/2605)) ([b635ba9](https://github.com/ionic-team/ionic-native/commit/b635ba9))
* **user-agent:** Plugin not installed ([#2607](https://github.com/ionic-team/ionic-native/issues/2607)) ([79cb478](https://github.com/ionic-team/ionic-native/commit/79cb478))
<a name="5.0.0-beta.14"></a>
# [5.0.0-beta.14](https://github.com/ionic-team/ionic-native/compare/v4.10.0...v5.0.0-beta.14) (2018-07-18)
### Features
* **abbyy-rtr:** add ABBYY Real-Time Recognition plugin ([#2580](https://github.com/ionic-team/ionic-native/issues/2580)) ([ecc698e](https://github.com/ionic-team/ionic-native/commit/ecc698e))
* **alipay:** replace plugin ([#2591](https://github.com/ionic-team/ionic-native/issues/2591)) ([e640983](https://github.com/ionic-team/ionic-native/commit/e640983))
* **ccm:** replace plugin source ([#2601](https://github.com/ionic-team/ionic-native/issues/2601)) ([b581a5b](https://github.com/ionic-team/ionic-native/commit/b581a5b))
* **classkit:** add ClassKit plugin ([#2590](https://github.com/ionic-team/ionic-native/issues/2590)) ([a6c8045](https://github.com/ionic-team/ionic-native/commit/a6c8045))
### BREAKING CHANGES
* **alipay:** Replaced plugin with maintained Cordova plugin
<a name="4.9.2"></a>
## [4.9.2](https://github.com/ionic-team/ionic-native/compare/v4.9.1...v4.9.2) (2018-07-13)
### Bug Fixes
* **ble:** change signature for autoConnect ([#2594](https://github.com/ionic-team/ionic-native/issues/2594)) ([d95a359](https://github.com/ionic-team/ionic-native/commit/d95a359)), closes [#2573](https://github.com/ionic-team/ionic-native/issues/2573) [#2573](https://github.com/ionic-team/ionic-native/issues/2573)
* **sqlite:** mark optional arguments for executeSql ([#2592](https://github.com/ionic-team/ionic-native/issues/2592)) ([565c766](https://github.com/ionic-team/ionic-native/commit/565c766))
<a name="4.9.1"></a>
## [4.9.1](https://github.com/ionic-team/ionic-native/compare/v5.0.0-beta.13...v4.9.1) (2018-07-09)
### Bug Fixes
* **barcode-scanner:** wrong barcode format identifier PDF417 -> PDF_417 ([#2574](https://github.com/ionic-team/ionic-native/issues/2574)) ([61714ff](https://github.com/ionic-team/ionic-native/commit/61714ff))
* **health-kit:** add missing checkAuthStatus param ([#2544](https://github.com/ionic-team/ionic-native/issues/2544)) ([956e644](https://github.com/ionic-team/ionic-native/commit/956e644))
### Features
* **ble:** add missing functions ([#2572](https://github.com/ionic-team/ionic-native/issues/2572)) ([9f9a346](https://github.com/ionic-team/ionic-native/commit/9f9a346))
* **network-interface:** match latest plugin release ([#2587](https://github.com/ionic-team/ionic-native/issues/2587)) ([4f41589](https://github.com/ionic-team/ionic-native/commit/4f41589))
* **streaming-media:** add new parameters & docs ([#2576](https://github.com/ionic-team/ionic-native/issues/2576)) ([f62a123](https://github.com/ionic-team/ionic-native/commit/f62a123))
<a name="5.0.0-beta.13"></a>
# [5.0.0-beta.13](https://github.com/ionic-team/ionic-native/compare/v4.9.0...v5.0.0-beta.13) (2018-06-28)
### Bug Fixes
@@ -7,7 +182,7 @@
* **android-fingerprint-auth:** ensure ERRORS array is defined ([#2508](https://github.com/ionic-team/ionic-native/issues/2508)) ([714114d](https://github.com/ionic-team/ionic-native/commit/714114d))
* **background-geolocation:** watchLocationMode returns observable ([#2547](https://github.com/ionic-team/ionic-native/issues/2547)) ([3f8a6f2](https://github.com/ionic-team/ionic-native/commit/3f8a6f2))
* **calendar:** Fixes createCalendar parameter typing ([84e0aa1](https://github.com/ionic-team/ionic-native/commit/84e0aa1))
* **call-number:** fix isCallSupported function ([f49d2a9](https://github.com/ionic-team/ionic-native/commit/f49d2a9))
* **call-number:** fix isCallSupported function ([f49d2a9](https://github.com/ionic-team/ionic-native/commit/f49d2a9)), closes [#2428](https://github.com/ionic-team/ionic-native/issues/2428)
* **healt:** add correct return type for query function ([#2565](https://github.com/ionic-team/ionic-native/issues/2565)) ([98d44e6](https://github.com/ionic-team/ionic-native/commit/98d44e6))
* **healths:** add missing attribute on HealthQueryOptionsAggregated ([#2550](https://github.com/ionic-team/ionic-native/issues/2550)) ([be370a4](https://github.com/ionic-team/ionic-native/commit/be370a4))
* **ibeacon:** correct Type {Region} in some params ([#2453](https://github.com/ionic-team/ionic-native/issues/2453)) ([300db62](https://github.com/ionic-team/ionic-native/commit/300db62))
@@ -57,12 +232,12 @@
### Bug Fixes
* **badge:** add correct requestPermission function ([586c7e5](https://github.com/ionic-team/ionic-native/commit/586c7e5))
* **badge:** add correct requestPermission function ([586c7e5](https://github.com/ionic-team/ionic-native/commit/586c7e5)), closes [#105](https://github.com/ionic-team/ionic-native/issues/105) [#1856](https://github.com/ionic-team/ionic-native/issues/1856)
* **call-log:** comments erratum ([4b9cf17](https://github.com/ionic-team/ionic-native/commit/4b9cf17))
* **call-log:** update getCallLog signature ([61c0ecf](https://github.com/ionic-team/ionic-native/commit/61c0ecf))
* **contacts:** refactor wrong ContactFieldTypes ([f607a03](https://github.com/ionic-team/ionic-native/commit/f607a03))
* **email-composer:** add missing options ([4399600](https://github.com/ionic-team/ionic-native/commit/4399600))
* **facebook:** remove browserInit function ([f718432](https://github.com/ionic-team/ionic-native/commit/f718432))
* **email-composer:** add missing options ([4399600](https://github.com/ionic-team/ionic-native/commit/4399600)), closes [#175](https://github.com/ionic-team/ionic-native/issues/175)
* **facebook:** remove browserInit function ([f718432](https://github.com/ionic-team/ionic-native/commit/f718432)), closes [#1901](https://github.com/ionic-team/ionic-native/issues/1901)
* **firebase-analytics:** add `sync` option for all methods ([42fd1f2](https://github.com/ionic-team/ionic-native/commit/42fd1f2))
* **google-maps:** wrong decorators ([e5b9d53](https://github.com/ionic-team/ionic-native/commit/e5b9d53))
* **health-kit:** add missing properties to HealthKitOptions ([f8e79ce](https://github.com/ionic-team/ionic-native/commit/f8e79ce))
@@ -74,11 +249,11 @@
* **pro:** Tweak to pro plugin. [#2136](https://github.com/ionic-team/ionic-native/issues/2136) [#2127](https://github.com/ionic-team/ionic-native/issues/2127) ([c8ecee0](https://github.com/ionic-team/ionic-native/commit/c8ecee0))
* **Pro:** CordovaCheck should sync. [#2136](https://github.com/ionic-team/ionic-native/issues/2136) [#2127](https://github.com/ionic-team/ionic-native/issues/2127) ([f419db5](https://github.com/ionic-team/ionic-native/commit/f419db5))
* **push:** Android senderID as optional ([1b237aa](https://github.com/ionic-team/ionic-native/commit/1b237aa))
* **Radmob-pro:** add offsetTopBar option ([4948640](https://github.com/ionic-team/ionic-native/commit/4948640))
* **speech-recognition:** add missing options ([9aff5ea](https://github.com/ionic-team/ionic-native/commit/9aff5ea))
* **Radmob-pro:** add offsetTopBar option ([4948640](https://github.com/ionic-team/ionic-native/commit/4948640)), closes [#2100](https://github.com/ionic-team/ionic-native/issues/2100)
* **speech-recognition:** add missing options ([9aff5ea](https://github.com/ionic-team/ionic-native/commit/9aff5ea)), closes [#2165](https://github.com/ionic-team/ionic-native/issues/2165)
* **sqlite:** remove trailing whitespaces ([7547a94](https://github.com/ionic-team/ionic-native/commit/7547a94))
* **uuid:** add correct plugin source ([a81a4d3](https://github.com/ionic-team/ionic-native/commit/a81a4d3))
* **web-intent:** allow extras ([8dc5ad2](https://github.com/ionic-team/ionic-native/commit/8dc5ad2))
* **uuid:** add correct plugin source ([a81a4d3](https://github.com/ionic-team/ionic-native/commit/a81a4d3)), closes [#2324](https://github.com/ionic-team/ionic-native/issues/2324)
* **web-intent:** allow extras ([8dc5ad2](https://github.com/ionic-team/ionic-native/commit/8dc5ad2)), closes [#1959](https://github.com/ionic-team/ionic-native/issues/1959)
* **web-intent:** rename `onNewIntent` to `onIntent` ([dbcb103](https://github.com/ionic-team/ionic-native/commit/dbcb103))
@@ -86,18 +261,18 @@
* **app-rate:** add custom locale interface ([2a18dbc](https://github.com/ionic-team/ionic-native/commit/2a18dbc))
* **app-update:** add app update options ([0f325ed](https://github.com/ionic-team/ionic-native/commit/0f325ed))
* **appodeal:** add new functions ([247a1a1](https://github.com/ionic-team/ionic-native/commit/247a1a1))
* **appodeal:** add new functions ([247a1a1](https://github.com/ionic-team/ionic-native/commit/247a1a1)), closes [#2065](https://github.com/ionic-team/ionic-native/issues/2065)
* **base64-to-gallery:** add options interface ([11d516f](https://github.com/ionic-team/ionic-native/commit/11d516f))
* **ble:** add scan options interface ([e345fed](https://github.com/ionic-team/ionic-native/commit/e345fed))
* **calendar:** add getCreateCalendarOptions function ([13765d2](https://github.com/ionic-team/ionic-native/commit/13765d2))
* **call-log:** add operator 'like' and array of values ([84cecf7](https://github.com/ionic-team/ionic-native/commit/84cecf7))
* **call-log:** add plugin ([76a644d](https://github.com/ionic-team/ionic-native/commit/76a644d))
* **camera-preview:** add onBackButton function ([a345e2c](https://github.com/ionic-team/ionic-native/commit/a345e2c))
* **camera-preview:** add onBackButton function ([a345e2c](https://github.com/ionic-team/ionic-native/commit/a345e2c)), closes [#1967](https://github.com/ionic-team/ionic-native/issues/1967)
* **camera-preview:** disable exif stripping conf ([e231bf8](https://github.com/ionic-team/ionic-native/commit/e231bf8))
* **device-accounts:** add android account interface ([d2261b6](https://github.com/ionic-team/ionic-native/commit/d2261b6))
* **device-feedback:** add feedback interface ([7cafebd](https://github.com/ionic-team/ionic-native/commit/7cafebd))
* **google-analytics:** add missing functions ([ff0008e](https://github.com/ionic-team/ionic-native/commit/ff0008e))
* **google-maps:** update to match latest plugin version ([#2320](https://github.com/ionic-team/ionic-native/issues/2320)) ([f11be24](https://github.com/ionic-team/ionic-native/commit/f11be24))
* **google-maps:** update to match latest plugin version ([#2320](https://github.com/ionic-team/ionic-native/issues/2320)) ([f11be24](https://github.com/ionic-team/ionic-native/commit/f11be24)), closes [/github.com/ionic-team/ionic-native/pull/1815#issuecomment-318909795](https://github.com//github.com/ionic-team/ionic-native/pull/1815/issues/issuecomment-318909795) [#2087](https://github.com/ionic-team/ionic-native/issues/2087) [/stackoverflow.com/questions/47083289/ionic-native-google-maps-plugin-set-app-background-color/47165721#47165721](https://github.com//stackoverflow.com/questions/47083289/ionic-native-google-maps-plugin-set-app-background-color/47165721/issues/47165721) [#2254](https://github.com/ionic-team/ionic-native/issues/2254) [#2199](https://github.com/ionic-team/ionic-native/issues/2199)
* **hot code push:** add cordova-hot-code-push ([e7968da](https://github.com/ionic-team/ionic-native/commit/e7968da))
* **hot code push:** add update events ([04bdade](https://github.com/ionic-team/ionic-native/commit/04bdade))
* **http:** add support for new methods ([#2249](https://github.com/ionic-team/ionic-native/issues/2249)) ([4497e00](https://github.com/ionic-team/ionic-native/commit/4497e00))
@@ -115,9 +290,9 @@
* **plugin:** add Microsoft App Center Push plugin ([cdabebd](https://github.com/ionic-team/ionic-native/commit/cdabebd))
* **plugin:** add OpenALPR plugin ([e27fbf4](https://github.com/ionic-team/ionic-native/commit/e27fbf4))
* **plugin:** add Uptime plugin ([6be3832](https://github.com/ionic-team/ionic-native/commit/6be3832))
* **social-sharing:** add missing function ([4cb28c4](https://github.com/ionic-team/ionic-native/commit/4cb28c4))
* **social-sharing:** add missing function ([4cb28c4](https://github.com/ionic-team/ionic-native/commit/4cb28c4)), closes [#2209](https://github.com/ionic-team/ionic-native/issues/2209)
* **speechkit:** plugin implementation ([41e5a0f](https://github.com/ionic-team/ionic-native/commit/41e5a0f))
* **sqlite:** add selfTest function ([241f073](https://github.com/ionic-team/ionic-native/commit/241f073))
* **sqlite:** add selfTest function ([241f073](https://github.com/ionic-team/ionic-native/commit/241f073)), closes [#963](https://github.com/ionic-team/ionic-native/issues/963)
* **uptime:** add iOS support ([e6f6158](https://github.com/ionic-team/ionic-native/commit/e6f6158))
* **web-intent:** add startService function ([15bb350](https://github.com/ionic-team/ionic-native/commit/15bb350))
@@ -204,8 +379,8 @@
### Features
* **google-maps:** accept own properties for `addMarker()` and others ([#2093](https://github.com/ionic-team/ionic-native/issues/2093)) ([196be02](https://github.com/ionic-team/ionic-native/commit/196be02))
* **http:** add support for new methods ([#2054](https://github.com/ionic-team/ionic-native/issues/2054)) ([d96d3ee](https://github.com/ionic-team/ionic-native/commit/d96d3ee))
* **google-maps:** accept own properties for `addMarker()` and others ([#2093](https://github.com/ionic-team/ionic-native/issues/2093)) ([196be02](https://github.com/ionic-team/ionic-native/commit/196be02)), closes [/github.com/ionic-team/ionic-native/pull/1815#issuecomment-318909795](https://github.com//github.com/ionic-team/ionic-native/pull/1815/issues/issuecomment-318909795) [#2087](https://github.com/ionic-team/ionic-native/issues/2087) [/stackoverflow.com/questions/47083289/ionic-native-google-maps-plugin-set-app-background-color/47165721#47165721](https://github.com//stackoverflow.com/questions/47083289/ionic-native-google-maps-plugin-set-app-background-color/47165721/issues/47165721)
* **http:** add support for new methods ([#2054](https://github.com/ionic-team/ionic-native/issues/2054)) ([d96d3ee](https://github.com/ionic-team/ionic-native/commit/d96d3ee)), closes [#2052](https://github.com/ionic-team/ionic-native/issues/2052) [#2022](https://github.com/ionic-team/ionic-native/issues/2022) [#2053](https://github.com/ionic-team/ionic-native/issues/2053)
@@ -215,7 +390,7 @@
### Bug Fixes
* **google-maps:** HtmlInfoWindow should extend BaseClass [#2034](https://github.com/ionic-team/ionic-native/issues/2034) ([#2035](https://github.com/ionic-team/ionic-native/issues/2035)) ([ce6e412](https://github.com/ionic-team/ionic-native/commit/ce6e412))
* **google-maps:** HtmlInfoWindow should extend BaseClass [#2034](https://github.com/ionic-team/ionic-native/issues/2034) ([#2035](https://github.com/ionic-team/ionic-native/issues/2035)) ([ce6e412](https://github.com/ionic-team/ionic-native/commit/ce6e412)), closes [/github.com/ionic-team/ionic-native/pull/1815#issuecomment-318909795](https://github.com//github.com/ionic-team/ionic-native/pull/1815/issues/issuecomment-318909795)
@@ -241,7 +416,7 @@
### Bug Fixes
* **BLE:** make readRSSI() not static ([#2011](https://github.com/ionic-team/ionic-native/issues/2011)) ([363b41e](https://github.com/ionic-team/ionic-native/commit/363b41e))
* **google-maps:** various fixed introduced in previous release ([#2024](https://github.com/ionic-team/ionic-native/issues/2024)) ([6ca5bea](https://github.com/ionic-team/ionic-native/commit/6ca5bea))
* **google-maps:** various fixed introduced in previous release ([#2024](https://github.com/ionic-team/ionic-native/issues/2024)) ([6ca5bea](https://github.com/ionic-team/ionic-native/commit/6ca5bea)), closes [/github.com/ionic-team/ionic-native/pull/1815#issuecomment-318909795](https://github.com//github.com/ionic-team/ionic-native/pull/1815/issues/issuecomment-318909795)
* **onesignal:** fix property name ([#2019](https://github.com/ionic-team/ionic-native/issues/2019)) ([30ed33a](https://github.com/ionic-team/ionic-native/commit/30ed33a))
@@ -258,10 +433,10 @@
### Bug Fixes
* **google-maps:** convert JS classes to Ionic Native ([#1956](https://github.com/ionic-team/ionic-native/issues/1956)) ([57af5c5](https://github.com/ionic-team/ionic-native/commit/57af5c5))
* **google-maps:** fix icons property of MarkerClusterOptions ([#1937](https://github.com/ionic-team/ionic-native/issues/1937)) ([8004790](https://github.com/ionic-team/ionic-native/commit/8004790))
* **google-maps:** fix issue when creating new instance of BaseArrayClass ([#1931](https://github.com/ionic-team/ionic-native/issues/1931)) ([957396b](https://github.com/ionic-team/ionic-native/commit/957396b))
* **google-maps:** the zoom option is missing in the GoogleMapOptions class ([#1948](https://github.com/ionic-team/ionic-native/issues/1948)) ([ef898ef](https://github.com/ionic-team/ionic-native/commit/ef898ef))
* **google-maps:** convert JS classes to Ionic Native ([#1956](https://github.com/ionic-team/ionic-native/issues/1956)) ([57af5c5](https://github.com/ionic-team/ionic-native/commit/57af5c5)), closes [/github.com/ionic-team/ionic-native/pull/1815#issuecomment-318909795](https://github.com//github.com/ionic-team/ionic-native/pull/1815/issues/issuecomment-318909795)
* **google-maps:** fix icons property of MarkerClusterOptions ([#1937](https://github.com/ionic-team/ionic-native/issues/1937)) ([8004790](https://github.com/ionic-team/ionic-native/commit/8004790)), closes [/github.com/ionic-team/ionic-native/pull/1815#issuecomment-318909795](https://github.com//github.com/ionic-team/ionic-native/pull/1815/issues/issuecomment-318909795)
* **google-maps:** fix issue when creating new instance of BaseArrayClass ([#1931](https://github.com/ionic-team/ionic-native/issues/1931)) ([957396b](https://github.com/ionic-team/ionic-native/commit/957396b)), closes [/github.com/ionic-team/ionic-native/pull/1815#issuecomment-318909795](https://github.com//github.com/ionic-team/ionic-native/pull/1815/issues/issuecomment-318909795)
* **google-maps:** the zoom option is missing in the GoogleMapOptions class ([#1948](https://github.com/ionic-team/ionic-native/issues/1948)) ([ef898ef](https://github.com/ionic-team/ionic-native/commit/ef898ef)), closes [/github.com/ionic-team/ionic-native/pull/1815#issuecomment-318909795](https://github.com//github.com/ionic-team/ionic-native/pull/1815/issues/issuecomment-318909795)
* **http:** fix plugin ref ([#1934](https://github.com/ionic-team/ionic-native/issues/1934)) ([3a1034e](https://github.com/ionic-team/ionic-native/commit/3a1034e))
* **launch-navigator:** fix navigate method ([#1940](https://github.com/ionic-team/ionic-native/issues/1940)) ([a150d4d](https://github.com/ionic-team/ionic-native/commit/a150d4d))
* **stripe:** fix stripe create card token ([#2002](https://github.com/ionic-team/ionic-native/issues/2002)) ([5b15bb9](https://github.com/ionic-team/ionic-native/commit/5b15bb9))
@@ -303,7 +478,7 @@
### Features
* **google-maps:** update plugin and fix a few issues ([#1834](https://github.com/ionic-team/ionic-native/issues/1834)) ([c11aec3](https://github.com/ionic-team/ionic-native/commit/c11aec3))
* **google-maps:** update plugin and fix a few issues ([#1834](https://github.com/ionic-team/ionic-native/issues/1834)) ([c11aec3](https://github.com/ionic-team/ionic-native/commit/c11aec3)), closes [/github.com/ionic-team/ionic-native/pull/1815#issuecomment-318909795](https://github.com//github.com/ionic-team/ionic-native/pull/1815/issues/issuecomment-318909795)
* **http:** use a different plugin source with better features ([#1921](https://github.com/ionic-team/ionic-native/issues/1921)) ([a2d3396](https://github.com/ionic-team/ionic-native/commit/a2d3396))
* **keychain-touch-id:** add KeychainTouchId plugin ([#1837](https://github.com/ionic-team/ionic-native/issues/1837)) ([a2cc187](https://github.com/ionic-team/ionic-native/commit/a2cc187))
* **local-notifications:** add `un` method to unsubscribe from events ([#1871](https://github.com/ionic-team/ionic-native/issues/1871)) ([ce5966b](https://github.com/ionic-team/ionic-native/commit/ce5966b))
@@ -397,7 +572,7 @@ renamed to `FileTransfer`. Also, `TransferObject` class has been renamed to `Fil
### Features
* **in-app-purchase2:** add a second InAppPurchase plugin ([#1775](https://github.com/ionic-team/ionic-native/issues/1775)) ([398d0ee](https://github.com/ionic-team/ionic-native/commit/398d0ee)), closes [#1705](https://github.com/ionic-team/ionic-native/issues/1705)
* **in-app-purchase2:** add a second InAppPurchase plugin ([#1775](https://github.com/ionic-team/ionic-native/issues/1775)) ([398d0ee](https://github.com/ionic-team/ionic-native/commit/398d0ee)), closes [#1705](https://github.com/ionic-team/ionic-native/issues/1705) [#1709](https://github.com/ionic-team/ionic-native/issues/1709) [#1713](https://github.com/ionic-team/ionic-native/issues/1713)
@@ -628,7 +803,7 @@ renamed to `FileTransfer`. Also, `TransferObject` class has been renamed to `Fil
* **app-minimize:** add AppMinimize plugin ([#1501](https://github.com/ionic-team/ionic-native/issues/1501)) ([d25b2f1](https://github.com/ionic-team/ionic-native/commit/d25b2f1))
* **camera-preview:** add new focus methods & getFlashMode() ([#1442](https://github.com/ionic-team/ionic-native/issues/1442)) ([748c6bd](https://github.com/ionic-team/ionic-native/commit/748c6bd))
* **camera-preview:** add tapToFocus method ([#1494](https://github.com/ionic-team/ionic-native/issues/1494)) ([8330c92](https://github.com/ionic-team/ionic-native/commit/8330c92))
* **diagnostic:** update to support latest signatures ([#1458](https://github.com/ionic-team/ionic-native/issues/1458)) ([a4151ab](https://github.com/ionic-team/ionic-native/commit/a4151ab))
* **diagnostic:** update to support latest signatures ([#1458](https://github.com/ionic-team/ionic-native/issues/1458)) ([a4151ab](https://github.com/ionic-team/ionic-native/commit/a4151ab)), closes [/github.com/driftyco/ionic-native/pull/1458#issuecomment-299030833](https://github.com//github.com/driftyco/ionic-native/pull/1458/issues/issuecomment-299030833)
* **facebook:** add EVENTS constant ([#1510](https://github.com/ionic-team/ionic-native/issues/1510)) ([aa9826f](https://github.com/ionic-team/ionic-native/commit/aa9826f))
* **fcm:** support Firebase Cloud Messaging plugin ([#1449](https://github.com/ionic-team/ionic-native/issues/1449)) ([6cc6393](https://github.com/ionic-team/ionic-native/commit/6cc6393))
* **firebase:** add support for firebase ErrorLog ([#1440](https://github.com/ionic-team/ionic-native/issues/1440)) ([11dbe42](https://github.com/ionic-team/ionic-native/commit/11dbe42))
@@ -637,7 +812,7 @@ renamed to `FileTransfer`. Also, `TransferObject` class has been renamed to `Fil
* **mobile-accessibility:** add Mobile Accessibility plugin ([#1505](https://github.com/ionic-team/ionic-native/issues/1505)) ([4e9b2d9](https://github.com/ionic-team/ionic-native/commit/4e9b2d9)), closes [#1304](https://github.com/ionic-team/ionic-native/issues/1304)
* **native-page-transitions:** add pendingTransition methods ([#1344](https://github.com/ionic-team/ionic-native/issues/1344)) ([f699c6d](https://github.com/ionic-team/ionic-native/commit/f699c6d))
* **native-ringtones:** add Native Ringtones plugin ([#1488](https://github.com/ionic-team/ionic-native/issues/1488)) ([21c9cd2](https://github.com/ionic-team/ionic-native/commit/21c9cd2))
* **phonegap-local-notifications:** add Phonegap local notifications plugin ([#1474](https://github.com/ionic-team/ionic-native/issues/1474)) ([3d747d3](https://github.com/ionic-team/ionic-native/commit/3d747d3))
* **phonegap-local-notifications:** add Phonegap local notifications plugin ([#1474](https://github.com/ionic-team/ionic-native/issues/1474)) ([3d747d3](https://github.com/ionic-team/ionic-native/commit/3d747d3)), closes [#1](https://github.com/ionic-team/ionic-native/issues/1) [#3](https://github.com/ionic-team/ionic-native/issues/3) [#4](https://github.com/ionic-team/ionic-native/issues/4)
* **plugin:** add Document Viewer plugin ([#1520](https://github.com/ionic-team/ionic-native/issues/1520)) ([6855fe8](https://github.com/ionic-team/ionic-native/commit/6855fe8))
* **plugin:** add File encryption plugin ([#1509](https://github.com/ionic-team/ionic-native/issues/1509)) ([46b4e25](https://github.com/ionic-team/ionic-native/commit/46b4e25)), closes [#618](https://github.com/ionic-team/ionic-native/issues/618)
* **safari-view-controller:** add missing options ([#1490](https://github.com/ionic-team/ionic-native/issues/1490)) ([a5b2e98](https://github.com/ionic-team/ionic-native/commit/a5b2e98)), closes [#1489](https://github.com/ionic-team/ionic-native/issues/1489)
@@ -687,7 +862,7 @@ renamed to `FileTransfer`. Also, `TransferObject` class has been renamed to `Fil
### Bug Fixes
* **push:** hasPermission is part of Push object ([145577f](https://github.com/ionic-team/ionic-native/commit/145577f))
* **push:** hasPermission is part of Push object ([145577f](https://github.com/ionic-team/ionic-native/commit/145577f)), closes [#1297](https://github.com/ionic-team/ionic-native/issues/1297)
@@ -734,7 +909,7 @@ renamed to `FileTransfer`. Also, `TransferObject` class has been renamed to `Fil
* **admob-free:** add AdMobFree plugin ([#1272](https://github.com/ionic-team/ionic-native/issues/1272)) ([0ef4a73](https://github.com/ionic-team/ionic-native/commit/0ef4a73)), closes [#1170](https://github.com/ionic-team/ionic-native/issues/1170)
* **sqlite-porter:** add SQLite porter plugin ([#1273](https://github.com/ionic-team/ionic-native/issues/1273)) ([f911366](https://github.com/ionic-team/ionic-native/commit/f911366)), closes [#485](https://github.com/ionic-team/ionic-native/issues/485)
* **taptic-engine:** add taptic engine plugin support ([#1271](https://github.com/ionic-team/ionic-native/issues/1271)) ([ffa37e2](https://github.com/ionic-team/ionic-native/commit/ffa37e2))
* **taptic-engine:** add taptic engine plugin support ([#1271](https://github.com/ionic-team/ionic-native/issues/1271)) ([ffa37e2](https://github.com/ionic-team/ionic-native/commit/ffa37e2)), closes [#571](https://github.com/ionic-team/ionic-native/issues/571)
* **zeroconf:** add cordova-plugin-zeroconf support ([#1260](https://github.com/ionic-team/ionic-native/issues/1260)) ([68d9946](https://github.com/ionic-team/ionic-native/commit/68d9946))
@@ -807,7 +982,7 @@ renamed to `FileTransfer`. Also, `TransferObject` class has been renamed to `Fil
### Features
* **jins-meme:** add support for jins meme smart glasses ([#1212](https://github.com/ionic-team/ionic-native/issues/1212)) ([9c88cfb](https://github.com/ionic-team/ionic-native/commit/9c88cfb))
* **jins-meme:** add support for jins meme smart glasses ([#1212](https://github.com/ionic-team/ionic-native/issues/1212)) ([9c88cfb](https://github.com/ionic-team/ionic-native/commit/9c88cfb)), closes [#3](https://github.com/ionic-team/ionic-native/issues/3) [/github.com/driftyco/ionic-native/pull/1212#pullrequestreview-28298382](https://github.com//github.com/driftyco/ionic-native/pull/1212/issues/pullrequestreview-28298382)
@@ -833,7 +1008,7 @@ renamed to `FileTransfer`. Also, `TransferObject` class has been renamed to `Fil
### Chores
* merge v3-injectable into master ([#1203](https://github.com/ionic-team/ionic-native/issues/1203)) ([2f2d55f](https://github.com/ionic-team/ionic-native/commit/2f2d55f)), closes [#250](https://github.com/ionic-team/ionic-native/issues/250) [#861](https://github.com/ionic-team/ionic-native/issues/861) [#1145](https://github.com/ionic-team/ionic-native/issues/1145) [#1096](https://github.com/ionic-team/ionic-native/issues/1096) [#1088](https://github.com/ionic-team/ionic-native/issues/1088) [#1110](https://github.com/ionic-team/ionic-native/issues/1110) [#1129](https://github.com/ionic-team/ionic-native/issues/1129) [#1125](https://github.com/ionic-team/ionic-native/issues/1125) [#1115](https://github.com/ionic-team/ionic-native/issues/1115) [#1118](https://github.com/ionic-team/ionic-native/issues/1118) [#1093](https://github.com/ionic-team/ionic-native/issues/1093) [#1001](https://github.com/ionic-team/ionic-native/issues/1001) [#1043](https://github.com/ionic-team/ionic-native/issues/1043) [#1044](https://github.com/ionic-team/ionic-native/issues/1044) [#1045](https://github.com/ionic-team/ionic-native/issues/1045) [#1078](https://github.com/ionic-team/ionic-native/issues/1078) [#1132](https://github.com/ionic-team/ionic-native/issues/1132) [#1138](https://github.com/ionic-team/ionic-native/issues/1138) [#1139](https://github.com/ionic-team/ionic-native/issues/1139) [#1142](https://github.com/ionic-team/ionic-native/issues/1142)
* merge v3-injectable into master ([#1203](https://github.com/ionic-team/ionic-native/issues/1203)) ([2f2d55f](https://github.com/ionic-team/ionic-native/commit/2f2d55f)), closes [#250](https://github.com/ionic-team/ionic-native/issues/250) [#861](https://github.com/ionic-team/ionic-native/issues/861) [#1059](https://github.com/ionic-team/ionic-native/issues/1059) [#1145](https://github.com/ionic-team/ionic-native/issues/1145) [#1146](https://github.com/ionic-team/ionic-native/issues/1146) [#1049](https://github.com/ionic-team/ionic-native/issues/1049) [#1072](https://github.com/ionic-team/ionic-native/issues/1072) [#1071](https://github.com/ionic-team/ionic-native/issues/1071) [#1076](https://github.com/ionic-team/ionic-native/issues/1076) [#1065](https://github.com/ionic-team/ionic-native/issues/1065) [#1089](https://github.com/ionic-team/ionic-native/issues/1089) [#1087](https://github.com/ionic-team/ionic-native/issues/1087) [#1096](https://github.com/ionic-team/ionic-native/issues/1096) [#1098](https://github.com/ionic-team/ionic-native/issues/1098) [#1088](https://github.com/ionic-team/ionic-native/issues/1088) [#1099](https://github.com/ionic-team/ionic-native/issues/1099) [#1101](https://github.com/ionic-team/ionic-native/issues/1101) [#1103](https://github.com/ionic-team/ionic-native/issues/1103) [#1106](https://github.com/ionic-team/ionic-native/issues/1106) [#1107](https://github.com/ionic-team/ionic-native/issues/1107) [#1108](https://github.com/ionic-team/ionic-native/issues/1108) [#1109](https://github.com/ionic-team/ionic-native/issues/1109) [#1110](https://github.com/ionic-team/ionic-native/issues/1110) [#1122](https://github.com/ionic-team/ionic-native/issues/1122) [#1129](https://github.com/ionic-team/ionic-native/issues/1129) [#1125](https://github.com/ionic-team/ionic-native/issues/1125) [#1128](https://github.com/ionic-team/ionic-native/issues/1128) [#1126](https://github.com/ionic-team/ionic-native/issues/1126) [#1115](https://github.com/ionic-team/ionic-native/issues/1115) [#1077](https://github.com/ionic-team/ionic-native/issues/1077) [#1118](https://github.com/ionic-team/ionic-native/issues/1118) [#1093](https://github.com/ionic-team/ionic-native/issues/1093) [#1116](https://github.com/ionic-team/ionic-native/issues/1116) [#1001](https://github.com/ionic-team/ionic-native/issues/1001) [#1105](https://github.com/ionic-team/ionic-native/issues/1105) [#1097](https://github.com/ionic-team/ionic-native/issues/1097) [#1095](https://github.com/ionic-team/ionic-native/issues/1095) [#1086](https://github.com/ionic-team/ionic-native/issues/1086) [#1082](https://github.com/ionic-team/ionic-native/issues/1082) [#1079](https://github.com/ionic-team/ionic-native/issues/1079) [#1064](https://github.com/ionic-team/ionic-native/issues/1064) [#1063](https://github.com/ionic-team/ionic-native/issues/1063) [#1031](https://github.com/ionic-team/ionic-native/issues/1031) [#1025](https://github.com/ionic-team/ionic-native/issues/1025) [#990](https://github.com/ionic-team/ionic-native/issues/990) [#1013](https://github.com/ionic-team/ionic-native/issues/1013) [#990](https://github.com/ionic-team/ionic-native/issues/990) [#1004](https://github.com/ionic-team/ionic-native/issues/1004) [#1130](https://github.com/ionic-team/ionic-native/issues/1130) [#1043](https://github.com/ionic-team/ionic-native/issues/1043) [#1044](https://github.com/ionic-team/ionic-native/issues/1044) [#1045](https://github.com/ionic-team/ionic-native/issues/1045) [#1078](https://github.com/ionic-team/ionic-native/issues/1078) [#1084](https://github.com/ionic-team/ionic-native/issues/1084) [#1102](https://github.com/ionic-team/ionic-native/issues/1102) [#1132](https://github.com/ionic-team/ionic-native/issues/1132) [#1039](https://github.com/ionic-team/ionic-native/issues/1039) [#1138](https://github.com/ionic-team/ionic-native/issues/1138) [#1139](https://github.com/ionic-team/ionic-native/issues/1139) [#1142](https://github.com/ionic-team/ionic-native/issues/1142) [#1171](https://github.com/ionic-team/ionic-native/issues/1171) [#1193](https://github.com/ionic-team/ionic-native/issues/1193)
### Features
@@ -885,24 +1060,6 @@ renamed to `FileTransfer`. Also, `TransferObject` class has been renamed to `Fil
* feat(action-sheet): add ANDROID_THEMES constant
* refactor(): general cleanup (#1193)
* feat(screen-orientation): update wrapper to match v2 of the plugin
The whole implementation has changed now. You must update your code.
* feat(stripe): add new methods
* feat(linkedin): add LinkedIn plugin
* 3.1.0-rc.6
* style(screen-orientation): double quote to single
* tslint
* refactor(pedometer): rename file to index
<a name="2.9.0"></a>
@@ -1001,7 +1158,7 @@ The whole implementation has changed now. You must update your code.
* **app-update:** add cordova-plugin-app-update support ([#1105](https://github.com/ionic-team/ionic-native/issues/1105)) ([21d4088](https://github.com/ionic-team/ionic-native/commit/21d4088))
* **appodeal:** adds Appodeal SDK wrappers for iOS and Android ([#1031](https://github.com/ionic-team/ionic-native/issues/1031)) ([fd8107b](https://github.com/ionic-team/ionic-native/commit/fd8107b))
* **background-fetch:** Adding Background Fetch requested in [#990](https://github.com/ionic-team/ionic-native/issues/990) ([#1013](https://github.com/ionic-team/ionic-native/issues/1013)) ([57e2691](https://github.com/ionic-team/ionic-native/commit/57e2691))
* **browser-tab:** add browser tab plugin ([#1126](https://github.com/ionic-team/ionic-native/issues/1126)) ([8de3793](https://github.com/ionic-team/ionic-native/commit/8de3793)), closes [#1115](https://github.com/ionic-team/ionic-native/issues/1115)
* **browser-tab:** add browser tab plugin ([#1126](https://github.com/ionic-team/ionic-native/issues/1126)) ([8de3793](https://github.com/ionic-team/ionic-native/commit/8de3793)), closes [#1115](https://github.com/ionic-team/ionic-native/issues/1115) [#1077](https://github.com/ionic-team/ionic-native/issues/1077)
* **couchbase-lite:** add CouchbaseLite cordova plugin ([#1025](https://github.com/ionic-team/ionic-native/issues/1025)) ([09a7dcf](https://github.com/ionic-team/ionic-native/commit/09a7dcf))
* **file:** add system paths ([f0e2195](https://github.com/ionic-team/ionic-native/commit/f0e2195))
* **google-maps:** add constant for map type ([318ad3f](https://github.com/ionic-team/ionic-native/commit/318ad3f))
@@ -1232,7 +1389,7 @@ The whole implementation has changed now. You must update your code.
* **actionsheet:** add ActionSheetOptions interface ([f211da7](https://github.com/ionic-team/ionic-native/commit/f211da7))
* **googlemap:** add disableAutoPan to GoogleMapsMarkerOptions ([cf75a53](https://github.com/ionic-team/ionic-native/commit/cf75a53)), closes [#844](https://github.com/ionic-team/ionic-native/issues/844)
* **googlemaps:** add markerClick and infoClick to MarkerOptions ([6f7171d](https://github.com/ionic-team/ionic-native/commit/6f7171d))
* **googlemaps:** add markerClick and infoClick to MarkerOptions ([6f7171d](https://github.com/ionic-team/ionic-native/commit/6f7171d)), closes [#844](https://github.com/ionic-team/ionic-native/issues/844)
@@ -1355,7 +1512,7 @@ The whole implementation has changed now. You must update your code.
### Bug Fixes
* **diagnostic:** misspelled getContactsAuthorizationStatus method ([#678](https://github.com/ionic-team/ionic-native/issues/678)) ([bff4862](https://github.com/ionic-team/ionic-native/commit/bff4862))
* **file:** fix writeFile method ([842a80d](https://github.com/ionic-team/ionic-native/commit/842a80d))
* **file:** fix writeFile method ([842a80d](https://github.com/ionic-team/ionic-native/commit/842a80d)), closes [#464](https://github.com/ionic-team/ionic-native/issues/464) [#552](https://github.com/ionic-team/ionic-native/issues/552) [#666](https://github.com/ionic-team/ionic-native/issues/666)
* **file:** last parameter for writeFile now only accepts options ([5710eb7](https://github.com/ionic-team/ionic-native/commit/5710eb7))
* **http:** export via window.IonicNative ([#675](https://github.com/ionic-team/ionic-native/issues/675)) ([cf7abe1](https://github.com/ionic-team/ionic-native/commit/cf7abe1))
* **location-accuracy:** accuracy param is number ([c2d4f1c](https://github.com/ionic-team/ionic-native/commit/c2d4f1c)), closes [#676](https://github.com/ionic-team/ionic-native/issues/676)
@@ -1571,7 +1728,7 @@ The whole implementation has changed now. You must update your code.
* **market:** add Market plugin support ([#490](https://github.com/ionic-team/ionic-native/issues/490)) ([9bcc4ed](https://github.com/ionic-team/ionic-native/commit/9bcc4ed))
* **mixpanel:** add mixpanel support ([#492](https://github.com/ionic-team/ionic-native/issues/492)) ([cf8e342](https://github.com/ionic-team/ionic-native/commit/cf8e342))
* **native-page-transitions:** add support for Native Page Transitions plugin ([#488](https://github.com/ionic-team/ionic-native/issues/488)) ([00d87db](https://github.com/ionic-team/ionic-native/commit/00d87db))
* **nfc:** add nfc support ([#493](https://github.com/ionic-team/ionic-native/issues/493)) ([76aa8a6](https://github.com/ionic-team/ionic-native/commit/76aa8a6))
* **nfc:** add nfc support ([#493](https://github.com/ionic-team/ionic-native/issues/493)) ([76aa8a6](https://github.com/ionic-team/ionic-native/commit/76aa8a6)), closes [#412](https://github.com/ionic-team/ionic-native/issues/412)
* **paypal:** add PayPal support ([#491](https://github.com/ionic-team/ionic-native/issues/491)) ([9fe5c19](https://github.com/ionic-team/ionic-native/commit/9fe5c19))
* **power-management:** add power management support ([#489](https://github.com/ionic-team/ionic-native/issues/489)) ([cd82a53](https://github.com/ionic-team/ionic-native/commit/cd82a53))
* **streaming-media:** add streaming media support ([#486](https://github.com/ionic-team/ionic-native/issues/486)) ([841b242](https://github.com/ionic-team/ionic-native/commit/841b242))
@@ -1592,7 +1749,7 @@ The whole implementation has changed now. You must update your code.
### Features
* **code-push:** add wrapper for cordova-plugin-code-push ([#420](https://github.com/ionic-team/ionic-native/issues/420)) ([905f988](https://github.com/ionic-team/ionic-native/commit/905f988))
* **diagnostic:** add full plugin functionality ([#424](https://github.com/ionic-team/ionic-native/issues/424)) ([47a9b34](https://github.com/ionic-team/ionic-native/commit/47a9b34)), closes [#224](https://github.com/ionic-team/ionic-native/issues/224)
* **diagnostic:** add full plugin functionality ([#424](https://github.com/ionic-team/ionic-native/issues/424)) ([47a9b34](https://github.com/ionic-team/ionic-native/commit/47a9b34)), closes [#224](https://github.com/ionic-team/ionic-native/issues/224) [#476](https://github.com/ionic-team/ionic-native/issues/476)
* **geofence:** Adds geofence plugin ([#442](https://github.com/ionic-team/ionic-native/issues/442)) ([a438967](https://github.com/ionic-team/ionic-native/commit/a438967))
* **inAppPurchase:** add inAppPurhcase plugin ([#423](https://github.com/ionic-team/ionic-native/issues/423)) ([8526e89](https://github.com/ionic-team/ionic-native/commit/8526e89))
* **IsDebug:** add the IsDebug plugin ([#475](https://github.com/ionic-team/ionic-native/issues/475)) ([dd39ba8](https://github.com/ionic-team/ionic-native/commit/dd39ba8))
@@ -1689,7 +1846,7 @@ The whole implementation has changed now. You must update your code.
* **inappbrowser:** implement instance based wrapper ([#305](https://github.com/ionic-team/ionic-native/issues/305)) ([4b8ab4a](https://github.com/ionic-team/ionic-native/commit/4b8ab4a))
* **keyboard:** enable hideKeyboardAccessoryBar function ([#398](https://github.com/ionic-team/ionic-native/issues/398)) ([7a84262](https://github.com/ionic-team/ionic-native/commit/7a84262)), closes [#394](https://github.com/ionic-team/ionic-native/issues/394)
* **photo-viewer:** add wrapper for plugin ([#359](https://github.com/ionic-team/ionic-native/issues/359)) ([154c029](https://github.com/ionic-team/ionic-native/commit/154c029))
* **video-player:** Added video player plugin ([#391](https://github.com/ionic-team/ionic-native/issues/391)) ([cabeeb8](https://github.com/ionic-team/ionic-native/commit/cabeeb8)), closes [#342](https://github.com/ionic-team/ionic-native/issues/342)
* **video-player:** Added video player plugin ([#391](https://github.com/ionic-team/ionic-native/issues/391)) ([cabeeb8](https://github.com/ionic-team/ionic-native/commit/cabeeb8)), closes [#342](https://github.com/ionic-team/ionic-native/issues/342) [#318](https://github.com/ionic-team/ionic-native/issues/318)
+23 -36
View File
@@ -1,6 +1,5 @@
[![Circle CI](https://circleci.com/gh/ionic-team/ionic-native.svg?style=shield)](https://circleci.com/gh/ionic-team/ionic-native) [![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/) ![](https://img.shields.io/npm/v/@ionic-native/core.svg)
# Ionic Native
Ionic Native is a curated set of wrappers for Cordova plugins that make adding any native functionality you need to your [Ionic](https://ionicframework.com/) mobile app easy.
@@ -10,8 +9,9 @@ Ionic Native wraps plugin callbacks in a Promise or Observable, providing a comm
## Installation
Run following command to install Ionic Native in your project.
```bash
npm install @ionic-native/core --save
npm install @ionic-native/core
```
You also need to install the Ionic Native package for each plugin you want to add. Please see the [Ionic Native documentation](https://ionicframework.com/docs/native/) for complete instructions on how to add and use the plugins.
@@ -47,17 +47,15 @@ export class AppModule { }
import { Geolocation } from '@ionic-native/geolocation';
import { Platform } from 'ionic-angular';
import { NgZone } from '@angular/core';
@Component({ ... })
export class MyComponent {
constructor(private geolocation: Geolocation, private platform: Platform) {
platform.ready().then(() => {
this.platform.ready().then(() => {
// get position
geolocation.getCurrentPosition().then(pos => {
this.geolocation.getCurrentPosition().then(pos => {
console.log(`lat: ${pos.coords.latitude}, lon: ${pos.coords.longitude}`)
});
@@ -65,15 +63,14 @@ export class MyComponent {
// watch position
const watch = geolocation.watchPosition().subscribe(pos => {
console.log(`lat: ${pos.coords.latitude}, lon: ${pos.coords.longitude}`)
this.position = pos;
});
// to stop watching
watch.unsubscribe();
});
}
}
```
@@ -95,8 +92,8 @@ Then create a new class that extends the `Camera` class with a mock implementati
class CameraMock extends Camera {
getPicture(options) {
return new Promise((resolve, reject) => {
resolve("BASE_64_ENCODED_DATA_GOES_HERE");
})
resolve('BASE_64_ENCODED_DATA_GOES_HERE');
});
}
}
```
@@ -104,61 +101,49 @@ class CameraMock extends Camera {
Finally, override the previous `Camera` class in your `providers` for this module:
```typescript
providers: [
{ provide: Camera, useClass: CameraMock }
]
providers: [{ provide: Camera, useClass: CameraMock }];
```
Here's the full example:
```typescript
import { NgModule, ErrorHandler } from '@angular/core';
import { ErrorHandler, NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { IonicApp, IonicModule, IonicErrorHandler } from 'ionic-angular';
import { MyApp } from './app.component';
import { HomePage } from '../pages/home/home';
import { Camera } from '@ionic-native/camera';
import { IonicApp, IonicErrorHandler, IonicModule } from 'ionic-angular';
import { HomePage } from '../pages/home/home';
import { MyApp } from './app.component';
class CameraMock extends Camera {
getPicture(options) {
return new Promise((resolve, reject) => {
resolve("BASE_64_ENCODED_DATA_GOES_HERE");
})
resolve('BASE_64_ENCODED_DATA_GOES_HERE');
});
}
}
@NgModule({
declarations: [
MyApp,
HomePage
],
imports: [
BrowserModule,
IonicModule.forRoot(MyApp)
],
declarations: [MyApp, HomePage],
imports: [BrowserModule, IonicModule.forRoot(MyApp)],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
HomePage
],
entryComponents: [MyApp, HomePage],
providers: [
{provide: ErrorHandler, useClass: IonicErrorHandler},
{ provide: ErrorHandler, useClass: IonicErrorHandler },
{ provide: Camera, useClass: CameraMock }
]
})
export class AppModule {}
```
### Runtime Diagnostics
Spent way too long diagnosing an issue only to realize a plugin wasn't firing or installed? Ionic Native lets you know what the issue is and how you can resolve it.
![img](https://ionic-io-assets.s3.amazonaws.com/ionic-native-console.png)
## Plugin Missing?
Let us know or submit a PR! Take a look at [the Developer Guide](https://github.com/ionic-team/ionic-native/blob/master/DEVELOPER.md) for more on how to contribute. :heart:
## Ionic v1 (AngularJS, Angular 1.x) support
@@ -169,6 +154,8 @@ For Ionic v1 (AngularJS, Angular 1.x) support, please use version 2 of Ionic Nat
Ibby Hadeed - [@ihadeed](https://github.com/ihadeed)
Daniel Sogl - [@sogldaniel](https://twitter.com/sogldaniel)
Tim Lancina - [@timlancina](https://twitter.com/timlancina)
Mike Hartington - [@mhartington](https://twitter.com/mhartington)
+18 -16
View File
@@ -1,51 +1,53 @@
"use strict";
'use strict';
const gulp = require('gulp'),
minimist = require('minimist'),
rename = require("gulp-rename"),
rename = require('gulp-rename'),
tslint = require('gulp-tslint'),
decamelize = require('decamelize'),
replace = require('gulp-replace'),
_ = require('lodash');
const flagConfig = {
string: ['port', 'version', 'ngVersion', 'animations'],
boolean: ['dry-run'],
alias: {'p': 'port', 'v': 'version', 'a': 'ngVersion'},
alias: { p: 'port', v: 'version', a: 'ngVersion' },
default: { port: 8000 }
},
flags = minimist(process.argv.slice(2), flagConfig);
/* Docs tasks */
require('./scripts/docs/gulp-tasks')(gulp, flags);
gulp.task('lint', () => {
return gulp.src('src/**/*.ts')
.pipe(tslint({
formatter: "verbose",
configuration: 'tslint.json'
}))
return gulp
.src('src/**/*.ts')
.pipe(
tslint({
formatter: 'verbose',
configuration: 'tslint.json'
})
)
.pipe(tslint.report());
});
gulp.task('plugin:create', () => {
if (flags.n && flags.n !== ''){
const src = flags.m ? './scripts/templates/wrap-min.tmpl':'./scripts/templates/wrap.tmpl',
if (flags.n && flags.n !== '') {
const src = flags.m
? './scripts/templates/wrap-min.tmpl'
: './scripts/templates/wrap.tmpl',
pluginName = flags.n,
spaced = pluginName.replace(/(?!^)([A-Z])/g, ' $1'),
kebabCase = _.kebabCase(pluginName);
return gulp.src(src)
return gulp
.src(src)
.pipe(replace('{{ PluginName }}', pluginName))
.pipe(replace('{{ Plugin_Name }}', spaced))
.pipe(replace('{{ pluginName }}', _.lowerFirst(pluginName)))
.pipe(replace('{{ plugin-name }}', kebabCase))
.pipe(rename('index.ts'))
.pipe(gulp.dest('./src/@ionic-native/plugins/' + kebabCase));
} else {
console.log("Usage is: gulp plugin:create -n PluginName");
console.log('Usage is: gulp plugin:create -n PluginName');
}
});
+7 -22
View File
@@ -1,18 +1,10 @@
"use strict";
'use strict';
module.exports = config => {
const conf = {
frameworks: [
'jasmine',
'karma-typescript'
],
frameworks: ['jasmine', 'karma-typescript'],
plugins: [
'karma-typescript',
'karma-jasmine',
'karma-phantomjs-launcher'
],
plugins: ['karma-typescript', 'karma-jasmine', 'karma-phantomjs-launcher'],
preprocessors: {
'src/**/*.ts': ['karma-typescript']
@@ -21,22 +13,18 @@ module.exports = config => {
karmaTypescriptConfig: {
bundlerOptions: {
entrypoints: /\.spec\.ts$/,
transforms: [
require("karma-typescript-es6-transform")()
]
transforms: [require('karma-typescript-es6-transform')()]
},
compilerOptions: {
lib: ['es2015', 'dom'],
paths: {
"@ionic-native/core": ["./src/@ionic-native/core"]
'@ionic-native/core': ['./src/@ionic-native/core']
},
baseUrl: '.'
}
},
files: [
{ pattern: 'src/**/*.ts', included: true, watched: true }
],
files: [{ pattern: 'src/**/*.ts', included: true, watched: true }],
reporters: ['progress'],
@@ -44,12 +32,9 @@ module.exports = config => {
colors: true,
logLevel: config.INFO,
autoWatch: true,
browsers: [
'PhantomJS'
],
browsers: ['PhantomJS'],
singleRun: false
};
config.set(conf);
};
+4421 -640
View File
File diff suppressed because it is too large Load Diff
+23 -26
View File
@@ -1,48 +1,45 @@
{
"name": "ionic-native",
"version": "4.9.0",
"version": "4.14.0",
"description": "Native plugin wrappers for Cordova and Ionic with TypeScript, ES6+, Promise and Observable support",
"homepage": "https://ionicframework.com/",
"author": "Ionic Team <hi@ionic.io> (https://ionic.io)",
"license": "MIT",
"devDependencies": {
"@angular/compiler": "4.4.4",
"@angular/compiler-cli": "4.4.4",
"@angular/core": "4.4.4",
"@angular/compiler": "^5.2.11",
"@angular/compiler-cli": "^5.2.11",
"@angular/core": "^5.2.11",
"@types/cordova": "0.0.34",
"@types/jasmine": "^2.8.8",
"@types/node": "^8.10.20",
"@types/node": "8.10.20",
"canonical-path": "0.0.2",
"child-process-promise": "2.2.1",
"conventional-changelog-cli": "1.3.4",
"cpr": "2.0.0",
"cz-conventional-changelog": "2.0.0",
"decamelize": "1.2.0",
"dgeni": "0.4.7",
"conventional-changelog-cli": "^2.0.5",
"cz-conventional-changelog": "^2.1.0",
"dgeni": "^0.4.10",
"dgeni-packages": "0.16.10",
"fs-extra": "2.0.0",
"fs-extra-promise": "0.4.1",
"fs-extra": "^7.0.0",
"gulp": "3.9.1",
"gulp-rename": "1.2.2",
"gulp-replace": "0.5.4",
"gulp-tslint": "6.1.2",
"jasmine-core": "^2.99.1",
"karma": "^1.7.0",
"gulp-rename": "^1.4.0",
"gulp-replace": "^1.0.0",
"gulp-tslint": "^8.1.3",
"jasmine-core": "^3.2.1",
"karma": "^2.0.5",
"karma-cli": "^1.0.1",
"karma-jasmine": "^1.1.2",
"karma-phantomjs-launcher": "^1.0.4",
"karma-typescript": "^3.0.12",
"karma-typescript": "^3.0.13",
"karma-typescript-es6-transform": "^1.0.4",
"lodash": "4.17.4",
"lodash": "^4.17.11",
"minimist": "1.2.0",
"node-html-encoder": "0.0.2",
"q": "1.5.0",
"queue": "4.2.1",
"rimraf": "2.6.1",
"rxjs": "^5.5.11",
"semver": "5.3.0",
"tslint": "3.15.1",
"tslint-ionic-rules": "0.0.8",
"q": "^1.5.1",
"queue": "^4.5.0",
"rimraf": "^2.6.2",
"rxjs": "^5.5.12",
"semver": "^5.5.1",
"tslint": "^5.11.0",
"tslint-ionic-rules": "0.0.19",
"typescript": "~2.4.2",
"zone.js": "^0.8.26"
},
+37 -42
View File
@@ -1,6 +1,6 @@
"use strict";
'use strict';
// Node module dependencies
const fs = require('fs-extra-promise').useFs(require('fs-extra')),
const fs = require('fs-extra'),
queue = require('queue'),
path = require('path'),
exec = require('child_process').exec;
@@ -15,22 +15,21 @@ const ROOT = path.resolve(path.join(__dirname, '../../')), // root ionic-native
BUILD_DIST_ROOT = path.resolve(ROOT, 'dist/@ionic-native'), // dist directory root path
BUILD_CORE_DIST = path.resolve(BUILD_DIST_ROOT, 'core'); // core dist directory path
// dependency versions
const ANGULAR_VERSION = '*',
RXJS_VERSION = '^5.0.1',
MIN_CORE_VERSION = '^4.2.0',
RXJS_VERSION = '^5.5.11',
MIN_CORE_VERSION = '^4.11.0',
IONIC_NATIVE_VERSION = require(path.resolve(ROOT, 'package.json')).version;
// package dependencies
const CORE_PEER_DEPS = {
'rxjs': RXJS_VERSION
rxjs: RXJS_VERSION
};
const PLUGIN_PEER_DEPS = {
'@ionic-native/core': MIN_CORE_VERSION,
'@angular/core': ANGULAR_VERSION,
'rxjs': RXJS_VERSION
rxjs: RXJS_VERSION
};
// set peer dependencies for all plugins
@@ -44,8 +43,10 @@ fs.mkdirpSync(BUILD_TMP);
console.log('Preparing core module package.json');
CORE_PACKAGE_JSON.version = IONIC_NATIVE_VERSION;
CORE_PACKAGE_JSON.peerDependencies = CORE_PEER_DEPS;
fs.writeJsonSync(path.resolve(BUILD_CORE_DIST, 'package.json'), CORE_PACKAGE_JSON);
fs.writeJsonSync(
path.resolve(BUILD_CORE_DIST, 'package.json'),
CORE_PACKAGE_JSON
);
// Fetch a list of the plugins
const PLUGINS = fs.readdirSync(PLUGINS_PATH);
@@ -59,7 +60,9 @@ const index = pluginsToBuild.indexOf('ignore-errors');
if (index > -1) {
ignoreErrors = true;
pluginsToBuild.splice(index, 1);
console.log('Build will continue even if errors were thrown. Errors will be printed when build finishes.');
console.log(
'Build will continue even if errors were thrown. Errors will be printed when build finishes.'
);
}
if (!pluginsToBuild.length) {
@@ -71,12 +74,9 @@ const QUEUE = queue({
concurrency: require('os').cpus().length
});
// Function to process a single plugin
const addPluginToQueue = pluginName => {
QUEUE.push((callback) => {
QUEUE.push(callback => {
console.log(`Building plugin: ${pluginName}`);
const PLUGIN_BUILD_DIR = path.resolve(BUILD_TMP, 'plugins', pluginName),
@@ -84,10 +84,9 @@ const addPluginToQueue = pluginName => {
let tsConfigPath;
fs.mkdirpAsync(PLUGIN_BUILD_DIR) // create tmp build dir
.then(() => fs.mkdirpAsync(path.resolve(BUILD_DIST_ROOT, pluginName))) // create dist dir
fs.mkdirp(PLUGIN_BUILD_DIR) // create tmp build dir
.then(() => fs.mkdirp(path.resolve(BUILD_DIST_ROOT, pluginName))) // create dist dir
.then(() => {
// Write tsconfig.json
const tsConfig = JSON.parse(JSON.stringify(PLUGIN_TS_CONFIG));
tsConfig.files = [PLUGIN_SRC_PATH];
@@ -95,7 +94,7 @@ const addPluginToQueue = pluginName => {
tsConfigPath = path.resolve(PLUGIN_BUILD_DIR, 'tsconfig.json');
return fs.writeJsonAsync(tsConfigPath, tsConfig);
return fs.writeJson(tsConfigPath, tsConfig);
})
.then(() => {
// clone package.json
@@ -104,42 +103,39 @@ const addPluginToQueue = pluginName => {
packageJson.name = `@ionic-native/${pluginName}`;
packageJson.version = IONIC_NATIVE_VERSION;
return fs.writeJsonAsync(path.resolve(BUILD_DIST_ROOT, pluginName, 'package.json'), packageJson);
return fs.writeJson(
path.resolve(BUILD_DIST_ROOT, pluginName, 'package.json'),
packageJson
);
})
.then(() => {
// compile the plugin
exec(`${ROOT}/node_modules/.bin/ngc -p ${tsConfigPath}`, (err, stdout, stderr) => {
if (err) {
if (!ignoreErrors) {
// oops! something went wrong.
console.log(err);
callback(`\n\nBuilding ${pluginName} failed.`);
return;
} else {
errors.push(err);
exec(
`${ROOT}/node_modules/.bin/ngc -p ${tsConfigPath}`,
(err, stdout, stderr) => {
if (err) {
if (!ignoreErrors) {
// oops! something went wrong.
console.log(err);
callback(`\n\nBuilding ${pluginName} failed.`);
return;
} else {
errors.push(err);
}
}
// we're done with this plugin!
callback();
}
// we're done with this plugin!
callback();
});
);
})
.catch(callback);
}); // QUEUE.push end
};
pluginsToBuild.forEach(addPluginToQueue);
QUEUE.start((err) => {
QUEUE.start(err => {
if (err) {
console.log('Error building plugins.');
console.log(err);
@@ -155,5 +151,4 @@ QUEUE.start((err) => {
} else {
console.log('Done processing plugins!');
}
});
+9 -16
View File
@@ -1,17 +1,16 @@
"use strict";
'use strict';
// Node module dependencies
const fs = require('fs-extra-promise').useFs(require('fs-extra')),
const fs = require('fs-extra'),
queue = require('queue'),
path = require('path'),
exec = require('child-process-promise').exec;
const ROOT = path.resolve(path.join(__dirname, '../../')),
DIST = path.resolve(ROOT, 'dist', '@ionic-native');
const FLAGS = '--access public'; // add any flags here if you want... (example: --tag alpha)
const PACKAGES = fs.readdirSync(DIST);
const PACKAGES = fs.readdir(DIST);
const failedPackages = [];
@@ -20,15 +19,16 @@ const QUEUE = queue({
});
PACKAGES.forEach(packageName => {
QUEUE.push(done => {
console.log(`Publishing @ionic-native/${packageName}`);
const packagePath = path.resolve(DIST, packageName);
exec(`npm publish ${packagePath} ${FLAGS}`)
.then(() => done())
.catch((e) => {
if (e.stderr && e.stderr.indexOf('previously published version') === -1) {
.catch(e => {
if (
e.stderr &&
e.stderr.indexOf('previously published version') === -1
) {
failedPackages.push({
cmd: e.cmd,
stderr: e.stderr
@@ -36,13 +36,10 @@ PACKAGES.forEach(packageName => {
}
done();
});
});
});
QUEUE.start((err) => {
QUEUE.start(err => {
if (err) {
console.log('Error publishing ionic-native. ', err);
} else if (failedPackages.length > 0) {
@@ -51,8 +48,4 @@ QUEUE.start((err) => {
} else {
console.log('Done publishing ionic-native!');
}
});
+16 -10
View File
@@ -9,37 +9,41 @@ exec(`git branch | grep \\* | cut -d ' ' -f2`)
const branch = output.stdout.trim();
if (branch !== 'master') {
console.log('Merging master branch in ...');
// not on master branch
// let's test the changes that were made
return exec(`git merge origin master`);
}
})
.then((output) => {
.then(output => {
if (output && output.stderr) {
return Promise.reject(output.stderr);
}
console.log('Checking for differences ...');
return exec(`git diff --name-status origin master`)
return exec(`git diff --name-status origin master`);
})
.then((output) => {
.then(output => {
if (output && output.stderr) {
return Promise.reject(output.stderr);
}
diff = output.stdout;
diff = diff.replace(/A\s+/g, '');
diff = diff.match(/src\/@ionic-native\/plugins\/([a-zA-Z0-9\-]+)\/index\.ts/g);
diff = diff.match(
/src\/@ionic-native\/plugins\/([a-zA-Z0-9\-]+)\/index\.ts/g
);
if (!diff) process.exit();
console.log(`${ diff.length } plugins were modified. We will now build them to verify they still work.`);
console.log(
`${
diff.length
} plugins were modified. We will now build them to verify they still work.`
);
return exec('npm run build:core --silent');
})
.then((output) => {
.then(output => {
if (output && output.stderr) {
return Promise.reject(output.stderr);
}
@@ -47,11 +51,13 @@ exec(`git branch | grep \\* | cut -d ' ' -f2`)
console.log('Built core library successfully ...');
console.log('Building plugins ...');
diff = diff.map(text => text.replace('src/@ionic-native/plugins/', '').replace('/index.ts', ''));
diff = diff.map(text =>
text.replace('src/@ionic-native/plugins/', '').replace('/index.ts', '')
);
return exec(`npm run build:modules ${diff.join(' ')} --silent`);
})
.then((output) => {
.then(output => {
if (output && output.stderr) {
console.log(output.stderr);
process.exit(1);
+1 -1
View File
@@ -2,7 +2,7 @@
const config = require('../config.json'),
projectPackage = require('../../package.json'),
path = require('path'),
fs = require('fs-extra-promise').useFs(require('fs-extra')),
fs = require('fs-extra'),
Dgeni = require('dgeni');
module.exports = gulp => {
+3 -10
View File
@@ -2,14 +2,7 @@ import 'core-js';
import { Observable } from 'rxjs/Observable';
import {
Cordova,
CordovaCheck,
CordovaInstance,
CordovaProperty,
InstanceProperty,
Plugin
} from './decorators';
import { Cordova, CordovaCheck, CordovaInstance, CordovaProperty, InstanceProperty, Plugin } from './decorators';
import { IonicNativePlugin } from './ionic-native-plugin';
import { ERR_CORDOVA_NOT_AVAILABLE, ERR_PLUGIN_NOT_INSTALLED } from './plugin';
@@ -140,7 +133,7 @@ describe('Regular Decorators', () => {
delete window.testPlugin;
window.cordova = true;
expect(<any>plugin.pingSync()).toEqual(ERR_PLUGIN_NOT_INSTALLED);
expect(plugin.pingSync() as any).toEqual(ERR_PLUGIN_NOT_INSTALLED);
plugin.ping().catch(e => {
expect(e).toEqual(ERR_PLUGIN_NOT_INSTALLED.error);
@@ -152,7 +145,7 @@ describe('Regular Decorators', () => {
it('should throw cordova_not_available error', (done: Function) => {
delete window.testPlugin;
expect(<any>plugin.pingSync()).toEqual(ERR_CORDOVA_NOT_AVAILABLE);
expect(plugin.pingSync() as any).toEqual(ERR_CORDOVA_NOT_AVAILABLE);
plugin.ping().catch(e => {
expect(e).toEqual(ERR_CORDOVA_NOT_AVAILABLE.error);
+19 -26
View File
@@ -1,14 +1,7 @@
import { Observable } from 'rxjs/Observable';
import { _throw } from 'rxjs/observable/throw';
import { Observable } from 'rxjs/Observable';
import {
checkAvailability,
instanceAvailability,
overrideFunction,
wrap,
wrapInstance
} from './plugin';
import { checkAvailability, instanceAvailability, overrideFunction, wrap, wrapInstance } from './plugin';
import { getPlugin, getPromise } from './util';
export interface PluginConfig {
@@ -123,7 +116,7 @@ export function InstanceCheck(opts: CordovaCheckOptions = {}) {
descriptor: TypedPropertyDescriptor<any>
): TypedPropertyDescriptor<any> => {
return {
value: function(...args: any[]): any {
value(...args: any[]): any {
if (instanceAvailability(this)) {
return descriptor.value.apply(this, args);
} else {
@@ -152,7 +145,7 @@ export function CordovaCheck(opts: CordovaCheckOptions = {}) {
descriptor: TypedPropertyDescriptor<any>
): TypedPropertyDescriptor<any> => {
return {
value: function(...args: any[]): any {
value(...args: any[]): any {
const check = checkAvailability(pluginObj);
if (check === true) {
return descriptor.value.apply(this, args);
@@ -190,41 +183,41 @@ export function CordovaCheck(opts: CordovaCheckOptions = {}) {
* ```
*/
export function Plugin(config: PluginConfig): ClassDecorator {
return function(cls: any) {
return (cls: any) => {
// Add these fields to the class
for (let prop in config) {
for (const prop in config) {
cls[prop] = config[prop];
}
cls['installed'] = function(printWarning?: boolean) {
cls['installed'] = (printWarning?: boolean) => {
return !!getPlugin(config.pluginRef);
};
cls['getPlugin'] = function() {
cls['getPlugin'] = () => {
return getPlugin(config.pluginRef);
};
cls['checkInstall'] = function() {
cls['checkInstall'] = () => {
return checkAvailability(cls) === true;
};
cls['getPluginName'] = function() {
cls['getPluginName'] = () => {
return config.pluginName;
};
cls['getPluginRef'] = function() {
cls['getPluginRef'] = () => {
return config.pluginRef;
};
cls['getPluginInstallName'] = function() {
cls['getPluginInstallName'] = () => {
return config.plugin;
};
cls['getPluginRepo'] = function() {
cls['getPluginRepo'] = () => {
return config.repo;
};
cls['getSupportedPlatforms'] = function() {
cls['getSupportedPlatforms'] = () => {
return config.platforms;
};
@@ -245,7 +238,7 @@ export function Cordova(opts: CordovaOptions = {}) {
descriptor: TypedPropertyDescriptor<any>
) => {
return {
value: function(...args: any[]) {
value(...args: any[]) {
return wrap(this, methodName, opts).apply(this, args);
},
enumerable: true
@@ -261,7 +254,7 @@ export function Cordova(opts: CordovaOptions = {}) {
export function CordovaInstance(opts: CordovaOptions = {}) {
return (target: Object, methodName: string) => {
return {
value: function(...args: any[]) {
value(...args: any[]) {
return wrapInstance(this, methodName, opts).apply(this, args);
},
enumerable: true
@@ -302,10 +295,10 @@ export function CordovaProperty(target: any, key: string) {
export function InstanceProperty(target: any, key: string) {
Object.defineProperty(target, key, {
enumerable: true,
get: function() {
get() {
return this._objectInstance[key];
},
set: function(value) {
set(value) {
this._objectInstance[key] = value;
}
});
@@ -324,7 +317,7 @@ export function CordovaFunctionOverride(opts: any = {}) {
descriptor: TypedPropertyDescriptor<any>
) => {
return {
value: function(...args: any[]) {
value(...args: any[]) {
return overrideFunction(this, methodName, opts);
},
enumerable: true
+3 -3
View File
@@ -105,7 +105,7 @@ function setIndex(
opts.successName &&
opts.errorName
) {
let obj: any = {};
const obj: any = {};
obj[opts.successName] = resolve;
obj[opts.errorName] = reject;
args.push(obj);
@@ -355,11 +355,11 @@ export function overrideFunction(
/**
* @private
*/
export const wrap = function(
export const wrap = (
pluginObj: any,
methodName: string,
opts: CordovaOptions = {}
) {
) => {
return (...args: any[]) => {
if (opts.sync) {
// Sync doesn't wrap the plugin with a promise or observable, it returns the result as-is
+7 -7
View File
@@ -6,7 +6,7 @@ declare const window: any;
export const get = (element: Element | Window, path: string): any => {
const paths: string[] = path.split('.');
let obj: any = element;
for (let i: number = 0; i < paths.length; i++) {
for (let i = 0; i < paths.length; i++) {
if (!obj) {
return null;
}
@@ -53,7 +53,7 @@ export const pluginWarn = (
): void => {
if (method) {
console.warn(
'Native: tried calling ' +
'Ionic Native: tried calling ' +
pluginName +
'.' +
method +
@@ -63,12 +63,12 @@ export const pluginWarn = (
);
} else {
console.warn(
`'Native: tried accessing the ${pluginName} plugin but it's not installed.`
`'Ionic Native: tried accessing the ${pluginName} plugin but it's not installed.`
);
}
if (plugin) {
console.warn(
`Install the ${pluginName} plugin: 'ionic cordova plugin add ${plugin}'`
`Install the ${pluginName} plugin: 'ionic cordova plugin add ${plugin}'`
);
}
};
@@ -81,17 +81,17 @@ export const pluginWarn = (
export const cordovaWarn = (pluginName: string, method?: string): void => {
if (method) {
console.warn(
'Native: tried calling ' +
'Ionic Native: tried calling ' +
pluginName +
'.' +
method +
', but Cordova is not available. Make sure to include cordova.js or run in a device/simulator'
', but Cordova is not available. Make sure to a) run in a real device or simulator and b) include cordova.js in your index.html'
);
} else {
console.warn(
'Native: tried accessing the ' +
pluginName +
' plugin but Cordova is not available. Make sure to include cordova.js or run in a device/simulator'
' plugin but Cordova is not available. Make sure to a) run in a real device or simulator and b) include cordova.js in your index.html'
);
}
};
@@ -0,0 +1,336 @@
import { Injectable } from '@angular/core';
import { CordovaCheck, IonicNativePlugin, Plugin } from '@ionic-native/core';
declare const AbbyyRtrSdk: any;
/**
* JSON object that you can pass as the options argument to change text
* capture settings. All keys are optional. Omitting a key means that a
* default setting will be used.
*/
export interface TextCaptureOptions {
/**
* The name of the license file. This file must be located in the
* www/rtr_assets/ directory in your project.
*/
licenseFileName?: string;
/**
* Recognition languages which can be selected by the user,
* for example: ["English", "French", "German"]. Empty array
* disables language selection.
*/
selectableRecognitionLanguages?: string[];
/**
* Recognition language selected by default.
*/
recognitionLanguages?: string[];
/**
* Width and height of the recognition area, separated by a
* whitespace — for example: "0.8 0.3". The area of interest is
* centered in the preview frame, its width and height are
* relative to the preview frame size and should be in the [0.0, 1.0] range.
*/
areaOfInterest?: string;
/**
* Whether to stop the plugin as soon as the result status is
* "Stable" (see Result status). When enabled (true), the
* recognition process can be stopped automatically. When
* disabled (false), recognition can be stopped only manually
* by user.
*/
stopWhenStable?: boolean;
/**
* Show (true) or hide (false) the flashlight button in the text
* capture dialog.
*/
isFlashlightVisible?: boolean;
/**
* Show (true) or hide (false) the stop button in the text
* capture dialog. When the user taps stop, RTR SDK returns
* the latest recognition result.
*/
isStopButtonVisible?: boolean;
}
/**
* JSON object that represents text recognition results.
* The callback you implement should parse this object and show results to user.
*/
export interface TextCaptureResult {
/**
* An array of objects representing recognized lines of text.
* These objects have the following keys:
* · text (string): the recognized text.
* · quadrangle (string): vertex coordinates of the bounding quadrangle,
* a string of 8 integers separated with whitespaces ("x1 y1 ... x4 y4"),
* goes clockwise starting from the bottom left.
* · rect (string): position and size of the bounding rectangle,
* a string of 4 integers separated with whitespaces ("x y width height").
*/
textLines: { text: string, quadrangle: string, rect?: string }[];
/**
* Additional information. This object has the following keys:
* · stabilityStatus (string): result stability status.
* See Result status for details.
* · userAction (string): the user's action which stopped the plugin,
* if any. Can be "Manually Stopped" if the stop button has been used,
* and "Canceled" if the user canceled processing. If the plugin has
* stopped automatically, the userAction key is not present in resultInfo.
* · frameSize (string): full size of the preview frame, a string
* with 2 integers separated with a whitespace ("720 1280").
* · recognitionLanguages (string array): languages used for recognition,
* the array contains language identifiers (["English", "French", "German"]).
*/
resultInfo: {
stabilityStatus: string,
userAction: string,
frameSize: string,
recognitionLanguages: string[]
};
/**
* Error details. This key is present only if an error occurs.
* The value is an object which has a single key:
* · description (string): human-readable error description.
*/
error?: {
description: string;
};
}
/**
* JSON object that you can pass as the options argument to change data
* capture settings. All keys are optional. Omitting a key means that a default
* setting will be used, except the profile and customDataCaptureScenario
* keys: you must specify either one of them, but not both at the same time.
*/
export interface DataCaptureOptions {
/**
* The predefined data capture profile to use, for example: "MRZ".
* Note: For the list of supported documents, see Specifications — Data
* Capture Profiles in the ABBYY Real-Time Recognition SDK 1 Developer's Guide.
*/
profile?: string;
/**
* Custom data capture settings. This object has the following keys:
* · name (string): the name of your custom data capture scenario, required.
* · description (string): a more detailed description. This key is optional;
* if not given, it will be assigned the same value as name.
* · recognitionLanguages (string array): recognition languages to use.
* Default is ["English"].
* · fields (object array): describes data fields to capture. Each object
* in this array has a single regEx key; its value is a string containing
* the regular expression that should be matched when capturing a field.
*/
customDataCaptureScenario?: {
name: string,
description: string,
recognitionLanguages: string[],
fields: { regEx: string }[]
};
/**
* The name of the license file. This file must be located in the
* www/rtr_assets/ directory in your project.
*/
licenseFileName?: string;
/**
* Width and height of the recognition area, separated by a
* whitespace — for example: "0.8 0.3". The area of interest is
* centered in the preview frame, its width and height are
* relative to the preview frame size and should be in the [0.0, 1.0] range.
*/
areaOfInterest?: string;
/**
* Whether to stop the plugin as soon as the result status is
* "Stable" (see Result status). When enabled (true), the
* recognition process can be stopped automatically. When
* disabled (false), recognition can be stopped only manually
* by user.
*/
stopWhenStable?: boolean;
/**
* Show (true) or hide (false) the flashlight button in the text
* capture dialog.
*/
isFlashlightVisible?: boolean;
/**
* Show (true) or hide (false) the stop button in the text
* capture dialog. When the user taps stop, RTR SDK returns
* the latest recognition result.
*/
isStopButtonVisible?: boolean;
}
/**
* JSON object that represents data recognition results. The callback you
* implement should parse this object and show results to user.
*/
export interface DataCaptureResult {
/**
* The data scheme which was applied during data capture.
* The value is an object which has two keys:
* · id (string): the internal scheme identifier.
* · name (string): the scheme name.
* If you had defined a custom data capture scenario in options, both the
* id and name will be the same as the scenario name you specified. If
* you selected a predefined profile, the id and name are specified by the
* profile. If an error occurs during processing, the dataScheme key is not
* present in the result.
*/
dataScheme?: {
id: string,
name: string
};
/**
* Recognized data fields. Each object in the array represents a separate
* data field. The data field objects have the following keys:
* · id (string): the internal identifier of the field.
* · name (string): the field name.
* Similarly to dataScheme, in custom scenarios both id and name are the same
* as the scenario name you specified (currently custom scenarios allow
* only 1 recognized field).
* · text (string): full text of the field.
* · quadrangle (string): vertex coordinates of the bounding quadrangle, a
* string of 8 integers separated with whitespaces ("x1 y1 ... x4 y4"),
* goes clockwise starting from the bottom left.
* · components (object array): an array of objects representing field
* components, that is, the text fragments found on the image, which
* constitute the field.
* In the components array each element is an object with the following keys:
* · text (string): text of this fragment.
* · quadrangle (string): vertex coordinates of the bounding quadrangle of
* this fragment, similar to the field's quadrangle.
* · rect (string): position and size of the bounding rectangle, a string
* of 4 integers separated with whitespaces ("x y width height").
*/
dataFields: {
id: string,
name: string,
text: string,
quadrangle: string,
components: {
text: string,
quadrangle: string,
rect: string
}
};
/**
* Additional information. This object has the following keys:
* · stabilityStatus (string): result stability status.
* See Result status for details.
* · userAction (string): the user's action which stopped the plugin,
* if any. Can be "Manually Stopped" if the stop button has been used,
* and "Canceled" if the user canceled processing. If the plugin has
* stopped automatically, the userAction key is not present in resultInfo.
* · frameSize (string): full size of the preview frame, a string
* with 2 integers separated with a whitespace ("720 1280").
*/
resultInfo: {
stabilityStatus: string,
userAction: string,
frameSize: string
};
/**
* Error details. This key is present only if an error occurs.
* The value is an object which has a single key:
* · description (string): human-readable error description.
*/
error?: {
description: string;
};
}
/**
* @name ABBYY Real-Time Recognition
* @description
* This plugin allows to use the Text Capture and Data Capture features of
* ABBYY Real-Time Recognition SDK (RTR SDK) in apps.
*
* @usage
* ```typescript
* import { AbbyyRTR } from '@ionic-native/abbyy-rtr';
*
*
* constructor(private abbyyRTR: AbbyyRTR) { }
*
* ...
*
*
* this.abbyyRTR.startTextCapture(options)
* .then((res: any) => console.log(res))
* .catch((error: any) => console.error(error));
*
*
* this.abbyyRTR.startDataCapture(options)
* .then((res: any) => console.log(res))
* .catch((error: any) => console.error(error));
*
* ```
*/
@Plugin({
pluginName: 'AbbyyRTR',
plugin: 'cordova-plugin-abbyy-rtr-sdk',
pluginRef: 'AbbyyRtrSdk',
repo: 'https://github.com/abbyysdk/RTR-SDK.Cordova',
install: 'ionic cordova plugin add cordova-plugin-abbyy-rtr-sdk',
platforms: ['Android', 'iOS']
})
@Injectable()
export class AbbyyRTR extends IonicNativePlugin {
/**
* Opens a modal dialog with controls for the Text Capture scenario.
* @param {TextCaptureOptions} options
* @return {Promise<TextCaptureResult>}
*/
@CordovaCheck()
startTextCapture(options: TextCaptureOptions): Promise<TextCaptureResult> {
return new Promise<any>((resolve, reject) => {
AbbyyRtrSdk.startTextCapture((result: DataCaptureResult) => {
if (result.error) {
reject(result);
} else {
resolve(result);
}
}, options);
});
}
/**
* Opens a modal dialog with controls for the Data Capture scenario.
* @param {DataCaptureOptions} options
* @return {Promise<DataCaptureResult>}
*/
@CordovaCheck()
startDataCapture(options: DataCaptureOptions): Promise<DataCaptureResult> {
return new Promise<any>((resolve, reject) => {
AbbyyRtrSdk.startDataCapture((result: DataCaptureResult) => {
if (result.error) {
reject(result);
} else {
resolve(result);
}
}, options);
});
}
}
@@ -68,7 +68,7 @@ export interface AdMobFreeRewardVideoConfig {
* @name AdMob Free
* @description
* A free, no ad-sharing version of Google AdMob plugin for Cordova.
*
*
* Requires Cordova plugin: `cordova-plugin-admob-free`. For more info, please see the [AdMob Free plugin docs](https://github.com/ratson/cordova-plugin-admob-free).
*
* @usage
+43 -3
View File
@@ -12,20 +12,38 @@ import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
* ```typescript
* import { AES256 } from '@ionic-native/aes-256';
*
* private secureKey: string;
* private secureIV: string;
*
* constructor(private aES256: AES256) { }
* constructor(private aes256: AES256) {
* this.generateSecureKeyAndIV(); // To generate the random secureKey and secureIV
* }
*
* ...
*
* async generateSecureKeyAndIV() {
* this.secureKey = await this.aes256.generateSecureKey('random password 12345'); // Returns a 32 bytes string
* this.secureIV = await this.aes256.generateSecureIV('random password 12345'); // Returns a 16 bytes string
* }
*
* this.aES256.encrypt('12345678123456781234567812345678', '1234567812345678', 'testdata')
* this.aes256.encrypt(this.secureKey, this.secureIV, 'testdata')
* .then(res => console.log('Encrypted Data: ',res))
* .catch((error: any) => console.error(error));
*
* this.aES256.decrypt('12345678123456781234567812345678', '1234567812345678', 'encryptedData')
* this.aes256.decrypt(this.secureKey, this.secureIV, 'encryptedData')
* .then(res => console.log('Decrypted Data : ',res))
* .catch((error: any) => console.error(error));
*
*
* * this.aes256.generateSecureKey('random password 12345')
* .then(res => console.log('Secure Key : ',res))
* .catch((error: any) => console.error(error));
*
*
* * this.aes256.generateSecureIV('random password 12345')
* .then(res => console.log('Secure IV : ',res))
* .catch((error: any) => console.error(error));
*
* ```
*/
@Plugin({
@@ -63,4 +81,26 @@ export class AES256 extends IonicNativePlugin {
return;
}
/**
* This function used to generate a secure key based on an password. Perfect if you want to delegate the key generation for encryption to the plugin.
* Make sure to save the return value of this function somewhere so your encrypted data can be decrypted in the future.
* @param {string} password A random string, which will be used as input for a PBKDF2 function
* @return {Promise<string>} Returns a promise that resolves when key is generated.
*/
@Cordova()
generateSecureKey(password: string): Promise<string> {
return;
}
/**
* This function used to generate a secure IV based on an password. Perfect if you want to delegate the IV generation for encryption to the plugin.
* Make sure to save the return value of this function somewhere so your encrypted data can be decrypted in the future.
* @param {string} password A random string, which will be used as input for a PBKDF2 function
* @return {Promise<string>} Returns a promise that resolves when IV is generated.
*/
@Cordova()
generateSecureIV(password: string): Promise<string> {
return;
}
}
+11 -79
View File
@@ -1,83 +1,20 @@
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
export interface AlipayOrder {
/**
* appId assigned by Alipay
*/
app_id: string;
/**
* Api name.
* Should be: alipay.trade.app.pay
*/
method: string;
/**
* Data format
* Default: "JSON"
*/
format?: string;
/**
* Charset
* Possible values: "UTF-8", "GBK"
* Default: "UTF-8"
*/
charset: string;
/**
* Sign method
* Default: 'RSA'
*/
sign_type: string;
/**
* Sign value. Should be got from server side.
* Default: 'RSA'
*/
sign: string;
/**
* Timestamp, formated like "yyyy-MM-dd HH:mm:ss", e.g. 2014-07-24 03:07:50
*/
timestamp: string;
/**
* Api version. Fixed value '1.0'
*/
version: string;
/**
* Notify url.
*/
notify_url: string;
/**
* biz content. formated in json. see alipay doc for detail.
*/
biz_content: string;
}
/**
* @name Alipay
* @description
* This plugin is used for Alipay APP support. Integrated with the latest SDK.
* This plugin facilitates the usage of Alipay 支付宝 in an Ionic apps with the integrated AlipaySDK dated on 20180601.
*
* Requires Cordova plugin: `cordova-alipay-base`. For more info, please see the [Alipay plugin docs](https://github.com/xueron/cordova-alipay-base).
* Requires Cordova plugin: `cordova-plugin-gubnoi-alipay`. For more info, please see https://github.com/jing-zhou/cordova-plugin-alipay .
*
* @usage
* ```typescript
* import { Alipay, AlipayOrder } from '@ionic-native/alipay';
* import { Alipay } from '@ionic-native/alipay';
*
* constructor(private alipay: Alipay) {
*
* // Should get from server side with sign.
* const alipayOrder: AlipayOrder = {
* ...
* };
*
*
* //alipayOrder is a string that has been generated and signed by the server side.
* this.alipay.pay(alipayOrder)
* .then(result => {
* console.log(result); // Success
@@ -88,31 +25,26 @@ export interface AlipayOrder {
*
* }
*
*
* ```
*
* @interfaces
* AlipayOrder
*/
@Plugin({
pluginName: 'Alipay',
plugin: 'cordova-alipay-base',
pluginRef: 'Alipay.Base',
repo: 'https://github.com/xueron/cordova-alipay-base',
install:
'ionic cordova plugin add cordova-alipay-base --variable ALI_PID=your_app_id',
installVariables: ['ALI_PID'],
plugin: 'cordova-plugin-gubnoi-alipay',
pluginRef: 'Alipay',
repo: 'https://github.com/jing-zhou/cordova-plugin-alipay',
install: 'ionic cordova plugin add cordova-plugin-gubnoi-alipay --variable APP_ID=your_app_id',
installVariables: ['APP_ID'],
platforms: ['Android', 'iOS']
})
@Injectable()
export class Alipay extends IonicNativePlugin {
/**
* Open Alipay to perform App pay
* @param { AlipayOrder | string } order alipay options
* @param {string} order alipay order string
* @returns {Promise<any>} Returns a Promise that resolves with the success return, or rejects with an error.
*/
@Cordova()
pay(order: AlipayOrder | string): Promise<any> {
pay(order: string): Promise<any> {
return;
}
}
@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
/**
* Bit flag values for setSystemUiVisibility()
@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
/**
* @name App Availability
@@ -1,4 +1,4 @@
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
/**
@@ -1,4 +1,4 @@
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
import { Injectable } from '@angular/core';
+1 -1
View File
@@ -75,7 +75,7 @@ export interface AppRateCustomLocale {
/** No button label */
noButtonLabel?: string;
/** App rate promt title */
/** App rate prompt title */
appRatePromptTitle?: string;
/** Feedback prompt title */
@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
@@ -37,28 +37,30 @@ import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
export class AppVersion extends IonicNativePlugin {
/**
* Returns the name of the app
* Returns the name of the app, e.g.: "My Awesome App"
* @returns {Promise<string>}
*/
@Cordova()
getAppName(): Promise<string> { return; }
/**
* Returns the package name of the app
* Returns the package name of the app, e.g.: "com.example.myawesomeapp"
* @returns {Promise<string>}
*/
@Cordova()
getPackageName(): Promise<string> { return; }
/**
* Returns the build identifier of the app
* @returns {Promise<string>}
* Returns the build identifier of the app.
* In iOS a string with the build version like "1.6095"
* In Android a number generated from the version string, like 10203 for version "1.2.3"
* @returns {Promise<string | number>}
*/
@Cordova()
getVersionCode(): Promise<string> { return; }
getVersionCode(): Promise<string | number> { return; }
/**
* Returns the version of the app
* Returns the version of the app, e.g.: "1.2.3"
* @returns {Promise<string>}
*/
@Cordova()
+1 -1
View File
@@ -1,6 +1,6 @@
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
export type IMakePayments =
| 'This device can make payments and has a supported card'
@@ -0,0 +1,188 @@
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
export interface AppsflyerOptions {
/**
* Appsflyer Dev key
*/
devKey: string;
/**
* Apple Application ID(for iOS only)
*/
appId?: string;
/**
* debug mode
*/
isDebug?: boolean;
/**
* optout of collection of IMEI
*/
collectIMEI?: boolean;
/**
* optout of collection of collectAndroidID
*/
collectAndroidID?: boolean;
/**
* default false Accessing AppsFlyer Attribution / Conversion Data from the SDK (Deferred Deeplinking). Read more: Android, iOS. AppsFlyer plugin will return attribution data in onSuccess callback.
*/
onInstallConversionDataListener?: boolean;
}
export interface AppsflyerEvent {
[x: string]: any;
}
export interface AppsflyerInviteOptions {
channel?: string;
campaign?: string;
userParams?: {
[x: string]: any;
};
}
/**
* @name Appsflyer
* @description
* Appsflyer Cordova SDK support for Attribution
*
* @usage
* ```typescript
* import { Appsflyer } from '@ionic-native/appsflyer';
*
*
* constructor(private appsflyer: Appsflyer) { }
*
* ...
*
*
* this.appsflyer.initSdk(options);
*
* ```
*
* @interfaces
* AppsflyerOptions
* AppsflyerEvent
* AppsflyerInviteOptions
*/
@Plugin({
pluginName: 'Appsflyer',
plugin: 'cordova-plugin-appsflyer-sdk',
pluginRef: 'window.plugins.appsFlyer',
repo: 'https://github.com/AppsFlyerSDK/cordova-plugin-appsflyer-sdk',
platforms: ['iOS', 'Android'],
install: 'Add to config.xml like stated on github and then start'
})
@Injectable()
export class Appsflyer extends IonicNativePlugin {
/**
* initialize the SDK
* @param {AppsflyerOptions} options
* @returns {Promise<any>}
*/
@Cordova()
initSdk(options: AppsflyerOptions): Promise<any> {
return;
}
/**
* These in-app events help you track how loyal users discover your app, and attribute them to specific campaigns/media-sources. Please take the time define the event/s you want to measure to allow you to track ROI (Return on Investment) and LTV (Lifetime Value).
* @param {string} eventName custom event name, is presented in your dashboard
* @param {AppsflyerEvent} eventValues event details
*/
@Cordova({ sync: true })
trackEvent(eventName: string, eventValues: AppsflyerEvent): void {}
/**
* Setting your own Custom ID enables you to cross-reference your own unique ID with AppsFlyers user ID and the other devices IDs. This ID is available in AppsFlyer CSV reports along with postbacks APIs for cross-referencing with you internal IDs.
* @param {string} customerUserId user id
*/
@Cordova({ sync: true })
setAppUserId(customerUserId: string): void {}
/**
* Setting your own Custom ID enables you to cross-reference your own unique ID with AppsFlyers user ID and the other devices IDs. This ID is available in AppsFlyer CSV reports along with postbacks APIs for cross-referencing with you internal IDs.
* @param {boolean} customerUserId In some extreme cases you might want to shut down all SDK tracking due to legal and privacy compliance. This can be achieved with the isStopTracking API. Once this API is invoked, our SDK will no longer communicate with our servers and stop functioning.
*/
@Cordova({ sync: true })
stopTracking(isStopTracking: boolean): void {}
/**
* Get the data from Attribution
* @returns {Promise<any>}
*/
@Cordova()
registerOnAppOpenAttribution(): Promise<any> {
return;
}
/**
* Enables app uninstall tracking
* @param {string} token GCM/FCM ProjectNumber
* @returns {Promise<any>}
*/
@Cordova()
enableUninstallTracking(token: string): Promise<any> {
return;
}
/**
* Allows to pass GCM/FCM Tokens that where collected by third party plugins to the AppsFlyer server. Can be used for Uninstall Tracking.
* @param {string} token GCM/FCM ProjectNumber
*/
@Cordova({ sync: true })
updateServerUninstallToken(token: string): void {}
/**
* Get AppsFlyers proprietary Device ID. The AppsFlyer Device ID is the main ID used by AppsFlyer in Reports and APIs.
*/
@Cordova()
getAppsFlyerUID(): Promise<any> {
return;
}
/**
* End User Opt-Out (Optional) AppsFlyer provides you a method to optout specific users from AppsFlyer analytics. This method complies with the latest privacy requirements and complies with Facebook data and privacy policies. Default is FALSE, meaning tracking is enabled by default.
* @param {boolean} disable Set to true to opt-out user from tracking
*/
@Cordova({ sync: true })
deviceTrackingDisabled(disable: boolean): void {}
/**
* Set AppsFlyers OneLink ID. Setting a valid OneLink ID will result in shortened User Invite links, when one is generated. The OneLink ID can be obtained on the AppsFlyer Dashboard.
* @param {string} oneLinkId OneLink ID
*/
@Cordova({ sync: true })
setAppInviteOneLinkID(oneLinkId: string): void {}
/**
* Allowing your existing users to invite their friends and contacts as new users to your app can be a key growth factor for your app. AppsFlyer allows you to track and attribute new installs originating from user invites within your app.
* @param {AppsflyerInviteOptions} options Parameters for Invite link
* @returns {Promise<any>}
*/
@Cordova()
generateInviteLink(options: AppsflyerInviteOptions): Promise<any> {
return;
}
/**
* Use this call to track an impression use the following API call. Make sure to use the promoted App ID as it appears within the AppsFlyer dashboard.
* @param {string} appId Promoted Application ID
* @param {string} campaign Promoted Campaign
*/
@Cordova({ sync: true })
trackCrossPromotionImpression(appId: string, campaign: string): void {}
/**
* Use this call to track the click and launch the app store's app page (via Browser)
* @param {string} appId Promoted Application ID
* @param {string} campaign Promoted Campaign
* @param {Object} options Additional Parameters to track
*/
@Cordova({ sync: true })
trackAndOpenStore(appId: string, campaign: string, options: Object): void {}
}
+1 -1
View File
@@ -1,5 +1,5 @@
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
/**
* @name Autostart
@@ -1,4 +1,4 @@
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
export interface BackgroundFetchConfig {
@@ -1,9 +1,8 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
export interface BackgroundGeolocationResponse {
/**
* ID of location as stored in DB (or null)
*/
@@ -50,8 +49,8 @@ export interface BackgroundGeolocationResponse {
altitude: number;
/**
* accuracy of the altitude if available.
*/
* accuracy of the altitude if available.
*/
altitudeAccuracy: number;
/**
@@ -71,7 +70,6 @@ export interface BackgroundGeolocationResponse {
}
export interface BackgroundGeolocationConfig {
/**
* Desired accuracy in meters. Possible values [0, 10, 100, 1000]. The lower
* the number, the more power devoted to GeoLocation resulting in higher
@@ -108,19 +106,19 @@ export interface BackgroundGeolocationConfig {
*/
stopOnTerminate?: boolean;
/**
* ANDROID ONLY
* Start background service on device boot.
/**
* ANDROID ONLY
* Start background service on device boot.
*
* Defaults to false
* Defaults to false
*/
startOnBoot?: boolean;
/**
* ANDROID ONLY
/**
* ANDROID ONLY
* If false location service will not be started in foreground and no notification will be shown.
*
* Defaults to true
* Defaults to true
*/
startForeground?: boolean;
@@ -155,17 +153,17 @@ export interface BackgroundGeolocationConfig {
*/
notificationIconColor?: string;
/**
* ANDROID ONLY
* The filename of a custom notification icon. See android quirks.
* NOTE: Only available for API Level >=21.
/**
* ANDROID ONLY
* The filename of a custom notification icon. See android quirks.
* NOTE: Only available for API Level >=21.
*/
notificationIconLarge?: string;
/**
* ANDROID ONLY
* The filename of a custom notification icon. See android quirks.
* NOTE: Only available for API Level >=21.
/**
* ANDROID ONLY
* The filename of a custom notification icon. See android quirks.
* NOTE: Only available for API Level >=21.
*/
notificationIconSmall?: string;
@@ -183,50 +181,50 @@ export interface BackgroundGeolocationConfig {
*/
activityType?: string;
/**
* IOS ONLY
* Pauses location updates when app is paused
/**
* IOS ONLY
* Pauses location updates when app is paused
*
* Defaults to true
* Defaults to true
*/
pauseLocationUpdates?: boolean;
/**
* Server url where to send HTTP POST with recorded locations
* @see https://github.com/mauron85/cordova-plugin-background-geolocation#http-locations-posting
/**
* Server url where to send HTTP POST with recorded locations
* @see https://github.com/mauron85/cordova-plugin-background-geolocation#http-locations-posting
*/
url?: string;
/**
* Server url where to send fail to post locations
* @see https://github.com/mauron85/cordova-plugin-background-geolocation#http-locations-posting
/**
* Server url where to send fail to post locations
* @see https://github.com/mauron85/cordova-plugin-background-geolocation#http-locations-posting
*/
syncUrl?: string;
/**
* Specifies how many previously failed locations will be sent to server at once
* Specifies how many previously failed locations will be sent to server at once
*
* Defaults to 100
* Defaults to 100
*/
syncThreshold?: number;
/**
* Optional HTTP headers sent along in HTTP request
/**
* Optional HTTP headers sent along in HTTP request
*/
httpHeaders?: any;
/**
* IOS ONLY
* IOS ONLY
* Switch to less accurate significant changes and region monitory when in background (default)
*
* Defaults to 100
* Defaults to 100
*/
saveBatteryOnBackground?: boolean;
/**
* Limit maximum number of locations stored into db
/**
* Limit maximum number of locations stored into db
*
* Defaults to 10000
* Defaults to 10000
*/
maxLocations?: number;
@@ -310,15 +308,14 @@ export interface BackgroundGeolocationConfig {
})
@Injectable()
export class BackgroundGeolocation extends IonicNativePlugin {
/**
* Set location service provider @see https://github.com/mauron85/cordova-plugin-background-geolocation/wiki/Android-providers
/**
* Set location service provider @see https://github.com/mauron85/cordova-plugin-background-geolocation/wiki/Android-providers
*
* Possible values:
* ANDROID_DISTANCE_FILTER_PROVIDER: 0,
* ANDROID_ACTIVITY_PROVIDER: 1
* ANDROID_DISTANCE_FILTER_PROVIDER: 0,
* ANDROID_ACTIVITY_PROVIDER: 1
*
* @enum {number}
* @enum {number}
*/
LocationProvider: any = {
ANDROID_DISTANCE_FILTER_PROVIDER: 0,
@@ -326,17 +323,17 @@ export class BackgroundGeolocation extends IonicNativePlugin {
};
/**
* Desired accuracy in meters. Possible values [0, 10, 100, 1000].
* The lower the number, the more power devoted to GeoLocation resulting in higher accuracy readings.
* 1000 results in lowest power drain and least accurate readings.
* Desired accuracy in meters. Possible values [0, 10, 100, 1000].
* The lower the number, the more power devoted to GeoLocation resulting in higher accuracy readings.
* 1000 results in lowest power drain and least accurate readings.
*
* Possible values:
* HIGH: 0
* MEDIUM: 10
* LOW: 100
* HIGH: 0
* MEDIUM: 10
* LOW: 100
* PASSIVE: 1000
*
* enum {number}
* enum {number}
*/
Accuracy: any = {
HIGH: 0,
@@ -345,14 +342,14 @@ export class BackgroundGeolocation extends IonicNativePlugin {
PASSIVE: 1000
};
/**
* Used in the switchMode function
/**
* Used in the switchMode function
*
* Possible values:
* BACKGROUND: 0
* FOREGROUND: 1
* FOREGROUND: 1
*
* @enum {number}
* @enum {number}
*/
Mode: any = {
BACKGROUND: 0,
@@ -369,7 +366,11 @@ export class BackgroundGeolocation extends IonicNativePlugin {
callbackOrder: 'reverse',
observable: true
})
configure(options: BackgroundGeolocationConfig): Observable<BackgroundGeolocationResponse> { return; }
configure(
options: BackgroundGeolocationConfig
): Observable<BackgroundGeolocationResponse> {
return;
}
/**
* Turn ON the background-geolocation system.
@@ -377,14 +378,18 @@ export class BackgroundGeolocation extends IonicNativePlugin {
* @returns {Promise<any>}
*/
@Cordova()
start(): Promise<any> { return; }
start(): Promise<any> {
return;
}
/**
* Turn OFF background-tracking
* @returns {Promise<any>}
*/
@Cordova()
stop(): Promise<any> { return; }
stop(): Promise<any> {
return;
}
/**
* Inform the native plugin that you're finished, the background-task may be completed
@@ -393,7 +398,9 @@ export class BackgroundGeolocation extends IonicNativePlugin {
@Cordova({
platforms: ['iOS']
})
finish(): Promise<any> { return; }
finish(): Promise<any> {
return;
}
/**
* Force the plugin to enter "moving" or "stationary" state
@@ -403,7 +410,9 @@ export class BackgroundGeolocation extends IonicNativePlugin {
@Cordova({
platforms: ['iOS']
})
changePace(isMoving: boolean): Promise<any> { return; }
changePace(isMoving: boolean): Promise<any> {
return;
}
/**
* Setup configuration
@@ -413,7 +422,9 @@ export class BackgroundGeolocation extends IonicNativePlugin {
@Cordova({
callbackOrder: 'reverse'
})
setConfig(options: BackgroundGeolocationConfig): Promise<any> { return; }
setConfig(options: BackgroundGeolocationConfig): Promise<any> {
return;
}
/**
* Returns current stationaryLocation if available. null if not
@@ -422,7 +433,9 @@ export class BackgroundGeolocation extends IonicNativePlugin {
@Cordova({
platforms: ['iOS']
})
getStationaryLocation(): Promise<BackgroundGeolocationResponse> { return; }
getStationaryLocation(): Promise<BackgroundGeolocationResponse> {
return;
}
/**
* Add a stationary-region listener. Whenever the devices enters "stationary-mode",
@@ -432,7 +445,9 @@ export class BackgroundGeolocation extends IonicNativePlugin {
@Cordova({
platforms: ['iOS']
})
onStationary(): Promise<any> { return; }
onStationary(): Promise<any> {
return;
}
/**
* Check if location is enabled on the device
@@ -441,19 +456,21 @@ export class BackgroundGeolocation extends IonicNativePlugin {
@Cordova({
platforms: ['Android']
})
isLocationEnabled(): Promise<number> { return; }
isLocationEnabled(): Promise<number> {
return;
}
/**
* Display app settings to change permissions
*/
@Cordova({ sync: true })
showAppSettings(): void { }
showAppSettings(): void {}
/**
* Display device location settings
*/
@Cordova({ sync: true })
showLocationSettings(): void { }
showLocationSettings(): void {}
/**
* Method can be used to detect user changes in location services settings.
@@ -465,7 +482,9 @@ export class BackgroundGeolocation extends IonicNativePlugin {
platforms: ['Android'],
observable: true
})
watchLocationMode(): Observable<number> { return; }
watchLocationMode(): Observable<number> {
return;
}
/**
* Stop watching for location mode changes.
@@ -474,7 +493,9 @@ export class BackgroundGeolocation extends IonicNativePlugin {
@Cordova({
platforms: ['Android']
})
stopWatchingLocationMode(): Promise<any> { return; }
stopWatchingLocationMode(): Promise<any> {
return;
}
/**
* Method will return all stored locations.
@@ -488,14 +509,18 @@ export class BackgroundGeolocation extends IonicNativePlugin {
@Cordova({
platforms: ['Android']
})
getLocations(): Promise<any> { return; }
getLocations(): Promise<any> {
return;
}
/**
* Method will return locations, which has not been yet posted to server. NOTE: Locations does contain locationId.
/**
* Method will return locations, which has not been yet posted to server. NOTE: Locations does contain locationId.
* @returns {Promise<any>}
*/
@Cordova()
getValidLocations(): Promise<any> { return; }
getValidLocations(): Promise<any> {
return;
}
/**
* Delete stored location by given locationId.
@@ -505,7 +530,9 @@ export class BackgroundGeolocation extends IonicNativePlugin {
@Cordova({
platforms: ['Android']
})
deleteLocation(locationId: number): Promise<any> { return; }
deleteLocation(locationId: number): Promise<any> {
return;
}
/**
* Delete all stored locations.
@@ -514,34 +541,39 @@ export class BackgroundGeolocation extends IonicNativePlugin {
@Cordova({
platforms: ['Android']
})
deleteAllLocations(): Promise<any> { return; }
deleteAllLocations(): Promise<any> {
return;
}
/**
* Normally plugin will handle switching between BACKGROUND and FOREGROUND mode itself.
* Calling switchMode you can override plugin behavior and force plugin to switch into other mode.
*
* In FOREGROUND mode plugin uses iOS local manager to receive locations and behavior is affected by option.desiredAccuracy and option.distanceFilter.
* In BACKGROUND mode plugin uses significant changes and region monitoring to receive locations and uses option.stationaryRadius only.
* In BACKGROUND mode plugin uses significant changes and region monitoring to receive locations and uses option.stationaryRadius only.
*
* BackgroundGeolocation.Mode.FOREGROUND
* BackgroundGeolocation.Mode.BACKGROUND
**
* BackgroundGeolocation.Mode.BACKGROUND
*
* @param modeId {number}
* @returns {Promise<any>}
*/
@Cordova({
platforms: ['iOS']
})
switchMode(modeId: number): Promise<any> { return; }
switchMode(modeId: number): Promise<any> {
return;
}
/**
* Return all logged events. Useful for plugin debugging. Parameter limit limits number of returned entries.
* @see https://github.com/mauron85/cordova-plugin-background-geolocation/tree/v2.2.1#debugging for more information.
/**
* Return all logged events. Useful for plugin debugging. Parameter limit limits number of returned entries.
* @see https://github.com/mauron85/cordova-plugin-background-geolocation/tree/v2.2.1#debugging for more information.
*
* @param limit {number} Limits the number of entries
* @param limit {number} Limits the number of entries
* @returns {Promise<any>}
*/
@Cordova()
getLogEntries(limit: number): Promise<any> { return; }
getLogEntries(limit: number): Promise<any> {
return;
}
}
@@ -55,7 +55,7 @@ export interface BackgroundModeConfiguration {
* @description
* Cordova plugin to prevent the app from going to sleep while in background.
* Requires Cordova plugin: cordova-plugin-background-mode. For more info about plugin, visit: https://github.com/katzer/cordova-plugin-background-mode
*@usage
* @usage
* ```typescript
* import { BackgroundMode } from '@ionic-native/background-mode';
*
+1 -1
View File
@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
/**
+1 -1
View File
@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
/**
* @name Badge
@@ -68,7 +68,7 @@ export interface BarcodeScanResult {
| 'ITF'
| 'RSS14'
| 'RSS_EXPANDED'
| 'PDF417'
| 'PDF_417'
| 'AZTEC'
| 'MSI';
cancelled: boolean;
+1 -1
View File
@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
/**
* @beta
+59 -14
View File
@@ -290,25 +290,34 @@ export class BLE extends IonicNativePlugin {
}
/**
* Establish an automatic connection to a peripheral.
* Establish an automatic connection to a peripheral. The phone will automatically connect to the Bluetooth peripheral
* whenever it is in range. The autoConnect function uses callbacks instead of observables because connect and
* disconnect can each be called many times as a devices connects and disconnects.
*
* On Android you can pass a MAC address directly to autoConnect. With iOS, you need to get a device id by scanning,
* calling ble.peripheralsWithIdentifiers, or calling ble.connectedPeripheralsWithServices.
*
* @usage
* ```
* BLE.autoConnect('12:34:56:78:9A:BC').subscribe(peripheralData => {
* console.log(peripheralData);
* },
* peripheralData => {
* console.log('disconnected');
* });
* someFunction() {
* this.ble.autoConnect(deviceId, onConnected.bind(this), onDisconnected.bind(this));
* }
*
* onConnected(peripheral) {
* console.log(`Connected to ${peripheral.id}`)l
* }
*
* onDisconnected(peripheral) {
* console.log(`Disconnected from ${peripheral.id}`)l
* }
*
* ```
* @param {string} deviceId UUID or MAC address of the peripheral
* @return {Observable<any>} Returns an Observable that notifies of connect/disconnect.
* @param {function} connectCallback function that is called with peripheral data when the devices connects
* @param {function} disconnectCallback function that is called with peripheral data when the devices disconnects
*/
@Cordova({
observable: true,
clearFunction: 'disconnect',
clearWithArgs: true
})
autoConnect(deviceId: string): Observable<any> {
@Cordova({ sync: true })
autoConnect(deviceId: string, connectCallback: any, disconnectCallback: any) {
return;
}
@@ -579,4 +588,40 @@ export class BLE extends IonicNativePlugin {
readRSSI(deviceId: string): Promise<any> {
return;
}
/**
* Retrieves a list of the peripherals (containing any of the specified services)
* currently connected to the system. The peripheral list is sent to the success callback.
* iOS only
*
* @param {string[]} services List of services to discover
* @returns {Promise<any>} Returns a promise with a list of peripheral objects
*/
@Cordova()
connectedPeripheralsWithServices(services: string[]): Promise<any[]> {
return;
}
/**
* Find the connected peripherals offering the listed service UUIDs.
* iOS only
*
* @param {string[]} uuids List of peripheral UUIDs
* @returns {Promise<any>} Returns a promise with a list of peripheral objects
*/
@Cordova()
peripheralsWithIdentifiers(uuids: string[]): Promise<any[]> {
return;
}
/**
* Find the bonded devices
* Android only
*
* @returns {Promise<any>} Returns a promise with a list of peripheral objects
*/
@Cordova()
bondedDevices(): Promise<any[]> {
return;
}
}
+1 -1
View File
@@ -1,4 +1,4 @@
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
import { Injectable } from '@angular/core';
File diff suppressed because it is too large Load Diff
@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
/**
@@ -0,0 +1,235 @@
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
export interface BranchIoPromise {
$identity_id?: number;
$one_time_use?: boolean;
'+click_timestamp'?: number;
'+clicked_branch_link'?: boolean;
'+is_first_session'?: boolean;
'+match_guaranteed'?: boolean;
contentMetadata?: string;
source?: string;
'~campaign'?: string;
'~channel'?: string;
'~creation_source'?: string;
'~feature'?: string;
'~id'?: number;
'~referring_link:'?: string;
[x: string]: any;
}
export interface BranchIoAnalytics {
channel?: string;
feature?: string;
campaign?: string;
stage?: string;
tags?: string[];
[x: string]: any;
}
export interface BranchIoProperties {
contentMetadata?: {
[x: string]: any;
};
[x: string]: any;
}
export interface BranchUniversalObject {
generateShortUrl(
analytics: BranchIoAnalytics,
properties: BranchIoProperties
): Promise<any>;
registerView(): Promise<any>;
showShareSheet(
analytics: BranchIoAnalytics,
properties: BranchIoProperties,
shareText: string
): Promise<any>;
onShareSheetLaunched(callback: any): void;
onShareSheetDismissed(callback: any): void;
onLinkShareResponse(callback: any): void;
onChannelSelected(callback: any): void;
listOnSpotlight(): Promise<any>;
}
/**
* @name BranchIo
* @description
* Branch.io is an attribution service for deeplinking and invitation links
*
* @usage
* ```
* import { BranchIo } from '@ionic-native/branch-io';
*
*
* constructor(private branch: BranchIo) { }
*
* ```
*
* @interfaces
* BranchIoPromise
* BranchIoAnalytics
* BranchIoProperties
* BranchUniversalObject
*
*/
@Plugin({
pluginName: 'BranchIo',
plugin: 'branch-cordova-sdk',
pluginRef: 'Branch',
repo:
'https://github.com/BranchMetrics/cordova-ionic-phonegap-branch-deep-linking',
platforms: ['iOS', 'Android']
})
@Injectable()
export class BranchIo extends IonicNativePlugin {
/**
* for development and debugging only
* @param {boolean} enable Enable debug
* @return {Promise<any>}
*/
@Cordova({ otherPromise: true })
setDebug(enable: boolean): Promise<any> {
return;
}
/**
* Disable tracking
* @param {boolean} disable disable tracking
* @return {Promise<any>}
*/
@Cordova({ otherPromise: true })
disableTracking(disable: boolean): Promise<any> {
return;
}
/**
* Initializes Branch
* @return {Promise<any>}
*/
@Cordova({ otherPromise: true })
initSession(): Promise<BranchIoPromise> {
return;
}
/**
* Set Request Metadata
* @return {Promise<any>}
*/
@Cordova({ otherPromise: true })
setRequestMetadata(): Promise<any> {
return;
}
/**
* for better Android matching
* @param {string} linkDomain LinkDomain at branch
* @return {Promise<any>}
*/
@Cordova({ otherPromise: true })
setCookieBasedMatching(linkDomain: string): Promise<any> {
return;
}
/**
* First data
* @return {Promise<any>}
*/
@Cordova({ otherPromise: true })
getFirstReferringParams(): Promise<any> {
return;
}
/**
* Latest data
* @return {Promise<any>}
*/
@Cordova({ otherPromise: true })
getLatestReferringParams(): Promise<any> {
return;
}
/**
* Set identy of user
* @param {string} userId
* @return {Promise<any>}
*/
@Cordova({ otherPromise: true })
setIdentity(userId: string): Promise<any> {
return;
}
/**
* Logout user
* @return {Promise<any>}
*/
@Cordova({ otherPromise: true })
logout(): Promise<any> {
return;
}
/**
* Registers a custom event
* @param {string} eventName
* @param {any} metaData
* @return {Promise<any>}
*/
@Cordova({ otherPromise: true })
userCompletedAction(eventName: string, metaData: any): Promise<any> {
return;
}
/**
* Send Commerce Event
* @param {string} event
* @param {any} metaData
* @return {Promise<any>}
*/
@Cordova({ otherPromise: true })
sendCommerceEvent(event: string, metaData: any): Promise<any> {
return;
}
/**
* create a branchUniversalObj variable to reference with other Branch methods
* @param {BranchIoProperties} properties
* @return {Promise<BranchUniversalObject>}
*/
@Cordova({ otherPromise: true })
createBranchUniversalObject(
properties: BranchIoProperties
): Promise<BranchUniversalObject> {
return;
}
/**
* Load credits
* @param {any} bucket
* @return {Promise<any>}
*/
@Cordova({ otherPromise: true })
loadRewards(bucket: any): Promise<any> {
return;
}
/**
* Redeem Rewards
* @param {string} value
* @param {any} bucket
* @return {Promise<any>}
*/
@Cordova({ otherPromise: true })
redeemRewards(value: string, bucket: any): Promise<any> {
return;
}
/**
* Show credit history
* @return {Promise<any>}
*/
@Cordova({ otherPromise: true })
creditHistory(): Promise<any> {
return;
}
}
@@ -6,6 +6,11 @@ export interface CallDirectoryItem {
number: string;
}
export interface CallDirectoryLog {
plugin: string[];
extension: string[];
}
/**
* @name Call Directory
* @description
@@ -29,6 +34,10 @@ export interface CallDirectoryItem {
* .then(res: string) => console.log(res))
* .catch((error: any) => console.error(error));
* ```
*
* @Interfaces
* CallDirectoryItem
* CallDirectoryLog
*/
@Plugin({
pluginName: 'CallDirectory',
@@ -57,7 +66,7 @@ export class CallDirectory extends IonicNativePlugin {
* @return {Promise<any>} Returns a promise that resolves when numbers are added
*/
@Cordova()
addIdentification(items: Array<CallDirectoryItem>): Promise<any> {
addIdentification(items: CallDirectoryItem[]): Promise<any> {
return;
}
@@ -67,7 +76,7 @@ export class CallDirectory extends IonicNativePlugin {
* @return {Promise<any>} Returns a promise that resolves when numbers are removed
*/
@Cordova()
removeIdentification(items: Array<CallDirectoryItem>): Promise<any> {
removeIdentification(items: CallDirectoryItem[]): Promise<any> {
return;
}
@@ -85,7 +94,7 @@ export class CallDirectory extends IonicNativePlugin {
* @return {Array<CallDirectoryItem>} Returns a promise that resolves with an array of all items
*/
@Cordova()
getAllItems(): Promise<Array<CallDirectoryItem>> {
getAllItems(): Promise<CallDirectoryItem[]> {
return;
}
@@ -97,4 +106,13 @@ export class CallDirectory extends IonicNativePlugin {
reloadExtension(): Promise<string> {
return;
}
/**
* Get log from plugin and call directory extension
* @return {Promise<CallDirectoryLog>} Returns a promise with an object of log messages
*/
@Cordova()
getLog(): Promise<CallDirectoryLog> {
return;
}
}
+1 -1
View File
@@ -3,7 +3,7 @@ import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
export interface CallLogObject {
name: string;
value: string | Array<string>;
value: string | string[];
operator: '==' | '!=' | '>' | '>=' | '<' | '<=' | 'like';
}
+8 -8
View File
@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
export interface CameraOptions {
/** Picture quality in range 0-100. Default is 50 */
@@ -33,7 +33,7 @@ export interface CameraOptions {
/**
* Width in pixels to scale image. Must be used with targetHeight.
* Aspect ratio remains constant.
*/
*/
targetWidth?: number;
/**
* Height in pixels to scale image. Must be used with targetWidth.
@@ -165,7 +165,6 @@ export enum Direction {
})
@Injectable()
export class Camera extends IonicNativePlugin {
/**
* Constant for possible destination types
*/
@@ -200,7 +199,6 @@ export class Camera extends IonicNativePlugin {
ALLMEDIA: 2
};
/**
* Convenience constant
*/
@@ -213,7 +211,6 @@ export class Camera extends IonicNativePlugin {
SAVEDPHOTOALBUM: 2
};
/**
* Convenience constant
*/
@@ -243,7 +240,9 @@ export class Camera extends IonicNativePlugin {
@Cordova({
callbackOrder: 'reverse'
})
getPicture(options?: CameraOptions): Promise<any> { return; }
getPicture(options?: CameraOptions): Promise<any> {
return;
}
/**
* Remove intermediate image files that are kept in temporary storage after calling camera.getPicture.
@@ -253,6 +252,7 @@ export class Camera extends IonicNativePlugin {
@Cordova({
platforms: ['iOS']
})
cleanup(): Promise<any> { return; };
cleanup(): Promise<any> {
return;
}
}
+6 -6
View File
@@ -130,16 +130,16 @@ export interface CardIOResponse {
* @description
* @usage
* This plug-in exposes card.io credit card scanning.
*
*
* **NOTE**: If you would like to actually process a credit card charge, you might be interested in the [PayPal Cordova Plug-in](https://github.com/paypal/PayPal-Cordova-Plugin).
*
*
* Requires Cordova plugin: `card.io.cordova.mobilesdk`. For more info, please see the [Card IO plugin docs](https://github.com/card-io/card.io-Cordova-Plugin).
*
*
* Note: For use with iOS 10 + When building your app with the iOS 10 SDK +, you have to add some info to the info.plist file. This is due to increased security in iOS 10. Go to your app directory and search for the <your app name>Info.plist file. Add the following lines in the main <dict> element.
* ```xml
*<key>NSCameraUsageDescription</key>
*<string>To scan credit cards.</string>
*```
* <key>NSCameraUsageDescription</key>
* <string>To scan credit cards.</string>
* ```
* ```typescript
* import { CardIO } from '@ionic-native/card-io';
*
@@ -0,0 +1,67 @@
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
export interface ChooserResult {
data: Uint8Array;
dataURI: string;
mediaType: string;
name: string;
uri: string;
}
/**
* @name Chooser
* @description
* File chooser plugin for Cordova.
*
* The following must be added to config.xml to prevent crashing when selecting large files on Android:
* ```xml
* <platform name="android">
* <edit-config
* file="app/src/main/AndroidManifest.xml"
* mode="merge"
* target="/manifest/application">
* <application android:largeHeap="true" />
* </edit-config>
* </platform>
* ```
*
* @usage
* ```typescript
* import { Chooser } from '@ionic-native/chooser';
*
*
* constructor(private chooser: Chooser) { }
*
* ...
*
*
* this.chooser.getFile()
* .then(file => console.log(file ? file.name : 'canceled'))
* .catch((error: any) => console.error(error));
*
* ```
*
* @interfaces
* ChooserResult
*/
@Plugin({
pluginName: 'Chooser',
plugin: 'cordova-plugin-chooser',
pluginRef: 'chooser',
repo: 'https://github.com/cyph/cordova-plugin-chooser',
platforms: ['Android', 'iOS']
})
@Injectable()
export class Chooser extends IonicNativePlugin {
/**
* Displays native prompt for user to select a file.
* @param {string} [accept] Optional MIME type filter (e.g. 'image/gif,video/*').
* @return {Promise<any>} Promise containing selected file's raw binary data,
* base64-encoded data: URI, MIME type, display name, and original URI.
*/
@Cordova()
getFile(accept: string): Promise<ChooserResult | undefined> {
return;
}
}
@@ -0,0 +1,366 @@
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
export interface CCKContext {
/**
* Full identifier path from root, including the context identifier itself..
*/
identifierPath: string[];
/**
* Title of the context.
*/
title: string;
/**
* Optional. Type value for the context.
*/
type?: CCKContextType;
/**
* Optional. Topic value of the context.
*/
topic?: string;
/**
* Optional. Display order of the context.
*/
displayOrder?: number;
}
export enum CCKContextType {
none = 0,
app,
chapter,
section,
level,
page,
task,
challenge,
quiz,
exercise,
lesson,
book,
game,
document,
audio,
video
}
export enum CCKContextTopic {
math = 'math',
science = 'science',
literacyAndWriting = 'literacyAndWriting',
worldLanguage = 'worldLanguage',
socialScience = 'socialScience',
computerScienceAndEngineering = 'computerScienceAndEngineering',
artsAndMusic = 'artsAndMusic',
healthAndFitness = 'healthAndFitness'
}
export interface CCKBinaryItem {
/**
* A unique string identifier for the activity item.
*/
identifier: string;
/**
* A human readable name for the activity item.
*/
title: string;
/**
* A type value for the activity item.
*/
type: CCKBinaryType;
/**
* The value that the binary activity item takes.
*/
isCorrect: boolean;
/**
* Optional. Should the activity item be added as the primary activity item.
*/
isPrimaryActivityItem?: boolean;
}
export enum CCKBinaryType {
trueFalse = 0,
passFail,
yesNo
}
export interface CCKScoreItem {
/**
* A unique string identifier for the activity item.
*/
identifier: string;
/**
* A human readable name for the activity item.
*/
title: string;
/**
* The score earned during completion of a task.
*/
score: number;
/**
* The maximum possible score, against which the reported score should be judged.
*/
maxScore: number;
/**
* Optional. Should the activity item be added as the primary activity item.
*/
isPrimaryActivityItem?: boolean;
}
export interface CCKQuantityItem {
/**
* A unique string identifier for the activity item.
*/
identifier: string;
/**
* A human readable name for the activity item.
*/
title: string;
/**
* A quantity associated with the task.
*/
quantity: number;
/**
* Optional. Should the activity item be added as the primary activity item.
*/
isPrimaryActivityItem?: boolean;
}
/**
* @name Class Kit
* @description Plugin for using Apple's ClassKit framework.
*
*
* Prerequisites:
* Only works with Xcode 9.4 and iOS 11.4. Your Provisioning Profile must include the ClassKit capability. Read more about how to Request ClassKit Resources (https://developer.apple.com/contact/classkit/) in here: https://developer.apple.com/documentation/classkit/enabling_classkit_in_your_app.
* Also note that you cant test ClassKit behavior in Simulator because Schoolwork isnt available in that environment.
*
* @usage
* ```typescript
* import { ClassKit, CCKContext, CCKBinaryItem, CCKQuantityItem, CCKScoreItem, CCKContextTopic, CCKContextType, CCKBinaryType } from '@ionic-native/class-kit';
*
* // Init contexts defined in XML file 'CCK-contexts.xml'
* constructor( ..., private classKit: ClassKit) {
* platform.ready().then(() => {
* classKit.initContextsFromXml("classkitplugin://")
* .then(() => console.log("success"))
* .catch(e => console.log("error: ", e));
* });
* }
*
* ...
*
* // Init context with identifier path
* const context: CCKContext = {
* identifierPath: ["parent_title_one", "child_one", "child_one_correct_quiz"],
* title: "child one correct quiz",
* type: CCKContextType.exercise,
* topic: CCKContextTopic.science,
* displayOrder: 0
* };
*
* this.classKit.addContext("classkitplugin://", context)
* .then(() => console.log("success"))
* .catch(e => console.log("error: ", e));
*
*
* // Remove all contexts
* this.classKit.removeContexts()
* .then(() => console.log("success"))
* .catch(e => console.log("error: ", e));
*
*
* // Remove context with identifier path
* this.classKit.removeContext(["parent_title_one", "child_one", "child_one_correct_quiz"])
* .then(() => console.log("success"))
* .catch(e => console.log("error: ", e));
*
*
* // Begin a new activity or restart an activity for a given context
* this.classKit.beginActivity(["parent_title_one", "child_two", "child_two_quiz"], false)
* .then(() => console.log("success"))
* .catch(e => console.log("error: ", e));
*
*
* // Adds a progress range to the active given activity
* this.classKit.setProgressRange(0, 0.66)
* .then(() => console.log("success"))
* .catch(e => console.log("error: ", e));
*
*
* // Adds a progress to the active given activity
* this.classKit.setProgress(0.66)
* .then(() => console.log("success"))
* .catch(e => console.log("error: ", e));
*
*
* // Adds activity information that is true or false, pass or fail, yes or no
* const binaryItem: CCKBinaryItem = {
* identifier: "child_two_quiz_IDENTIFIER_1",
* title: "CHILD TWO QUIZ 1",
* type: CCKBinaryType.trueFalse,
* isCorrect: isCorrect,
* isPrimaryActivityItem: false
* };
*
* this.classKit.setBinaryItem(binaryItem)
* .then(() => console.log("success"))
* .catch(e => console.log("error: ", e));
*
*
* // Adds activity information that signifies a score out of a possible maximum
* const scoreItem: CCKScoreItem = {
* identifier: "total_score",
* title: "Total Score :-)",
* score: 0.66,
* maxScore: 1.0,
* isPrimaryActivityItem: true
* };
*
* this.classKit.setScoreItem(scoreItem)
* .then(() => console.log("success"))
* .catch(e => console.log("error: ", e));
*
*
* // Activity information that signifies a quantity
* const quantityItem: CCKQuantityItem = {
* identifier: "quantity_item_hints",
* title: "Hints",
* quantity: 12,
* isPrimaryActivityItem: false
* };
*
* this.classKit.setQuantityItem(quantityItem)
* .then(() => console.log("success"))
* .catch(e => console.log("error: ", e));
*
* ```
*
* @interfaces
* CCKContext
* CCKContextType
* CCKContextTopic
* CCKBinaryItem
* CCKBinaryType
* CCKScoreItem
* CCKQuantityItem
*/
@Plugin({
pluginName: 'ClassKit',
plugin: 'cordova-plugin-classkit',
pluginRef: 'CordovaClassKit',
repo: 'https://github.com/sebastianbaar/cordova-plugin-classkit.git',
platforms: ['iOS']
})
@Injectable()
export class ClassKit extends IonicNativePlugin {
/**
* Init contexts defined in XML file 'CCK-contexts.xml'
* @param {string} urlPrefix URL prefix to use for custom URLs to locate activities (deeplink).
* @return {Promise<any>}
*/
@Cordova()
initContextsFromXml(urlPrefix: string): Promise<any> {
return;
}
/**
* Init context with identifier path
* @param {string} urlPrefix URL prefix to use for custom URLs to locate activities (deeplink).
* @param {CCKContext} context Context to initialize.
* @return {Promise<any>}
*/
@Cordova()
addContext(urlPrefix: string, context: CCKContext): Promise<any> {
return;
}
/**
* Remove all contexts
* @return {Promise<any>}
*/
@Cordova()
removeContexts(): Promise<any> {
return;
}
/**
* Remove context with identifier path
* @param {string[]} identifierPath Full identifier path from root, including the context identifier itself.
* @return {Promise<any>}
*/
@Cordova()
removeContext(identifierPath: string[]): Promise<any> {
return;
}
/**
* Begin a new activity or restart an activity for a given context
* @param {string[]} identifierPath Full identifier path from root, including the context identifier itself.
* @param {boolean} asNew Should a new activity be created (or an old activity be restarted).
* @return {Promise<any>}
*/
@Cordova()
beginActivity(identifierPath: string[], asNew: boolean): Promise<any> {
return;
}
/**
* End the active activity
* @return {Promise<any>}
*/
@Cordova()
endActivity(): Promise<any> {
return;
}
/**
* Adds a progress range to the active given activity
* @param {number} fromStart The beginning of the new range to add. This should be fractional value between 0 and 1, inclusive.
* @param {number} toEnd The end of the new range to add. This should be larger than the start value and less than or equal to one.
* @return {Promise<any>}
*/
@Cordova()
setProgressRange(fromStart: number, toEnd: number): Promise<any> {
return;
}
/**
* Adds a progress to the active given activity
* @param {number} progress A measure of progress through the task, given as a fraction in the range [0, 1].
* @return {Promise<any>}
*/
@Cordova()
setProgress(progress: number): Promise<any> {
return;
}
/**
* Adds activity information that is true or false, pass or fail, yes or no
* @param {CCKBinaryItem} binaryItem The binary item to add to the activity.
* @return {Promise<any>}
*/
@Cordova()
setBinaryItem(binaryItem: CCKBinaryItem): Promise<any> {
return;
}
/**
* Adds activity information that signifies a score out of a possible maximum
* @param {CCKScoreItem} scoreItem The score item to add to the activity.
* @return {Promise<any>}
*/
@Cordova()
setScoreItem(scoreItem: CCKScoreItem): Promise<any> {
return;
}
/**
* Activity information that signifies a quantity.
* @param {CCKQuantityItem} quantityItem The quantity item to add to the activity.
* @return {Promise<any>}
*/
@Cordova()
setQuantityItem(quantityItem: CCKQuantityItem): Promise<any> {
return;
}
}
@@ -0,0 +1,592 @@
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
declare var clevertap: any;
/**
* @name CleverTap
* @description
* Cordova Plugin that wraps CleverTap SDK for Android and iOS
*
* @usage
* ```typescript
* import { CleverTap } from '@ionic-native/clevertap';
*
* constructor(private clevertap: CleverTap) { }
*
* ```
*/
@Plugin({
pluginName: 'CleverTap',
plugin: 'clevertap-cordova',
pluginRef: 'CleverTap',
repo: 'https://github.com/CleverTap/clevertap-cordova',
platforms: ['Android', 'iOS']
})
@Injectable()
export class CleverTap extends IonicNativePlugin {
/**
* notify device ready
* NOTE: in iOS use to be notified of launch Push Notification or Deep Link
* in Android use only in android phonegap build projects
* @returns {Promise<any>}
*/
@Cordova()
notifyDeviceReady(): Promise<any> {
return;
}
/*******************
* Personalization
******************/
/**
* Personalization
* Enables the Personalization API
* @returns {Promise<any>}
*/
@Cordova()
enablePersonalization(): Promise<any> {
return;
}
/**
* Enables tracking opt out for the currently active user.
* @param optOut {boolean}
* @returns {Promise<any>}
*/
@Cordova()
setOptOut(optOut: boolean): Promise<any> {
return;
}
/**
* Enables the reporting of device network related information, including IP address. This reporting is disabled by default.
* @param enable {boolean}
* @returns {Promise<any>}
*/
@Cordova()
enableDeviceNetworkInfoReporting(enable: boolean): Promise<any> {
return;
}
/*******************
* Push
******************/
/**
* Registers for push notifications
* @returns {Promise<any>}
*/
@Cordova()
registerPush(): Promise<any> {
return;
}
/**
* Sets the device's push token
* @param token {string}
* @returns {Promise<any>}
*/
@Cordova()
setPushToken(token: string): Promise<any> {
return;
}
/**
* Create Notification Channel for Android O+
* @param channelID {string}
* @param channelName {string}
* @param channelDescription {string}
* @param importance {number}
* @param showBadge {boolean}
* @returns {Promise<any>}
*/
@Cordova()
createNotificationChannel(
channelID: string,
channelName: string,
channelDescription: string,
importance: number,
showBadge: boolean
): Promise<any> {
return;
}
/**
* Create Notification Channel for Android O+
* @param channelID {string}
* @param channelName {string}
* @param channelDescription {string}
* @param importance {number}
* @param showBadge {boolean}
* @param sound {string}
* @returns {Promise<any>}
*/
@Cordova()
createNotificationChannelWithSound(
channelID: string,
channelName: string,
channelDescription: string,
importance: number,
showBadge: boolean,
sound: string
): Promise<any> {
return;
}
/**
* Create Notification Channel with Group ID for Android O+
* @param channelID {string}
* @param channelName {string}
* @param channelDescription {string}
* @param importance {number}
* @param groupId {string}
* @param showBadge {boolean}
* @param sound {string}
* @returns {Promise<any>}
*/
@Cordova()
createNotificationChannelWithGroupId(
channelID: string,
channelName: string,
channelDescription: string,
importance: number,
groupId: string,
showBadge: boolean
): Promise<any> {
return;
}
/**
* Create Notification Channel with Group ID for Android O+
* @param channelID {string}
* @param channelName {string}
* @param channelDescription {string}
* @param importance {number}
* @param groupId {string}
* @param showBadge {boolean}
* @returns {Promise<any>}
*/
@Cordova()
createNotificationChannelWithGroupIdAndSound(
channelID: string,
channelName: string,
channelDescription: string,
importance: number,
groupId: string,
showBadge: boolean,
sound: string
): Promise<any> {
return;
}
/**
* Create Notification Channel Group for Android O+
* @param groupID {string}
* @param groupName {string}
* @returns {Promise<any>}
*/
@Cordova()
createNotificationChannelGroup(
groupID: string,
groupName: string
): Promise<any> {
return;
}
/**
* Delete Notification Channel for Android O+
* @param channelID {string}
* @returns {Promise<any>}
*/
@Cordova()
deleteNotificationChannel(channelID: string): Promise<any> {
return;
}
/**
* Delete Notification Group for Android O+
* @param groupID {string}
* @returns {Promise<any>}
*/
@Cordova()
deleteNotificationChannelGroup(groupID: string): Promise<any> {
return;
}
/*******************
* Events
******************/
/**
* Record Screen View
* @param screenName {string}
* @returns {Promise<any>}
*/
@Cordova()
recordScreenView(screenName: string): Promise<any> {
return;
}
/**
* Record Event with Name
* @param eventName {string}
* @returns {Promise<any>}
*/
@Cordova()
recordEventWithName(eventName: string): Promise<any> {
return;
}
/**
* Record Event with Name and Event properties
* @param eventName {string}
* @param eventProps {any}
* @returns {Promise<any>}
*/
@Cordova()
recordEventWithNameAndProps(
eventName: string,
eventProps: any
): Promise<any> {
return;
}
/**
* Record Charged Event with Details and Items
* @param details {any} object with transaction details
* @param items {any} array of items purchased
* @returns {Promise<any>}
*/
@Cordova()
recordChargedEventWithDetailsAndItems(
details: any,
items: any
): Promise<any> {
return;
}
/**
* Get Event First Time
* @param eventName {string}
* callback returns epoch seconds or -1
* @returns {Promise<any>}
*/
@Cordova()
eventGetFirstTime(eventName: string): Promise<any> {
return;
}
/**
* Get Event Last Time
* @param eventName {string}
* callback returns epoch seconds or -1
* @returns {Promise<any>}
*/
@Cordova()
eventGetLastTime(eventName: string): Promise<any> {
return;
}
/**
* Get Event Number of Occurrences
* @param eventName {string}
* calls back with int or -1
* @returns {Promise<any>}
*/
@Cordova()
eventGetOccurrences(eventName: string): Promise<any> {
return;
}
/**
* Get Event Details
* @param eventName {string}
* calls back with object {"eventName": <string>, "firstTime":<epoch seconds>, "lastTime": <epoch seconds>, "count": <int>} or empty object
* @returns {Promise<any>}
*/
@Cordova()
eventGetDetails(eventName: string): Promise<any> {
return;
}
/**
* Get Event History
* calls back with object {"eventName1":<event1 details object>, "eventName2":<event2 details object>}
* @returns {Promise<any>}
*/
@Cordova()
getEventHistory(): Promise<any> {
return;
}
/*******************
* Profiles
******************/
/**
* Get the device location if available.
* On iOS:
* Calling this will prompt the user location permissions dialog.
* Please be sure to include the NSLocationWhenInUseUsageDescription key in your Info.plist.
* Uses desired accuracy of kCLLocationAccuracyHundredMeters.
* If you need background location updates or finer accuracy please implement your own location handling.
* On Android:
* Requires Location Permission in AndroidManifest e.g. "android.permission.ACCESS_COARSE_LOCATION"
* You can use location to pass it to CleverTap via the setLocation API
* for, among other things, more fine-grained geo-targeting and segmentation purposes.
* Note: on iOS the call to CleverTapSDK must be made on the main thread due to LocationManager restrictions, but the CleverTapSDK method itself is non-blocking.
* calls back with {lat:lat, lon:lon} lat and lon are floats
* @returns {Promise<any>}
*/
@Cordova()
getLocation(): Promise<any> {
return;
}
/**
* Set location
* @param lat {number}
* @param lon {number}
* @returns {Promise<any>}
*/
@Cordova()
setLocation(lat: number, lon: number): Promise<any> {
return;
}
/**
* Creates a separate and distinct user profile identified by one or more of Identity, Email, FBID or GPID values,
* and populated with the key-values included in the profile dictionary.
* If your app is used by multiple users, you can use this method to assign them each a unique profile to track them separately.
* If instead you wish to assign multiple Identity, Email, FBID and/or GPID values to the same user profile,
* use profileSet rather than this method.
* If none of Identity, Email, FBID or GPID is included in the profile dictionary,
* all properties values will be associated with the current user profile.
* When initially installed on this device, your app is assigned an "anonymous" profile.
* The first time you identify a user on this device (whether via onUserLogin or profileSet),
* the "anonymous" history on the device will be associated with the newly identified user.
* Then, use this method to switch between subsequent separate identified users.
* Please note that switching from one identified user to another is a costly operation
* in that the current session for the previous user is automatically closed
* and data relating to the old user removed, and a new session is started
* for the new user and data for that user refreshed via a network call to CleverTap.
* In addition, any global frequency caps are reset as part of the switch.
* @param profile {any} object
* @returns {Promise<any>}
*/
@Cordova()
onUserLogin(profile: any): Promise<any> {
return;
}
/**
* Set profile attributes
* @param profile {any} object
* @returns {Promise<any>}
*/
@Cordova()
profileSet(profile: any): Promise<any> {
return;
}
/**
* Set profile attributes from facebook user
* @param profile {any} facebook graph user object
* @returns {Promise<any>}
*/
@Cordova()
profileSetGraphUser(profile: any): Promise<any> {
return;
}
/**
* Set profile attributes rom google plus user
* @param profile {any} google plus user object
* @returns {Promise<any>}
*/
@Cordova()
profileGooglePlusUser(profile: any): Promise<any> {
return;
}
/**
* Get User Profile Property
* @param propertyName {string}
* calls back with value of propertyName or false
* @returns {Promise<any>}
*/
@Cordova()
profileGetProperty(propertyName: string): Promise<any> {
return;
}
/**
* Get a unique CleverTap identifier suitable for use with install attribution providers.
* calls back with unique CleverTap attribution identifier
* @returns {Promise<any>}
*/
@Cordova()
profileGetCleverTapAttributionIdentifier(): Promise<any> {
return;
}
/**
* Get User Profile CleverTapID
* calls back with CleverTapID or false
* @returns {Promise<any>}
*/
@Cordova()
profileGetCleverTapID(): Promise<any> {
return;
}
/**
* Remove the property specified by key from the user profile
* @param key {string}
* @returns {Promise<any>}
*/
@Cordova()
profileRemoveValueForKey(key: string): Promise<any> {
return;
}
/**
* Method for setting a multi-value user profile property
* @param key {string}
* @param values {any} array of strings
* @returns {Promise<any>}
*/
@Cordova()
profileSetMultiValues(key: string, values: any): Promise<any> {
return;
}
/**
* Method for adding a value to a multi-value user profile property
* @param key {string}
* @param value {string}
* @returns {Promise<any>}
*/
@Cordova()
profileAddMultiValue(key: string, value: string): Promise<any> {
return;
}
/**
* Method for adding values to a multi-value user profile property
* @param key {string}
* @param values {any} array of strings
* @returns {Promise<any>}
*/
@Cordova()
profileAddMultiValues(key: string, values: any): Promise<any> {
return;
}
/**
* Method for removing a value from a multi-value user profile property
* @param key {string}
* @param value {string}
* @returns {Promise<any>}
*/
@Cordova()
profileRemoveMultiValue(key: string, value: string): Promise<any> {
return;
}
/**
* Method for removing a value from a multi-value user profile property
* @param key {string}
* @param values {any} array of strings
* @returns {Promise<any>}
*/
@Cordova()
profileRemoveMultiValues(key: string, values: any): Promise<any> {
return;
}
/*******************
* Session
******************/
/**
* Get Session Elapsed Time
* calls back with seconds
* @returns {Promise<any>}
*/
@Cordova()
sessionGetTimeElapsed(): Promise<any> {
return;
}
/**
* Get Session Total Visits
* calls back with with int or -1
* @returns {Promise<any>}
*/
@Cordova()
sessionGetTotalVisits(): Promise<any> {
return;
}
/**
* Get Session Screen Count
* calls back with with int
* @returns {Promise<any>}
*/
@Cordova()
sessionGetScreenCount(): Promise<any> {
return;
}
/**
* Get Session Previous Visit Time
* calls back with with epoch seconds or -1
* @returns {Promise<any>}
*/
@Cordova()
sessionGetPreviousVisitTime(): Promise<any> {
return;
}
/**
* Get Sesssion Referrer UTM details
* object {"source": <string>, "medium": <string>, "campaign": <string>} or empty object
* @returns {Promise<any>}
*/
@Cordova()
sessionGetUTMDetails(): Promise<any> {
return;
}
/**
* Call this to manually track the utm details for an incoming install referrer
* @param source {string}
* @param medium {string}
* @param campaign {string}
* @returns {Promise<any>}
*/
@Cordova()
pushInstallReferrer(
source: string,
medium: string,
campaign: string
): Promise<any> {
return;
}
/*******************
* Developer Options
******************/
/**
* 0 is off, 1 is info, 2 is debug, default is 1
* @param level {number}
* @returns {Promise<any>}
*/
@Cordova()
setDebugLevel(level: number): Promise<any> {
return;
}
}
+11 -7
View File
@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
/**
* @name Clipboard
* @description
@@ -25,7 +25,7 @@ import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
* alert('Error: ' + reject);
* }
* );
*
*
* this.clipboard.clear();
* ```
*/
@@ -38,27 +38,31 @@ import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
})
@Injectable()
export class Clipboard extends IonicNativePlugin {
/**
* Copies the given text
* @param {string} text Text that gets copied on the system clipboard
* @returns {Promise<any>} Returns a promise after the text has been copied
*/
@Cordova()
copy(text: string): Promise<any> { return; }
copy(text: string): Promise<any> {
return;
}
/**
* Pastes the text stored in clipboard
* @returns {Promise<any>} Returns a promise after the text has been pasted
*/
@Cordova()
paste(): Promise<any> { return; }
paste(): Promise<any> {
return;
}
/**
* Clear the text stored in clipboard
* @returns {Promise<any>} Returns a promise after the text has been cleaned
*/
@Cordova()
clear(): Promise<any> { return; }
clear(): Promise<any> {
return;
}
}
+6 -12
View File
@@ -152,15 +152,9 @@ interface NativeUpdateNotification {
appVersion: string;
}
export interface Callback<T> {
(error: Error, parameter: T): void;
}
export interface SuccessCallback<T> {
(result?: T): void;
}
export interface ErrorCallback {
(error?: Error): void;
}
export type Callback<T> = (error: Error, parameter: T) => void;
export type SuccessCallback<T> = (result?: T) => void;
export type ErrorCallback = (error?: Error) => void;
interface Configuration {
appVersion: string;
@@ -177,18 +171,18 @@ declare class AcquisitionStatus {
declare class AcquisitionManager {
constructor(httpRequester: Http.Requester, configuration: Configuration);
public queryUpdateWithCurrentPackage(
queryUpdateWithCurrentPackage(
currentPackage: IPackage,
callback?: Callback<IRemotePackage | NativeUpdateNotification>
): void;
public reportStatusDeploy(
reportStatusDeploy(
pkg?: IPackage,
status?: string,
previousLabelOrAppVersion?: string,
previousDeploymentKey?: string,
callback?: Callback<void>
): void;
public reportStatusDownload(pkg: IPackage, callback?: Callback<void>): void;
reportStatusDownload(pkg: IPackage, callback?: Callback<void>): void;
}
interface CodePushCordovaPlugin {
+8 -7
View File
@@ -1,12 +1,12 @@
import {
checkAvailability,
CordovaCheck,
CordovaInstance,
getPromise,
InstanceCheck,
InstanceProperty,
IonicNativePlugin,
Plugin
Plugin,
checkAvailability,
getPromise
} from '@ionic-native/core';
declare const window: any, navigator: any;
@@ -117,8 +117,8 @@ export class Contact implements IContactProperties {
@InstanceCheck()
clone(): Contact {
let newContact: any = new Contact();
for (let prop in this) {
const newContact: any = new Contact();
for (const prop in this) {
if (prop === 'id') return;
newContact[prop] = this[prop];
}
@@ -306,6 +306,7 @@ export class ContactFindOptions implements IContactFindOptions {
* @description
* Access and manage Contacts on the device.
*
* @deprecated
* @usage
*
* ```typescript
@@ -402,8 +403,8 @@ export class Contacts extends IonicNativePlugin {
* @hidden
*/
function processContact(contact: any) {
let newContact = new Contact();
for (let prop in contact) {
const newContact = new Contact();
for (const prop in contact) {
if (typeof contact[prop] === 'function') continue;
newContact[prop] = contact[prop];
}
@@ -1,7 +1,6 @@
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
/**
* @name Couchbase Lite
* @description
@@ -66,8 +65,8 @@ import { Injectable } from '@angular/core';
* .catch((error:any) => {
* return Observable.throw(error.json() || 'Couchbase Lite error');
* }) .
* }
* createDocument(database_name:string,document){
* }
* createDocument(database_name:string,document){
* let url = this.getUrl();
* url = url + database_name;
* return this._http
@@ -84,9 +83,9 @@ import { Injectable } from '@angular/core';
* createDocument('justbe', document);
* // successful response
* { "id": "string","rev": "string","ok": true }
* updateDocument(database_name:string,document){
* updateDocument(database_name:string,document){
* let url = this.getUrl();
* url = url + database_name + '/' + document._id;
* url = url + database_name + '/' + document._id;
* return this._http
* .put(url,document)
* .map(data => { this.results = data['results'] })
@@ -121,7 +120,6 @@ import { Injectable } from '@angular/core';
})
@Injectable()
export class CouchbaseLite extends IonicNativePlugin {
/**
* Get the database url
* @return {Promise<any>} Returns a promise that resolves with the local database url
@@ -129,6 +127,7 @@ export class CouchbaseLite extends IonicNativePlugin {
@Cordova({
callbackStyle: 'node'
})
getURL(): Promise<any> { return; }
getURL(): Promise<any> {
return;
}
}
+1 -1
View File
@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
export interface CropOptions {
quality?: number;
+6 -6
View File
@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
export interface DeeplinkMatch {
@@ -45,12 +45,12 @@ export interface DeeplinkOptions {
* '/about-us': AboutPage,
* '/universal-links-test': AboutPage,
* '/products/:productId': ProductPage
* }).subscribe((match) => {
* }).subscribe(match => {
* // match.$route - the route we matched, which is the matched entry from the arguments to route()
* // match.$args - the args passed in the link
* // match.$link - the full link data
* console.log('Successfully matched route', match);
* }, (nomatch) => {
* }, nomatch => {
* // nomatch.$link - the full link data
* console.error('Got a deeplink that didn\'t match', nomatch);
* });
@@ -63,12 +63,12 @@ export interface DeeplinkOptions {
* this.deeplinks.routeWithNavController(this.navController, {
* '/about-us': AboutPage,
* '/products/:productId': ProductPage
* }).subscribe((match) => {
* }).subscribe(match => {
* // match.$route - the route we matched, which is the matched entry from the arguments to route()
* // match.$args - the args passed in the link
* // match.$link - the full link data
* console.log('Successfully matched route', match);
* }, (nomatch) => {
* }, nomatch => {
* // nomatch.$link - the full link data
* console.error('Got a deeplink that didn\'t match', nomatch);
* });
@@ -123,7 +123,7 @@ export class Deeplinks extends IonicNativePlugin {
* promise result which you can then use to navigate in the app as you see fit.
*
* @param {Object} paths
*
*
* @param {DeeplinkOptions} options
*
* @returns {Observable<DeeplinkMatch>} Returns an Observable that resolves each time a deeplink comes through, and
@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
export interface DeviceMotionAccelerationData {
+1 -1
View File
@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { CordovaProperty, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { CordovaProperty, IonicNativePlugin, Plugin } from '@ionic-native/core';
declare const window: any;
@@ -1,10 +1,5 @@
import { Injectable } from '@angular/core';
import {
Cordova,
CordovaProperty,
IonicNativePlugin,
Plugin
} from '@ionic-native/core';
import { Cordova, CordovaProperty, IonicNativePlugin, Plugin } from '@ionic-native/core';
/**
* @name Diagnostic
+1 -1
View File
@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
export interface DialogsPromptCallback {
/**
+1 -1
View File
@@ -1,4 +1,4 @@
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
/**
@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
/**
* @name iOS DocumentPicker
@@ -10,9 +10,9 @@ import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
*
* @usage
* ```typescript
* import { IOSDocumentPicker } from '@ionic-native/document-picker';
* import { DocumentPicker } from '@ionic-native/document-picker';
*
* constructor(private docPicker: IOSDocumentPicker) { }
* constructor(private docPicker: DocumentPicker) { }
*
* ...
*
@@ -1,4 +1,4 @@
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
export interface DocumentViewerOptions {
@@ -15,17 +15,17 @@ export interface EmailComposerOptions {
/**
* Email address(es) for To field
*/
to?: string | Array<string>;
to?: string | string[];
/**
* Email address(es) for CC field
*/
cc?: string | Array<string>;
cc?: string | string[];
/**
* Email address(es) for BCC field
*/
bcc?: string | Array<string>;
bcc?: string | string[];
/**
* File paths or base64 data streams
@@ -117,6 +117,30 @@ export interface EmailComposerOptions {
})
@Injectable()
export class EmailComposer extends IonicNativePlugin {
/**
* Checks if the app has a permission to access email accounts information
* @return {Promise<boolean>} returns a promise that resolves with a boolean that indicates if the permission was granted
*/
@Cordova({
successIndex: 0,
errorIndex: 2
})
hasPermission(): Promise<boolean> {
return;
}
/**
* Request permission to access email accounts information
* @return {Promise<boolean>} returns a promise that resolves with a boolean that indicates if the permission was granted
*/
@Cordova({
successIndex: 0,
errorIndex: 2
})
requestPermission(): Promise<boolean> {
return;
}
/**
* Verifies if sending emails is supported on the device.
*
@@ -146,39 +170,6 @@ export class EmailComposer extends IonicNativePlugin {
});
}
/**
* Request permission to access email accounts information
* @return {Promise<boolean>} returns a promise that resolves with a boolean that indicates if the permission was granted
*/
@Cordova({
successIndex: 0,
errorIndex: 2
})
requestPermission(): Promise<boolean> {
return;
}
/**
* Checks if the app has a permission to access email accounts information
* @return {Promise<boolean>} returns a promise that resolves with a boolean that indicates if the permission was granted
*/
@Cordova({
successIndex: 0,
errorIndex: 2
})
hasPermission(): Promise<boolean> {
return;
}
/**
* Adds a new mail app alias.
*
* @param {string} alias The alias name
* @param {string} packageName The package name
*/
@Cordova()
addAlias(alias: string, packageName: string): void {}
/**
* Displays the email composer pre-filled with data.
*
@@ -193,4 +184,13 @@ export class EmailComposer extends IonicNativePlugin {
open(options: EmailComposerOptions, scope?: any): Promise<any> {
return;
}
/**
* Adds a new mail app alias.
*
* @param {string} alias The alias name
* @param {string} packageName The package name
*/
@Cordova()
addAlias(alias: string, packageName: string): void {}
}
@@ -1,10 +1,14 @@
import { Injectable } from '@angular/core';
import { CordovaProperty, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { CordovaProperty, IonicNativePlugin, Plugin } from '@ionic-native/core';
/**
* @name Extended Device Information
* @description
* Retrieves additional device information that is not provided by other plugins
* Retrieves additional device information from the Device Hardware
* - memory
* - cpumhz
* - totalstorage
* - freestorage
*
* @usage
* ```typescript
@@ -22,23 +26,23 @@ import { CordovaProperty, Plugin, IonicNativePlugin } from '@ionic-native/core';
pluginName: 'ExtendedDeviceInformation',
plugin: 'cordova-plugin-extended-device-information',
pluginRef: 'extended-device-information',
repo: 'https://github.com/danielehrhardt/cordova-plugin-extended-device-information',
repo:
'https://github.com/danielehrhardt/cordova-plugin-extended-device-information',
platforms: ['Android']
})
@Injectable()
export class ExtendedDeviceInformation extends IonicNativePlugin {
/**
* Get the device's memory size
*/
@CordovaProperty
memory: number;
memory: string;
/**
* Get the device's CPU mhz
*/
@CordovaProperty
cpumhz: string;
cpumhz: number;
/**
* Get the total storage
@@ -46,4 +50,9 @@ export class ExtendedDeviceInformation extends IonicNativePlugin {
@CordovaProperty
totalstorage: string;
/**
* Get the total storage
*/
@CordovaProperty
freestorage: number;
}
+425
View File
@@ -0,0 +1,425 @@
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
export interface Attributes {
[index: string]: String;
}
/**
* @name Crashlytics
* @description
* API for interacting with the Crashlytics kit.
*
* https://docs.fabric.io/crashlytics/index.html
*
* @usage
* ```typescript
* import { Crashlytics } from '@ionic-native/fabric';
*
*
* constructor(private crashlytics: Crashlytics) { }
*
* ...
*
* try {
* await this.loadData();
* } catch (e) {
* this.crashlytics.addLog("Error while loading data");
* this.crashlytics.sendNonFatalCrash(e.message || e);
* }
*
* ```
*/
@Plugin({
pluginName: 'Crashlytics',
plugin: 'cordova-fabric-plugin',
pluginRef: 'window.fabric.Crashlytics',
repo: 'https://www.npmjs.com/package/cordova-fabric-plugin',
install:
'ionic cordova plugin add cordova-fabric-plugin --variable FABRIC_API_KEY=XXX --variable FABRIC_API_SECRET=xxx',
installVariables: ['FABRIC_API_KEY', 'FABRIC_API_SECRET'],
platforms: ['Android', 'iOS']
})
@Injectable()
export class Crashlytics extends IonicNativePlugin {
/**
* Add logging that will be sent with your crash data. This logging will not show up
* in the system.log and will only be visible in your Crashlytics dashboard.
* @param message {string}
*/
@Cordova({ sync: true })
addLog(message: string): void {
return;
}
/**
* Used to simulate a native platform crash (useful for testing Crashlytics logging).
*/
@Cordova({ sync: true })
sendCrash(): void {
return;
}
/**
* Used to log a non-fatal error message (Android only).
*/
@Cordova({ sync: true })
sendNonFatalCrash(message: string, stacktrace?: any): void {
return;
}
/**
* Used to record a non-fatal error message (iOS only).
*/
@Cordova({ sync: true })
recordError(message: string, code: number): void {
return;
}
/**
* Sets the user's identifier for logging to Crashlytics backend.
*/
@Cordova({ sync: true })
setUserIdentifier(userId: string): void {
return;
}
/**
* Sets the user's name for logging to Crashlytics backend.
*/
@Cordova({ sync: true })
setUserName(userName: string): void {
return;
}
/**
* Sets the user's email address for logging to Crashlytics backend.
*/
@Cordova({ sync: true })
setUserEmail(email: string): void {
return;
}
/**
* Sets a custom key/value pair for logging to Crashlytics backend.
*/
@Cordova({ sync: true })
setStringValueForKey(value: string, key: string): void {
return;
}
/**
* Sets a custom key/value pair for logging to Crashlytics backend.
*/
@Cordova({ sync: true })
setIntValueForKey(value: number, key: string): void {
return;
}
/**
* Sets a custom key/value pair for logging to Crashlytics backend.
*/
@Cordova({ sync: true })
setBoolValueForKey(value: boolean, key: string): void {
return;
}
/**
* Sets a custom key/value pair for logging to Crashlytics backend.
*/
@Cordova({ sync: true })
setFloatValueForKey(value: number, key: string): void {
return;
}
}
/**
* @name Answers
* @description
* API for interacting with the Answers kit.
*
* https://docs.fabric.io/crashlytics/index.html
*
* @usage
* ```typescript
* import { Answers } from '@ionic-native/fabric';
*
*
* constructor(private answers: Answers) { }
*
* ...
*
* this.answers.sendCustomEvent('SomeCustomEvent', { some: "attributes" })
*
* ```
*/
@Plugin({
pluginName: 'Answers',
plugin: 'cordova-fabric-plugin',
pluginRef: 'window.fabric.Answers',
repo: 'https://www.npmjs.com/package/cordova-fabric-plugin',
install:
'ionic cordova plugin add cordova-fabric-plugin --variable FABRIC_API_KEY=XXX --variable FABRIC_API_SECRET=xxx',
installVariables: ['FABRIC_API_KEY', 'FABRIC_API_SECRET'],
platforms: ['Android', 'iOS']
})
@Injectable()
export class Answers extends IonicNativePlugin {
/**
* Sends the Purchase tracking event.
*
* All parameters are optional.
*
* https://docs.fabric.io/android/answers/answers-events.html#purchase
*
* @param itemPrice The item's amount in the currency specified.
* @param currency The ISO4217 currency code.
* @param success Was the purchase completed succesfully?
* @param itemName The human-readable name for the item.
* @param itemType The category the item falls under.
* @param itemId A unique identifier used to track the item.
* @param attributes Any additional user-defined attributes to be logged.
*/
@Cordova({ sync: true })
sendPurchase(
itemPrice?: number,
currency?: string,
success?: boolean,
itemName?: string,
itemType?: string,
itemId?: string,
attributes?: Attributes
): void {
return;
}
/**
* Sends the Add To Cart tracking event.
*
* All parameters are optional.
*
* https://docs.fabric.io/android/answers/answers-events.html#add-to-cart
*
* @param itemPrice The item's amount in the currency specified.
* @param currency The ISO4217 currency code.
* @param itemName The human-readable name for the item.
* @param itemType The category the item falls under.
* @param itemId A unique identifier used to track the item.
* @param attributes Any additional user-defined attributes to be logged.
*/
@Cordova({ sync: true })
sendAddToCart(
itemPrice?: number,
currency?: string,
itemName?: string,
itemType?: string,
itemId?: string,
attributes?: Attributes
): void {
return;
}
/**
* Sends the Start Checkout tracking event.
*
* All parameters are optional.
*
* https://docs.fabric.io/android/answers/answers-events.html#start-checkout
*
* @param totalPrice The total price of all items in cart in the currency specified.
* @param currency The ISO4217 currency code.
* @param itemCount The count of items in cart.
* @param attributes Any additional user-defined attributes to be logged.
*/
@Cordova({ sync: true })
sendStartCheckout(
totalPrice?: number,
currency?: string,
itemCount?: number,
attributes?: Attributes
): void {
return;
}
/**
* Sends the Search tracking event.
*
* https://docs.fabric.io/android/answers/answers-events.html#search
*
* @param query What the user is searching for.
* @param attributes Any additional user-defined attributes to be logged.
*/
@Cordova({ sync: true })
sendSearch(query: string, attributes?: Attributes): void {
return;
}
/**
* Sends the Share tracking event.
*
* All parameters are optional.
*
* https://docs.fabric.io/android/answers/answers-events.html#share
*
* @param method The method used to share content.
* @param contentName The description of the content.
* @param contentType The type or genre of content.
* @param contentId A unique key identifying the content.
* @param attributes Any additional user-defined attributes to be logged.
*/
@Cordova({ sync: true })
sendShare(
method?: string,
contentName?: string,
contentType?: string,
contentId?: string,
attributes?: Attributes
): void {
return;
}
/**
* Sends the Rated Content tracking event.
*
* All parameters are optional.
*
* https://docs.fabric.io/android/answers/answers-events.html#rated-content
*
* @param rating An integer rating of the content.
* @param contentName The human-readable name of content.
* @param contentType The category your item falls under.
* @param contentId A unique identifier used to track the item.
* @param attributes Any additional user-defined attributes to be logged.
*/
@Cordova({ sync: true })
sendRatedContent(
rating?: number,
contentName?: string,
contentType?: string,
contentId?: string,
attributes?: Attributes
): void {
return;
}
/**
* Sends the Sign Up tracking event.
*
* All parameters are optional.
*
* https://docs.fabric.io/android/answers/answers-events.html#sign-up
*
* @param method An optional description of the sign up method (Twitter, Facebook, etc.); defaults to "Direct".
* @param success An optional flag that indicates sign up success; defaults to true.
* @param attributes Any additional user-defined attributes to be logged.
*/
@Cordova({ sync: true })
sendSignUp(
method?: string,
success?: boolean,
attributes?: Attributes
): void {
return;
}
/**
* Sends the Log In tracking event.
*
* All parameters are optional.
*
* https://docs.fabric.io/android/answers/answers-events.html#log-in
*
* @param method An optional description of the sign in method (Twitter, Facebook, etc.); defaults to "Direct".
* @param success An optional flag that indicates sign in success; defaults to true.
* @param attributes Any additional user-defined attributes to be logged.
*/
@Cordova({ sync: true })
sendLogIn(method?: string, success?: boolean, attributes?: Attributes): void {
return;
}
/**
* Sends the Invite tracking event.
*
* All parameters are optional.
*
* https://docs.fabric.io/android/answers/answers-events.html#invite
*
* @param method An optional description of the sign in method (Twitter, Facebook, etc.); defaults to "Direct".
* @param attributes Any additional user-defined attributes to be logged.
*/
@Cordova({ sync: true })
sendInvite(method?: string, attributes?: Attributes): void {
return;
}
/**
* Sends the Level Start tracking event.
*
* All parameters are optional.
*
* https://docs.fabric.io/android/answers/answers-events.html#level-start
*
* @param levelName String key describing the level.
* @param attributes Any additional user-defined attributes to be logged.
*/
@Cordova({ sync: true })
sendLevelStart(levelName?: string, attributes?: Attributes): void {
return;
}
/**
* Sends the Level End tracking event.
*
* All parameters are optional.
*
* https://docs.fabric.io/android/answers/answers-events.html#level-end
*
* @param levelName String key describing the level.
* @param score The score for this level.
* @param success Completed the level or failed trying.
* @param attributes Any additional user-defined attributes to be logged.
*/
@Cordova({ sync: true })
sendLevelEnd(
levelName?: string,
score?: number,
success?: boolean,
attributes?: Attributes
): void {
return;
}
/**
* Send the Content View tracking event.
*
* https://docs.fabric.io/android/answers/answers-events.html#content-view
*/
@Cordova({ sync: true })
sendContentView(
name: string,
type?: string,
id?: string,
attributes?: Attributes
): void {
return;
}
/**
* Shortcut for sendContentView(...) using type of "Screen".
*/
@Cordova({ sync: true })
sendScreenView(name: string, id: string, attributes?: Attributes): void {
return;
}
/**
* Send a custom tracking event with the given name.
*
* https://docs.fabric.io/android/answers/answers-events.html#custom-event
*/
@Cordova({ sync: true })
sendCustomEvent(name: string, attributes?: Attributes): void {
return;
}
}
+67 -47
View File
@@ -1,12 +1,10 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
export interface FacebookLoginResponse {
status: string;
authResponse: {
session_key: boolean;
accessToken: string;
@@ -18,9 +16,7 @@ export interface FacebookLoginResponse {
secret: string;
userID: string;
};
}
/**
@@ -114,46 +110,46 @@ export interface FacebookLoginResponse {
plugin: 'cordova-plugin-facebook4',
pluginRef: 'facebookConnectPlugin',
repo: 'https://github.com/jeduan/cordova-plugin-facebook4',
install: 'ionic cordova plugin add cordova-plugin-facebook4 --variable APP_ID="123456789" --variable APP_NAME="myApplication"',
install:
'ionic cordova plugin add cordova-plugin-facebook4 --variable APP_ID="123456789" --variable APP_NAME="myApplication"',
installVariables: ['APP_ID', 'APP_NAME'],
platforms: ['Android', 'iOS', 'Browser']
})
@Injectable()
export class Facebook extends IonicNativePlugin {
EVENTS: {
EVENT_NAME_ACTIVATED_APP: 'fb_mobile_activate_app',
EVENT_NAME_DEACTIVATED_APP: 'fb_mobile_deactivate_app',
EVENT_NAME_SESSION_INTERRUPTIONS: 'fb_mobile_app_interruptions',
EVENT_NAME_TIME_BETWEEN_SESSIONS: 'fb_mobile_time_between_sessions',
EVENT_NAME_COMPLETED_REGISTRATION: 'fb_mobile_complete_registration',
EVENT_NAME_VIEWED_CONTENT: 'fb_mobile_content_view',
EVENT_NAME_SEARCHED: 'fb_mobile_search',
EVENT_NAME_RATED: 'fb_mobile_rate',
EVENT_NAME_COMPLETED_TUTORIAL: 'fb_mobile_tutorial_completion',
EVENT_NAME_PUSH_TOKEN_OBTAINED: 'fb_mobile_obtain_push_token',
EVENT_NAME_ADDED_TO_CART: 'fb_mobile_add_to_cart',
EVENT_NAME_ADDED_TO_WISHLIST: 'fb_mobile_add_to_wishlist',
EVENT_NAME_INITIATED_CHECKOUT: 'fb_mobile_initiated_checkout',
EVENT_NAME_ADDED_PAYMENT_INFO: 'fb_mobile_add_payment_info',
EVENT_NAME_PURCHASED: 'fb_mobile_purchase',
EVENT_NAME_ACHIEVED_LEVEL: 'fb_mobile_level_achieved',
EVENT_NAME_UNLOCKED_ACHIEVEMENT: 'fb_mobile_achievement_unlocked',
EVENT_NAME_SPENT_CREDITS: 'fb_mobile_spent_credits',
EVENT_PARAM_CURRENCY: 'fb_currency',
EVENT_PARAM_REGISTRATION_METHOD: 'fb_registration_method',
EVENT_PARAM_CONTENT_TYPE: 'fb_content_type',
EVENT_PARAM_CONTENT_ID: 'fb_content_id',
EVENT_PARAM_SEARCH_STRING: 'fb_search_string',
EVENT_PARAM_SUCCESS: 'fb_success',
EVENT_PARAM_MAX_RATING_VALUE: 'fb_max_rating_value',
EVENT_PARAM_PAYMENT_INFO_AVAILABLE: 'fb_payment_info_available',
EVENT_PARAM_NUM_ITEMS: 'fb_num_items',
EVENT_PARAM_LEVEL: 'fb_level',
EVENT_PARAM_DESCRIPTION: 'fb_description',
EVENT_PARAM_SOURCE_APPLICATION: 'fb_mobile_launch_source',
EVENT_PARAM_VALUE_YES: '1',
EVENT_PARAM_VALUE_NO: '0'
EVENT_NAME_ACTIVATED_APP: 'fb_mobile_activate_app';
EVENT_NAME_DEACTIVATED_APP: 'fb_mobile_deactivate_app';
EVENT_NAME_SESSION_INTERRUPTIONS: 'fb_mobile_app_interruptions';
EVENT_NAME_TIME_BETWEEN_SESSIONS: 'fb_mobile_time_between_sessions';
EVENT_NAME_COMPLETED_REGISTRATION: 'fb_mobile_complete_registration';
EVENT_NAME_VIEWED_CONTENT: 'fb_mobile_content_view';
EVENT_NAME_SEARCHED: 'fb_mobile_search';
EVENT_NAME_RATED: 'fb_mobile_rate';
EVENT_NAME_COMPLETED_TUTORIAL: 'fb_mobile_tutorial_completion';
EVENT_NAME_PUSH_TOKEN_OBTAINED: 'fb_mobile_obtain_push_token';
EVENT_NAME_ADDED_TO_CART: 'fb_mobile_add_to_cart';
EVENT_NAME_ADDED_TO_WISHLIST: 'fb_mobile_add_to_wishlist';
EVENT_NAME_INITIATED_CHECKOUT: 'fb_mobile_initiated_checkout';
EVENT_NAME_ADDED_PAYMENT_INFO: 'fb_mobile_add_payment_info';
EVENT_NAME_PURCHASED: 'fb_mobile_purchase';
EVENT_NAME_ACHIEVED_LEVEL: 'fb_mobile_level_achieved';
EVENT_NAME_UNLOCKED_ACHIEVEMENT: 'fb_mobile_achievement_unlocked';
EVENT_NAME_SPENT_CREDITS: 'fb_mobile_spent_credits';
EVENT_PARAM_CURRENCY: 'fb_currency';
EVENT_PARAM_REGISTRATION_METHOD: 'fb_registration_method';
EVENT_PARAM_CONTENT_TYPE: 'fb_content_type';
EVENT_PARAM_CONTENT_ID: 'fb_content_id';
EVENT_PARAM_SEARCH_STRING: 'fb_search_string';
EVENT_PARAM_SUCCESS: 'fb_success';
EVENT_PARAM_MAX_RATING_VALUE: 'fb_max_rating_value';
EVENT_PARAM_PAYMENT_INFO_AVAILABLE: 'fb_payment_info_available';
EVENT_PARAM_NUM_ITEMS: 'fb_num_items';
EVENT_PARAM_LEVEL: 'fb_level';
EVENT_PARAM_DESCRIPTION: 'fb_description';
EVENT_PARAM_SOURCE_APPLICATION: 'fb_mobile_launch_source';
EVENT_PARAM_VALUE_YES: '1';
EVENT_PARAM_VALUE_NO: '0';
};
/**
@@ -178,7 +174,9 @@ export class Facebook extends IonicNativePlugin {
* @returns {Promise<FacebookLoginResponse>} Returns a Promise that resolves with a status object if login succeeds, and rejects if login fails.
*/
@Cordova()
login(permissions: string[]): Promise<FacebookLoginResponse> { return; }
login(permissions: string[]): Promise<FacebookLoginResponse> {
return;
}
/**
* Logout of Facebook.
@@ -187,7 +185,9 @@ export class Facebook extends IonicNativePlugin {
* @returns {Promise<any>} Returns a Promise that resolves on a successful logout, and rejects if logout fails.
*/
@Cordova()
logout(): Promise<any> { return; }
logout(): Promise<any> {
return;
}
/**
* Determine if a user is logged in to Facebook and has authenticated your app. There are three possible states for a user:
@@ -216,7 +216,9 @@ export class Facebook extends IonicNativePlugin {
* @returns {Promise<any>} Returns a Promise that resolves with a status, or rejects with an error
*/
@Cordova()
getLoginStatus(): Promise<any> { return; }
getLoginStatus(): Promise<any> {
return;
}
/**
* Get a Facebook access token for using Facebook services.
@@ -224,7 +226,9 @@ export class Facebook extends IonicNativePlugin {
* @returns {Promise<string>} Returns a Promise that resolves with an access token, or rejects with an error
*/
@Cordova()
getAccessToken(): Promise<string> { return; }
getAccessToken(): Promise<string> {
return;
}
/**
* Show one of various Facebook dialogs. Example of options for a Share dialog:
@@ -244,7 +248,9 @@ export class Facebook extends IonicNativePlugin {
* @returns {Promise<any>} Returns a Promise that resolves with success data, or rejects with an error
*/
@Cordova()
showDialog(options: any): Promise<any> { return; }
showDialog(options: any): Promise<any> {
return;
}
/**
* Make a call to Facebook Graph API. Can take additional permissions beyond those granted on login.
@@ -260,7 +266,9 @@ export class Facebook extends IonicNativePlugin {
* @returns {Promise<any>} Returns a Promise that resolves with the result of the request, or rejects with an error
*/
@Cordova()
api(requestPath: string, permissions: string[]): Promise<any> { return; }
api(requestPath: string, permissions: string[]): Promise<any> {
return;
}
/**
* Log an event. For more information see the Events section above.
@@ -274,7 +282,9 @@ export class Facebook extends IonicNativePlugin {
successIndex: 3,
errorIndex: 4
})
logEvent(name: string, params?: Object, valueToSum?: number): Promise<any> { return; }
logEvent(name: string, params?: Object, valueToSum?: number): Promise<any> {
return;
}
/**
* Log a purchase. For more information see the Events section above.
@@ -284,6 +294,16 @@ export class Facebook extends IonicNativePlugin {
* @returns {Promise<any>}
*/
@Cordova()
logPurchase(value: number, currency: string): Promise<any> { return; }
logPurchase(value: number, currency: string): Promise<any> {
return;
}
/**
* Returns the deferred app link
* @returns {Promise<any>}
*/
@Cordova()
getDeferredApplink(): Promise<string> {
return;
}
}
+2 -2
View File
@@ -55,9 +55,9 @@ export interface NotificationData {
*/
@Plugin({
pluginName: 'FCM',
plugin: 'cordova-plugin-fcm',
plugin: 'cordova-plugin-fcm-with-dependecy-updated',
pluginRef: 'FCMPlugin',
repo: 'https://github.com/fechanique/cordova-plugin-fcm',
repo: 'https://github.com/andrehtissot/cordova-plugin-fcm-with-dependecy-updated',
platforms: ['Android', 'iOS']
})
@Injectable()
@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
/**
* @name File Chooser
@@ -6,7 +6,7 @@ export interface IOSFilePickerPosition {
y: number;
width: number;
height: number;
};
}
/**
* @name iOS File Picker
@@ -1,10 +1,10 @@
import { Injectable } from '@angular/core';
import {
checkAvailability,
CordovaInstance,
InstanceCheck,
IonicNativePlugin,
Plugin
Plugin,
checkAvailability
} from '@ionic-native/core';
export interface FileUploadOptions {
@@ -152,7 +152,7 @@ export interface FileTransferError {
* // error
* })
* }
**
*
* download() {
* const url = 'http://www.example.com/file.pdf';
* fileTransfer.download(url, this.file.dataDirectory + 'file.pdf').then((entry) => {
+60 -80
View File
@@ -371,84 +371,52 @@ export interface FileEntry extends Entry {
/**
* When requestFileSystem() succeeds, the following callback is made.
*/
export interface FileSystemCallback {
/**
* @param filesystem The file systems to which the app is granted access.
*/
(filesystem: FileSystem): void;
}
export type FileSystemCallback = (filesystem: FileSystem) => void;
/**
* This export interface is the callback used to look up Entry objects.
*/
export interface EntryCallback {
/**
* @param entry
*/
(entry: Entry): void;
}
export type EntryCallback = (entry: Entry) => void;
/**
* This export interface is the callback used to look up FileEntry objects.
*/
export interface FileEntryCallback {
/**
* @param entry
*/
(entry: FileEntry): void;
}
export type FileEntryCallback = (entry: FileEntry) => void;
/**
* This export interface is the callback used to look up DirectoryEntry objects.
*/
export interface DirectoryEntryCallback {
/**
* @param entry
*/
(entry: DirectoryEntry): void;
}
export type DirectoryEntryCallback = (entry: DirectoryEntry) => void;
/**
* When readEntries() succeeds, the following callback is made.
*/
export interface EntriesCallback {
(entries: Entry[]): void;
}
export type EntriesCallback = (entries: Entry[]) => void;
/**
* This export interface is the callback used to look up file and directory metadata.
*/
export interface MetadataCallback {
(metadata: Metadata): void;
}
export type MetadataCallback = (metadata: Metadata) => void;
/**
* This export interface is the callback used to create a FileWriter.
*/
export interface FileWriterCallback {
(fileWriter: FileWriter): void;
}
export type FileWriterCallback = (fileWriter: FileWriter) => void;
/**
* This export interface is the callback used to obtain a File.
*/
export interface FileCallback {
(file: IFile): void;
}
export type FileCallback = (file: IFile) => void;
/**
* This export interface is the generic callback used to indicate success of an asynchronous method.
*/
export interface VoidCallback {
(): void;
}
export type VoidCallback = () => void;
/**
* When an error occurs, the following callback is made.
*/
export interface ErrorCallback {
(err: FileError): void;
}
export type ErrorCallback = (err: FileError) => void;
export interface RemoveResult {
success: boolean;
@@ -681,63 +649,75 @@ export class File extends IonicNativePlugin {
/**
* Read-only directory where the application is installed.
*/
@CordovaProperty applicationDirectory: string;
@CordovaProperty
applicationDirectory: string;
/**
* Read-only directory where the application is installed.
*/
@CordovaProperty applicationStorageDirectory: string;
@CordovaProperty
applicationStorageDirectory: string;
/**
* Where to put app-specific data files.
*/
@CordovaProperty dataDirectory: string;
@CordovaProperty
dataDirectory: string;
/**
* Cached files that should survive app restarts.
* Apps should not rely on the OS to delete files in here.
*/
@CordovaProperty cacheDirectory: string;
@CordovaProperty
cacheDirectory: string;
/**
* Android: the application space on external storage.
*/
@CordovaProperty externalApplicationStorageDirectory: string;
@CordovaProperty
externalApplicationStorageDirectory: string;
/**
* Android: Where to put app-specific data files on external storage.
*/
@CordovaProperty externalDataDirectory: string;
@CordovaProperty
externalDataDirectory: string;
/**
* Android: the application cache on external storage.
*/
@CordovaProperty externalCacheDirectory: string;
@CordovaProperty
externalCacheDirectory: string;
/**
* Android: the external storage (SD card) root.
*/
@CordovaProperty externalRootDirectory: string;
@CordovaProperty
externalRootDirectory: string;
/**
* iOS: Temp directory that the OS can clear at will.
*/
@CordovaProperty tempDirectory: string;
@CordovaProperty
tempDirectory: string;
/**
* iOS: Holds app-specific files that should be synced (e.g. to iCloud).
*/
@CordovaProperty syncedDataDirectory: string;
@CordovaProperty
syncedDataDirectory: string;
/**
* iOS: Files private to the app, but that are meaningful to other applications (e.g. Office files)
*/
@CordovaProperty documentsDirectory: string;
@CordovaProperty
documentsDirectory: string;
/**
* BlackBerry10: Files globally available to all apps
*/
@CordovaProperty sharedDirectory: string;
@CordovaProperty
sharedDirectory: string;
cordovaFileError: any = {
1: 'NOT_FOUND_ERR',
@@ -777,7 +757,7 @@ export class File extends IonicNativePlugin {
@CordovaCheck()
checkDir(path: string, dir: string): Promise<boolean> {
if (/^\//.test(dir)) {
let err = new FileError(5);
const err = new FileError(5);
err.message = 'directory cannot start with /';
return Promise.reject<any>(err);
}
@@ -805,12 +785,12 @@ export class File extends IonicNativePlugin {
replace: boolean
): Promise<DirectoryEntry> {
if (/^\//.test(dirName)) {
let err = new FileError(5);
const err = new FileError(5);
err.message = 'directory cannot start with /';
return Promise.reject<any>(err);
}
let options: Flags = {
const options: Flags = {
create: true
};
@@ -833,7 +813,7 @@ export class File extends IonicNativePlugin {
@CordovaCheck()
removeDir(path: string, dirName: string): Promise<RemoveResult> {
if (/^\//.test(dirName)) {
let err = new FileError(5);
const err = new FileError(5);
err.message = 'directory cannot start with /';
return Promise.reject<any>(err);
}
@@ -866,7 +846,7 @@ export class File extends IonicNativePlugin {
newDirName = newDirName || dirName;
if (/^\//.test(newDirName)) {
let err = new FileError(5);
const err = new FileError(5);
err.message = 'directory cannot start with /';
return Promise.reject<any>(err);
}
@@ -899,7 +879,7 @@ export class File extends IonicNativePlugin {
newDirName: string
): Promise<Entry> {
if (/^\//.test(newDirName)) {
let err = new FileError(5);
const err = new FileError(5);
err.message = 'directory cannot start with /';
return Promise.reject<any>(err);
}
@@ -925,7 +905,7 @@ export class File extends IonicNativePlugin {
@CordovaCheck()
listDir(path: string, dirName: string): Promise<Entry[]> {
if (/^\//.test(dirName)) {
let err = new FileError(5);
const err = new FileError(5);
err.message = 'directory cannot start with /';
return Promise.reject<Entry[]>(err);
}
@@ -938,7 +918,7 @@ export class File extends IonicNativePlugin {
});
})
.then(de => {
let reader = de.createReader();
const reader = de.createReader();
return this.readEntries(reader);
});
}
@@ -953,7 +933,7 @@ export class File extends IonicNativePlugin {
@CordovaCheck()
removeRecursively(path: string, dirName: string): Promise<RemoveResult> {
if (/^\//.test(dirName)) {
let err = new FileError(5);
const err = new FileError(5);
err.message = 'directory cannot start with /';
return Promise.reject<RemoveResult>(err);
}
@@ -977,7 +957,7 @@ export class File extends IonicNativePlugin {
@CordovaCheck()
checkFile(path: string, file: string): Promise<boolean> {
if (/^\//.test(file)) {
let err = new FileError(5);
const err = new FileError(5);
err.message = 'file cannot start with /';
return Promise.reject<any>(err);
}
@@ -986,7 +966,7 @@ export class File extends IonicNativePlugin {
if (fse.isFile) {
return true;
} else {
let err = new FileError(13);
const err = new FileError(13);
err.message = 'input is not a file';
return Promise.reject<boolean>(err);
}
@@ -1010,12 +990,12 @@ export class File extends IonicNativePlugin {
replace: boolean
): Promise<FileEntry> {
if (/^\//.test(fileName)) {
let err = new FileError(5);
const err = new FileError(5);
err.message = 'file-name cannot start with /';
return Promise.reject<any>(err);
}
let options: Flags = {
const options: Flags = {
create: true
};
@@ -1038,7 +1018,7 @@ export class File extends IonicNativePlugin {
@CordovaCheck()
removeFile(path: string, fileName: string): Promise<RemoveResult> {
if (/^\//.test(fileName)) {
let err = new FileError(5);
const err = new FileError(5);
err.message = 'file-name cannot start with /';
return Promise.reject<any>(err);
}
@@ -1052,8 +1032,8 @@ export class File extends IonicNativePlugin {
});
}
/** Write a new file to the desired location.
*
/**
* Write a new file to the desired location.
* @param {string} path Base FileSystem. Please refer to the iOS and Android filesystem above
* @param {string} fileName path relative to base path
* @param {string | Blob | ArrayBuffer} text content, blob or ArrayBuffer to write
@@ -1087,8 +1067,8 @@ export class File extends IonicNativePlugin {
});
}
/** Write content to FileEntry.
*
/**
* Write content to FileEntry.
* @hidden
* @param {FileEntry} fe file entry object
* @param {string | Blob} text content or blob to write
@@ -1115,8 +1095,8 @@ export class File extends IonicNativePlugin {
.then(() => fe);
}
/** Write to an existing file.
*
/**
* Write to an existing file.
* @param {string} path Base FileSystem. Please refer to the iOS and Android filesystem above
* @param {string} fileName path relative to base path
* @param {string | Blob} text content or blob to write
@@ -1147,7 +1127,7 @@ export class File extends IonicNativePlugin {
* Read file and return data as a base64 encoded data url.
* A data url is of the form:
* data: [<mediatype>][;base64],<data>
*
* @param {string} path Base FileSystem. Please refer to the iOS and Android filesystem above
* @param {string} file Name of file, relative to path.
* @returns {Promise<string>} Returns a Promise that resolves with the contents of the file as data URL or rejects with an error.
@@ -1185,7 +1165,7 @@ export class File extends IonicNativePlugin {
readAs: 'ArrayBuffer' | 'BinaryString' | 'DataURL' | 'Text'
): Promise<T> {
if (/^\//.test(file)) {
let err = new FileError(5);
const err = new FileError(5);
err.message = 'file-name cannot start with /';
return Promise.reject<any>(err);
}
@@ -1199,7 +1179,7 @@ export class File extends IonicNativePlugin {
return new Promise<T>((resolve, reject) => {
reader.onloadend = () => {
if (reader.result !== undefined || reader.result !== null) {
resolve(<T>(<any>reader.result));
resolve((reader.result as any) as T);
} else if (reader.error !== undefined || reader.error !== null) {
reject(reader.error);
} else {
@@ -1238,7 +1218,7 @@ export class File extends IonicNativePlugin {
newFileName = newFileName || fileName;
if (/^\//.test(newFileName)) {
let err = new FileError(5);
const err = new FileError(5);
err.message = 'file name cannot start with /';
return Promise.reject<any>(err);
}
@@ -1273,7 +1253,7 @@ export class File extends IonicNativePlugin {
newFileName = newFileName || fileName;
if (/^\//.test(newFileName)) {
let err = new FileError(5);
const err = new FileError(5);
err.message = 'file name cannot start with /';
return Promise.reject<any>(err);
}
@@ -1333,7 +1313,7 @@ export class File extends IonicNativePlugin {
resolveDirectoryUrl(directoryUrl: string): Promise<DirectoryEntry> {
return this.resolveLocalFilesystemUrl(directoryUrl).then(de => {
if (de.isDirectory) {
return <DirectoryEntry>de;
return de as DirectoryEntry;
} else {
const err = new FileError(13);
err.message = 'input is not a directory';
@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
export interface IDynamicLink {
@@ -21,7 +21,7 @@ export interface IDynamicLink {
* Preferences GoogleIOSClientId and GoogleAndroidClientId are used to setup dynamic links when you have an app for several platforms.
* You can find values at your GoogleService-Info.plist (key ANDROID_CLIENT_ID) and google-services.json (key client[0].oauth_client[0].client_id).
*
*config.xml:
* config.xml:
* ```xml
* <platform name="ios">
* <preference name="GoogleIOSClientId" value="..." />
@@ -38,10 +38,9 @@ export interface IDynamicLink {
* constructor(private firebaseDynamicLinks: FirebaseDynamicLinks) { }
*
* ...
*
* // Handle the logic here after opening the app with the Dynamic link
* this.firebaseDynamicLinks.onDynamicLink()
* .then((res: any) => console.log(res)) //Handle the logic here after opening the app with the Dynamic link
* .catch((error:any) => console.log(error));
* .subscribe((res: any) => console.log(res), (error:any) => console.log(error));
* ```
*
* @interfaces
+1 -1
View File
@@ -320,7 +320,7 @@ export class Firebase extends IonicNativePlugin {
})
verifyPhoneNumber(
phoneNumber: string,
timeoutDuration: number = 0
timeoutDuration = 0
): Promise<any> {
return;
}
@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
/**
* @name Flashlight
@@ -1,9 +1,9 @@
import { Injectable } from '@angular/core';
import {
checkAvailability,
CordovaInstance,
IonicNativePlugin,
Plugin
Plugin,
checkAvailability
} from '@ionic-native/core';
export interface FlurryAnalyticsOptions {
+7 -7
View File
@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin, CordovaFunctionOverride, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, CordovaFunctionOverride, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
declare const window: any;
@@ -96,7 +96,7 @@ export class Geofence extends IonicNativePlugin {
* @return {Observable<any>}
*/
@CordovaFunctionOverride()
onTransitionReceived(): Observable<any> { return; };
onTransitionReceived(): Observable<any> { return; }
/**
* Initializes the plugin. User will be prompted to allow the app to use location and notifications.
@@ -104,7 +104,7 @@ export class Geofence extends IonicNativePlugin {
* @returns {Promise<void>}
*/
@Cordova()
initialize(): Promise<void> { return; };
initialize(): Promise<void> { return; }
/**
* Adds a new geofence or array of geofences. For geofence object, see above.
@@ -112,7 +112,7 @@ export class Geofence extends IonicNativePlugin {
* @returns {Promise<void>}
*/
@Cordova()
addOrUpdate(geofences: Object | Array<Object>): Promise<void> { return; };
addOrUpdate(geofences: Object | Object[]): Promise<void> { return; }
/**
* Removes a geofence or array of geofences. `geofenceID` corresponds to one or more IDs specified when the
@@ -121,7 +121,7 @@ export class Geofence extends IonicNativePlugin {
* @returns {Promise<void>}
*/
@Cordova()
remove(geofenceId: string | Array<string>): Promise<void> { return; };
remove(geofenceId: string | string[]): Promise<void> { return; }
/**
* Removes all geofences.
@@ -129,7 +129,7 @@ export class Geofence extends IonicNativePlugin {
* @returns {Promise<void>}
*/
@Cordova()
removeAll(): Promise<void> { return; };
removeAll(): Promise<void> { return; }
/**
* Returns an array of geofences currently being monitored.
@@ -137,7 +137,7 @@ export class Geofence extends IonicNativePlugin {
* @returns {Promise<Array<string>>}
*/
@Cordova()
getWatched(): Promise<string> { return; };
getWatched(): Promise<string> { return; }
/**
* Called when the user clicks a geofence notification. iOS and Android only.
+14 -17
View File
@@ -1,11 +1,10 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
declare const navigator: any;
export interface Coordinates {
/**
* a double representing the position's latitude in decimal degrees.
*/
@@ -49,7 +48,6 @@ export interface Coordinates {
* This value can be null.
*/
speed: number;
}
export interface Geoposition {
@@ -65,7 +63,6 @@ export interface Geoposition {
}
export interface PositionError {
/**
* A code that indicates the error that occurred
*/
@@ -75,11 +72,9 @@ export interface PositionError {
* A message that can describe the error that occurred
*/
message: string;
}
export interface GeolocationOptions {
/**
* Is a positive long value indicating the maximum age in milliseconds of a
* possible cached position that is acceptable to return. If set to 0, it
@@ -107,7 +102,6 @@ export interface GeolocationOptions {
* @type {boolean}
*/
enableHighAccuracy?: boolean;
}
/**
@@ -161,13 +155,13 @@ export interface GeolocationOptions {
plugin: 'cordova-plugin-geolocation',
pluginRef: 'navigator.geolocation',
repo: 'https://github.com/apache/cordova-plugin-geolocation',
install: 'ionic cordova plugin add cordova-plugin-geolocation --variable GEOLOCATION_USAGE_DESCRIPTION="To locate you"',
install:
'ionic cordova plugin add cordova-plugin-geolocation --variable GEOLOCATION_USAGE_DESCRIPTION="To locate you"',
installVariables: ['GEOLOCATION_USAGE_DESCRIPTION'],
platforms: ['Amazon Fire OS', 'Android', 'Browser', 'iOS', 'Windows']
})
@Injectable()
export class Geolocation extends IonicNativePlugin {
/**
* Get the device's current position.
*
@@ -177,7 +171,9 @@ export class Geolocation extends IonicNativePlugin {
@Cordova({
callbackOrder: 'reverse'
})
getCurrentPosition(options?: GeolocationOptions): Promise<Geoposition> { return; }
getCurrentPosition(options?: GeolocationOptions): Promise<Geoposition> {
return;
}
/**
* Watch the current device's position. Clear the watch by unsubscribing from
@@ -198,12 +194,13 @@ export class Geolocation extends IonicNativePlugin {
* @returns {Observable<Geoposition>} Returns an Observable that notifies with the [position](https://developer.mozilla.org/en-US/docs/Web/API/Position) of the device, or errors.
*/
watchPosition(options?: GeolocationOptions): Observable<Geoposition> {
return new Observable<Geoposition>(
(observer: any) => {
let watchId = navigator.geolocation.watchPosition(observer.next.bind(observer), observer.next.bind(observer), options);
return () => navigator.geolocation.clearWatch(watchId);
}
);
return new Observable<Geoposition>((observer: any) => {
const watchId = navigator.geolocation.watchPosition(
observer.next.bind(observer),
observer.next.bind(observer),
options
);
return () => navigator.geolocation.clearWatch(watchId);
});
}
}
@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
export interface GlobalizationOptions {
formatLength: string;
@@ -134,7 +134,7 @@ export class Globalization extends IonicNativePlugin {
getDateNames(options: {
type: string;
item: string;
}): Promise<{ value: Array<string> }> {
}): Promise<{ value: string[] }> {
return;
}
@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
/**
* @name Google Analytics
@@ -20,7 +20,7 @@ import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
* this.ga.startTrackerWithId('YOUR_TRACKER_ID')
* .then(() => {
* console.log('Google analytics is ready now');
this.ga.trackView('test');
* this.ga.trackView('test');
* // Tracker is ready
* // You can now track pages or set additional information such as AppVersion or UserId
* })
@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
/**
@@ -17,7 +17,7 @@ import { Observable } from 'rxjs/Observable';
* this.googleNearby.publish('Hello')
* .then((res: any) => console.log(res))
* .catch((error: any) => console.error(error));
*
*
* this.googleNearby.subscribe()
* .then((res: any) => console.log(res))
* .catch((error: any) => console.error(error));
@@ -28,13 +28,13 @@ import { Observable } from 'rxjs/Observable';
plugin: 'cordova-plugin-google-nearby',
pluginRef: 'window.nearby',
repo: 'https://github.com/hahahannes/cordova-plugin-google-nearby',
install: 'ionic cordova plugin add cordova-plugin-google-nearby --variable API_KEY="123456789"',
install:
'ionic cordova plugin add cordova-plugin-google-nearby --variable API_KEY="123456789"',
installVariables: ['API_KEY'],
platforms: ['Android']
})
@Injectable()
export class GoogleNearby extends IonicNativePlugin {
/**
* Publish a message
* @param message {string} Message to publish
@@ -45,9 +45,9 @@ export class GoogleNearby extends IonicNativePlugin {
return;
}
/**
* Subscribe to recieve messages
* @return {Observable<any>} Returns an observable that emits recieved messages
/**
* Subscribe to receive messages
* @return {Observable<any>} Returns an observable that emits received messages
*/
@Cordova({
observable: true,
@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
export interface ScoreData {
@@ -67,10 +67,10 @@ export interface Player {
* The title of the player based on their gameplay activity. Not
* all players have this and it may change over time.
*/
title: string|null;
title: string | null;
/**
* Retrieves the URI for loading this player's icon-size profile image.
* Retrieves the URI for loading this player's icon-size profile image.
* Returns null if the player has no profile image.
*/
iconImageUrl: string;
@@ -101,12 +101,12 @@ export interface Player {
* this.googlePlayGamesServices.auth()
* .then(() => console.log('Logged in to Play Games Services'))
* .catch(e) => console.log('Error logging in Play Games Services', e);
*
*
* // Sign out of Play Games Services.
* this.googlePlayGamesServices.signOut()
* .then(() => console.log('Logged out of Play Games Services'))
* .catch(e => console.log('Error logging out of Play Games Services', e);
*
*
* // Check auth status.
* this.googlePlayGamesServices.isSignedIn()
* .then((signedIn: SignedInResponse) => {
@@ -114,38 +114,38 @@ export interface Player {
* hideLoginButton();
* }
* });
*
*
* // Fetch currently authenticated user's data.
* this.googlePlayGamesServices.showPlayer().then((data: Player) => {
* console.log('Player data', data);
* });
*
*
* // Submit a score.
* this.googlePlayGamesServices.submitScore({
* score: 100,
* leaderboardId: 'SomeLeaderboardId'
* });
*
*
* // Show the native leaderboards window.
* this.googlePlayGamesServices.showAllLeaderboards()
* .then(() => console.log('The leaderboard window is visible.'));
*
*
* // Show a signle native leaderboard window.
* this.googlePlayGamesServices.showLeaderboard({
* leaderboardId: 'SomeLeaderBoardId'
* }).then(() => console.log('The leaderboard window is visible.'));
*
*
* // Unlock an achievement.
* this.googlePlayGamesServices.unlockAchievement({
* achievementId: 'SomeAchievementId'
* }).then(() => console.log('Achievement unlocked'));
*
*
* // Incremement an achievement.
* this.googlePlayGamesServices.incrementAchievement({
* step: 1,
* achievementId: 'SomeAchievementId'
* }).then(() => console.log('Achievement incremented'));
*
*
* // Show the native achievements window.
* this.googlePlayGamesServices.showAchivements()
* .then(() => console.log('The achievements window is visible.'));
@@ -165,7 +165,7 @@ export class GooglePlayGamesServices extends IonicNativePlugin {
/**
* Initialise native Play Games Service login procedure.
*
*
* @return {Promise<any>} Returns a promise that resolves when the player
* is authenticated with Play Games Services.
*/
@@ -174,7 +174,7 @@ export class GooglePlayGamesServices extends IonicNativePlugin {
/**
* Sign out of Google Play Games Services.
*
*
* @return {Promise<any>} Returns a promise that resolve when the player
* successfully signs out.
*/
@@ -183,7 +183,7 @@ export class GooglePlayGamesServices extends IonicNativePlugin {
/**
* Check if the user is signed in.
*
*
* @return {Promise<SignedInResponse>} Returns a promise that resolves with
* the signed in response.
*/
@@ -192,8 +192,8 @@ export class GooglePlayGamesServices extends IonicNativePlugin {
/**
* Show the currently authenticated player.
*
* @return {Promise<Player>} Returns a promise that resolves when Play
*
* @return {Promise<Player>} Returns a promise that resolves when Play
* Games Services returns the authenticated player.
*/
@Cordova()
@@ -202,7 +202,7 @@ export class GooglePlayGamesServices extends IonicNativePlugin {
/**
* Submit a score to a leaderboard. You should ensure that you have a
* successful return from auth() before submitting a score.
*
*
* @param data {ScoreData} The score data you want to submit.
* @return {Promise<any>} Returns a promise that resolves when the
* score is submitted.
@@ -213,7 +213,7 @@ export class GooglePlayGamesServices extends IonicNativePlugin {
/**
* Launches the native Play Games leaderboard view controller to show all the
* leaderboards.
*
*
* @return {Promise<any>} Returns a promise that resolves when the native
* leaderboards window opens.
*/
@@ -223,7 +223,7 @@ export class GooglePlayGamesServices extends IonicNativePlugin {
/**
* Launches the native Play Games leaderboard view controll to show the
* specified leaderboard.
*
*
* @param data {LeaderboardData} The leaderboard you want to show.
* @return {Promise<any>} Returns a promise that resolves when the native
* leaderboard window opens.
@@ -233,7 +233,7 @@ export class GooglePlayGamesServices extends IonicNativePlugin {
/**
* Unlock an achievement.
*
*
* @param data {AchievementData}
* @return {Promise<any>} Returns a promise that resolves when the
* achievement is unlocked.
@@ -243,7 +243,7 @@ export class GooglePlayGamesServices extends IonicNativePlugin {
/**
* Increment an achievement.
*
*
* @param data {IncrementableAchievementData}
* @return {Promise<any>} Returns a promise that resolves when the
* achievement is incremented.
@@ -254,7 +254,7 @@ export class GooglePlayGamesServices extends IonicNativePlugin {
/**
* Lauches the native Play Games achievements view controller to show
* achievements.
*
*
* @return {Promise<any>} Returns a promise that resolves when the
* achievement window opens.
*/
@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
/**
* @name Google Plus
+2 -2
View File
@@ -1,4 +1,4 @@
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
import { Injectable } from '@angular/core';
@@ -91,7 +91,7 @@ export class Gyroscope extends IonicNativePlugin {
watch(options?: GyroscopeOptions): Observable<GyroscopeOrientation> {
return new Observable<GyroscopeOrientation>(
(observer: any) => {
let watchId = navigator.gyroscope.watch(observer.next.bind(observer), observer.next.bind(observer), options);
const watchId = navigator.gyroscope.watch(observer.next.bind(observer), observer.next.bind(observer), options);
return () => navigator.gyroscope.clearWatch(watchId);
}
);
+6 -6
View File
@@ -1,6 +1,6 @@
import { Injectable } from '@angular/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
/**
* @name hce
@@ -45,7 +45,7 @@ export class HCE extends IonicNativePlugin {
* Registers command receiver.
* @param onCommand {HCECommandEvent} The event handler.
* @param fail {Function} Error event handler.
*
*
*/
@Cordova()
registerCommandCallback(onCommand: HCECommandEvent, fail?: Function): void {
@@ -55,7 +55,7 @@ export class HCE extends IonicNativePlugin {
* Registers Deactivated receiver.
* @param ok {HCEDeactivatedEvent} Success event handler.
* @param fail {Function} Error event handler.
*
*
*/
@Cordova()
registerDeactivatedCallback(ok: HCEDeactivatedEvent, fail?: Function): void {
@@ -68,7 +68,7 @@ export class HCE extends IonicNativePlugin {
* @param response {Uint8Array} Response
* @param success {string} Success Callback.
* @param success {string} Failure Callback.
*
*
*/
@Cordova()
sendResponse(response: Uint8Array, success?: Function, failure?: Function): void {
@@ -76,5 +76,5 @@ export class HCE extends IonicNativePlugin {
}
}
export interface HCECommandEvent { (command: Uint8Array): void; }
export interface HCEDeactivatedEvent { (command: number): void; }
export type HCECommandEvent = (command: Uint8Array) => void;
export type HCEDeactivatedEvent = (command: number) => void;
@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
/**
* @name Header Color
+164 -171
View File
@@ -1,127 +1,81 @@
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
export interface HealthKitOptions {
/**
* HKWorkoutActivityType constant
* Read more here: https://developer.apple.com/library/ios/documentation/HealthKit/Reference/HKWorkout_Class/#//apple_ref/c/tdef/HKWorkoutActivityType
*/
* HKWorkoutActivityType constant
* Read more here: https://developer.apple.com/library/ios/documentation/HealthKit/Reference/HKWorkout_Class/#//apple_ref/c/tdef/HKWorkoutActivityType
*/
activityType?: string;
/**
* 'hour', 'week', 'year' or 'day', default 'day'
*/
* 'hour', 'week', 'year' or 'day', default 'day'
*/
aggregation?: string;
/**
*
*/
amount?: number;
/**
* specifies if the data returned by querySampleType() should be sorted by
* end date in ascending order, default is false
*/
* specifies if the data returned by querySampleType() should be sorted by
* end date in ascending order, default is false
*/
ascending?: boolean;
/**
*
*/
correlationType?: string;
/**
*
*/
date?: any;
/**
*
*/
distance?: number;
/**
* probably useful with the former param
*/
* probably useful with the former param
*/
distanceUnit?: string;
/**
* in seconds, optional, use either this or endDate
*/
* in seconds, optional, use either this or endDate
*/
duration?: number;
/**
*
*/
endDate?: any;
/**
*
*/
energy?: number;
/**
* J|cal|kcal
*/
* J|cal|kcal
*/
energyUnit?: string;
/**
*
*/
extraData?: any;
/**
* limits the maximum number of records returned by querySampleType()
*/
* limits the maximum number of records returned by querySampleType()
*/
limit?: number;
/**
*
*/
metadata?: any;
/**
*
*/
quantityType?: string;
/**
*
*/
type?: string;
readTypes?: any;
/**
*
*/
requestWritePermission?: boolean;
/**
*
*/
samples?: any;
/**
*
*/
sampleType?: string;
/**
*
*/
startDate?: any;
/**
* m|cm|mm|in|ft
*/
* m|cm|mm|in|ft
*/
unit?: string;
/**
*
*/
requestReadPermission?: boolean;
/**
*
*/
writeTypes?: any;
}
@@ -153,168 +107,207 @@ export interface HealthKitOptions {
})
@Injectable()
export class HealthKit extends IonicNativePlugin {
/**
* Check if HealthKit is supported (iOS8+, not on iPad)
* @returns {Promise<any>}
*/
@Cordova()
available(): Promise<any> {
return;
}
/**
* Check if HealthKit is supported (iOS8+, not on iPad)
* @returns {Promise<any>}
*/
* Pass in a type and get back on of undetermined | denied | authorized
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
@Cordova()
available(): Promise<any> { return; }
checkAuthStatus(options: HealthKitOptions): Promise<any> {
return;
}
/**
* Pass in a type and get back on of undetermined | denied | authorized
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
* Ask some or all permissions up front
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
@Cordova()
checkAuthStatus(options: HealthKitOptions): Promise<any> { return; }
requestAuthorization(options: HealthKitOptions): Promise<any> {
return;
}
/**
* Ask some or all permissions up front
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
* Formatted as yyyy-MM-dd
* @returns {Promise<any>}
*/
@Cordova()
requestAuthorization(options: HealthKitOptions): Promise<any> { return; }
readDateOfBirth(): Promise<any> {
return;
}
/**
* Formatted as yyyy-MM-dd
* @returns {Promise<any>}
*/
* Output = male|female|other|unknown
* @returns {Promise<any>}
*/
@Cordova()
readDateOfBirth(): Promise<any> { return; }
readGender(): Promise<any> {
return;
}
/**
* Output = male|female|other|unknown
* @returns {Promise<any>}
*/
* Output = A+|A-|B+|B-|AB+|AB-|O+|O-|unknown
* @returns {Promise<any>}
*/
@Cordova()
readGender(): Promise<any> { return; }
readBloodType(): Promise<any> {
return;
}
/**
* Output = A+|A-|B+|B-|AB+|AB-|O+|O-|unknown
* @returns {Promise<any>}
*/
* Output = I|II|III|IV|V|VI|unknown
* @returns {Promise<any>}
*/
@Cordova()
readBloodType(): Promise<any> { return; }
readFitzpatrickSkinType(): Promise<any> {
return;
}
/**
* Output = I|II|III|IV|V|VI|unknown
* @returns {Promise<any>}
*/
* Pass in unit (g=gram, kg=kilogram, oz=ounce, lb=pound, st=stone) and amount
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
@Cordova()
readFitzpatrickSkinType(): Promise<any> { return; }
saveWeight(options: HealthKitOptions): Promise<any> {
return;
}
/**
* Pass in unit (g=gram, kg=kilogram, oz=ounce, lb=pound, st=stone) and amount
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
* Pass in unit (g=gram, kg=kilogram, oz=ounce, lb=pound, st=stone)
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
@Cordova()
saveWeight(options: HealthKitOptions): Promise<any> { return; }
readWeight(options: HealthKitOptions): Promise<any> {
return;
}
/**
* Pass in unit (g=gram, kg=kilogram, oz=ounce, lb=pound, st=stone)
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
* Pass in unit (mm=millimeter, cm=centimeter, m=meter, in=inch, ft=foot) and amount
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
@Cordova()
readWeight(options: HealthKitOptions): Promise<any> { return; }
saveHeight(options: HealthKitOptions): Promise<any> {
return;
}
/**
* Pass in unit (mm=millimeter, cm=centimeter, m=meter, in=inch, ft=foot) and amount
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
* Pass in unit (mm=millimeter, cm=centimeter, m=meter, in=inch, ft=foot)
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
@Cordova()
saveHeight(options: HealthKitOptions): Promise<any> { return; }
readHeight(options: HealthKitOptions): Promise<any> {
return;
}
/**
* Pass in unit (mm=millimeter, cm=centimeter, m=meter, in=inch, ft=foot)
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
* no params yet, so this will return all workouts ever of any type
* @returns {Promise<any>}
*/
@Cordova()
readHeight(options: HealthKitOptions): Promise<any> { return; }
findWorkouts(): Promise<any> {
return;
}
/**
* no params yet, so this will return all workouts ever of any type
* @returns {Promise<any>}
*/
*
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
@Cordova()
findWorkouts(): Promise<any> { return; }
saveWorkout(options: HealthKitOptions): Promise<any> {
return;
}
/**
*
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
*
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
@Cordova()
saveWorkout(options: HealthKitOptions): Promise<any> { return; }
querySampleType(options: HealthKitOptions): Promise<any> {
return;
}
/**
*
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
*
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
@Cordova()
querySampleType(options: HealthKitOptions): Promise<any> { return; }
querySampleTypeAggregated(options: HealthKitOptions): Promise<any> {
return;
}
/**
*
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
*
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
@Cordova()
querySampleTypeAggregated(options: HealthKitOptions): Promise<any> { return; }
deleteSamples(options: HealthKitOptions): Promise<any> {
return;
}
/**
*
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
*
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
@Cordova()
deleteSamples(options: HealthKitOptions): Promise<any> { return; }
monitorSampleType(options: HealthKitOptions): Promise<any> {
return;
}
/**
*
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
*
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
@Cordova()
monitorSampleType(options: HealthKitOptions): Promise<any> { return; }
sumQuantityType(options: HealthKitOptions): Promise<any> {
return;
}
/**
*
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
*
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
@Cordova()
sumQuantityType(options: HealthKitOptions): Promise<any> { return; }
saveQuantitySample(options: HealthKitOptions): Promise<any> {
return;
}
/**
*
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
*
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
@Cordova()
saveQuantitySample(options: HealthKitOptions): Promise<any> { return; }
saveCorrelation(options: HealthKitOptions): Promise<any> {
return;
}
/**
*
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
*
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
@Cordova()
saveCorrelation(options: HealthKitOptions): Promise<any> { return; }
/**
*
* @param options {HealthKitOptions}
* @returns {Promise<any>}
*/
@Cordova()
queryCorrelationType(options: HealthKitOptions): Promise<any> { return; }
queryCorrelationType(options: HealthKitOptions): Promise<any> {
return;
}
}
+28 -14
View File
@@ -1,4 +1,4 @@
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
/**
@@ -6,13 +6,13 @@ import { Injectable } from '@angular/core';
*/
export interface HealthDataType {
/**
* Read only date types (see https://github.com/dariosalvi78/cordova-plugin-health#supported-data-types)
*/
* Read only date types (see https://github.com/dariosalvi78/cordova-plugin-health#supported-data-types)
*/
read?: string[];
/**
* Write only date types (see https://github.com/dariosalvi78/cordova-plugin-health#supported-data-types)
*/
* Write only date types (see https://github.com/dariosalvi78/cordova-plugin-health#supported-data-types)
*/
write?: string[];
}
@@ -207,7 +207,6 @@ export interface HealthData {
})
@Injectable()
export class Health extends IonicNativePlugin {
/**
* Tells if either Google Fit or HealthKit are available.
*
@@ -216,7 +215,9 @@ export class Health extends IonicNativePlugin {
@Cordova({
callbackOrder: 'reverse'
})
isAvailable(): Promise<boolean> { return; }
isAvailable(): Promise<boolean> {
return;
}
/**
* Checks if recent Google Play Services and Google Fit are installed. If the play services are not installed,
@@ -232,7 +233,9 @@ export class Health extends IonicNativePlugin {
@Cordova({
callbackOrder: 'reverse'
})
promptInstallFit(): Promise<any> { return; }
promptInstallFit(): Promise<any> {
return;
}
/**
* Requests read and/or write access to a set of data types. It is recommendable to always explain why the app
@@ -254,7 +257,9 @@ export class Health extends IonicNativePlugin {
* @return {Promise<any>}
*/
@Cordova()
requestAuthorization(datatypes: Array<string | HealthDataType>): Promise<any> { return; }
requestAuthorization(datatypes: (string | HealthDataType)[]): Promise<any> {
return;
}
/**
* Check if the app has authorization to read/write a set of datatypes.
@@ -268,7 +273,9 @@ export class Health extends IonicNativePlugin {
* @return {Promise<boolean>} Returns a promise that resolves with a boolean that indicates the authorization status
*/
@Cordova()
isAuthorized(datatypes: Array<string | HealthDataType>): Promise<boolean> { return; }
isAuthorized(datatypes: (string | HealthDataType)[]): Promise<boolean> {
return;
}
/**
* Gets all the data points of a certain data type within a certain time window.
@@ -302,7 +309,9 @@ export class Health extends IonicNativePlugin {
* @return {Promise<HealthData[]>}
*/
@Cordova()
query(queryOptions: HealthQueryOptions): Promise<HealthData[]> { return; }
query(queryOptions: HealthQueryOptions): Promise<HealthData[]> {
return;
}
/**
* Gets aggregated data in a certain time window. Usually the sum is returned for the given quantity.
@@ -326,7 +335,11 @@ export class Health extends IonicNativePlugin {
* @return {Promise<HealthData[]>}
*/
@Cordova()
queryAggregated(queryOptionsAggregated: HealthQueryOptionsAggregated): Promise<HealthData[]> { return; }
queryAggregated(
queryOptionsAggregated: HealthQueryOptionsAggregated
): Promise<HealthData[]> {
return;
}
/**
* Stores a data point.
@@ -343,6 +356,7 @@ export class Health extends IonicNativePlugin {
* @return {Promise<any>}
*/
@Cordova()
store(storeOptions: HealthStoreOptions): Promise<any> { return; }
store(storeOptions: HealthStoreOptions): Promise<any> {
return;
}
}
@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin, IonicNativePlugin, CordovaCheck } from '@ionic-native/core';
import { Cordova, CordovaCheck, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
declare var chcp: any;
@@ -85,7 +85,7 @@ export interface HotCodePushEventData {
details?: {
error?: HotCodePushError;
};
};
}
/**
* @name Hot Code Push
+5 -5
View File
@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
export interface HotspotConnectionInfo {
@@ -203,7 +203,7 @@ export class Hotspot extends IonicNativePlugin {
* @returns {Promise<Array<HotspotDevice>>}
*/
@Cordova()
getAllHotspotDevices(): Promise<Array<HotspotDevice>> { return; }
getAllHotspotDevices(): Promise<HotspotDevice[]> { return; }
/**
* Connect to a WiFi network
@@ -235,7 +235,7 @@ export class Hotspot extends IonicNativePlugin {
* Promise that connection to the WiFi network was successfull, rejected if unsuccessful
*/
@Cordova()
connectToWifiAuthEncrypt(ssid: string, password: string, authentication: string, encryption: Array<string>): Promise<void> { return; }
connectToWifiAuthEncrypt(ssid: string, password: string, authentication: string, encryption: string[]): Promise<void> { return; }
/**
* Add a WiFi network
@@ -299,13 +299,13 @@ export class Hotspot extends IonicNativePlugin {
* @returns {Promise<Array<HotspotNetwork>>}
*/
@Cordova()
scanWifi(): Promise<Array<HotspotNetwork>> { return; }
scanWifi(): Promise<HotspotNetwork[]> { return; }
/**
* @returns {Promise<Array<HotspotNetwork>>}
*/
@Cordova()
scanWifiByLevel(): Promise<Array<HotspotNetwork>> { return; }
scanWifiByLevel(): Promise<HotspotNetwork[]> { return; }
/**
* @returns {Promise<any>}
+19 -26
View File
@@ -74,7 +74,7 @@ export class HTTP extends IonicNativePlugin {
* This returns an object representing a basic HTTP Authorization header of the form.
* @param username {string} Username
* @param password {string} Password
* @returns {Object} an object representing a basic HTTP Authorization header of the form {'Authorization': 'Basic base64encodedusernameandpassword'}
* @returns {Object} an object representing a basic HTTP Authorization header of the form {'Authorization': 'Basic base64EncodedUsernameAndPassword'}
*/
@Cordova({ sync: true })
getBasicAuthHeader(
@@ -154,7 +154,9 @@ export class HTTP extends IonicNativePlugin {
* @param url {string}
*/
@Cordova({ sync: true })
getCookieString(url: string): string { return; }
getCookieString(url: string): string {
return;
}
/**
* Get global request timeout value in seconds.
@@ -173,26 +175,15 @@ export class HTTP extends IonicNativePlugin {
setRequestTimeout(timeout: number): void {}
/**
* Enable or disable SSL Pinning. This defaults to false.
*
* To use SSL pinning you must include at least one .cer SSL certificate in your app project. You can pin to your server certificate or to one of the issuing CA certificates. For ios include your certificate in the root level of your bundle (just add the .cer file to your project/target at the root level). For android include your certificate in your project's platforms/android/assets folder. In both cases all .cer files found will be loaded automatically. If you only have a .pem certificate see this [stackoverflow answer](https://stackoverflow.com/questions/16583428/how-to-convert-an-ssl-certificate-in-linux/16583429#16583429). You want to convert it to a DER encoded certificate with a .cer extension.
*
* As an alternative, you can store your .cer files in the www/certificates folder.
* @param enable {boolean} Set to true to enable
* @returns {Promise<void>} returns a promise that will resolve on success, and reject on failure
* Set SSL Cert handling mode, being one of the following values
* default: default SSL cert handling using system's CA certs
* nocheck: disable SSL cert checking, trusting all certs (meant to be used only for testing purposes)
* pinned: trust only provided certs
* @see https://github.com/silkimen/cordova-plugin-advanced-http#setsslcertmode
* @param {'default' | 'nocheck' | 'pinned'} mode SSL Cert handling mode
*/
@Cordova()
enableSSLPinning(enable: boolean): Promise<void> {
return;
}
/**
* Accept all SSL certificates. Or disabled accepting all certificates. Defaults to false.
* @param accept {boolean} Set to true to accept
* @returns {Promise<void>} returns a promise that will resolve on success, and reject on failure
*/
@Cordova()
acceptAllCerts(accept: boolean): Promise<void> {
setSSLCertMode(mode: 'default' | 'nocheck' | 'pinned'): Promise<void> {
return;
}
@@ -202,7 +193,9 @@ export class HTTP extends IonicNativePlugin {
* @returns {Promise<void>} returns a promise that will resolve on success, and reject on failure
*/
@Cordova()
disableRedirect(disable: boolean): Promise<void> { return; }
disableRedirect(disable: boolean): Promise<void> {
return;
}
/**
* Make a POST request
@@ -283,7 +276,7 @@ export class HTTP extends IonicNativePlugin {
* @param headers {Object} The headers to set for this request
* @param filePath {string} The local path of the file to upload
* @param name {string} The name of the parameter to pass the file along as
* @returns {Promise<HTTPResponse>} returns a promise that resolve on success, and reject on failure
* @returns {Promise<any>} returns a FileEntry promise that resolve on success, and reject on failure
*/
@Cordova()
uploadFile(
@@ -292,7 +285,7 @@ export class HTTP extends IonicNativePlugin {
headers: any,
filePath: string,
name: string
): Promise<HTTPResponse> {
): Promise<any> {
return;
}
@@ -301,8 +294,8 @@ export class HTTP extends IonicNativePlugin {
* @param url {string} The url to send the request to
* @param body {Object} The body of the request
* @param headers {Object} The headers to set for this request
* @param filePath {string} The path to donwload the file to, including the file name.
* @returns {Promise<HTTPResponse>} returns a promise that resolve on success, and reject on failure
* @param filePath {string} The path to download the file to, including the file name.
* @returns {Promise<any>} returns a FileEntry promise that resolve on success, and reject on failure
*/
@Cordova()
downloadFile(
@@ -310,7 +303,7 @@ export class HTTP extends IonicNativePlugin {
body: any,
headers: any,
filePath: string
): Promise<HTTPResponse> {
): Promise<any> {
return;
}
}
+11 -7
View File
@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
export interface HttpdOptions {
@@ -56,7 +56,6 @@ export interface HttpdOptions {
})
@Injectable()
export class Httpd extends IonicNativePlugin {
/**
* Starts a web server.
* @param options {HttpdOptions}
@@ -66,20 +65,25 @@ export class Httpd extends IonicNativePlugin {
observable: true,
clearFunction: 'stopServer'
})
startServer(options?: HttpdOptions): Observable<string> { return; }
startServer(options?: HttpdOptions): Observable<string> {
return;
}
/**
* Gets the URL of the running server
* @returns {Promise<string>} Returns a promise that resolves with the URL of the web server.
*/
@Cordova()
getUrl(): Promise<string> { return; }
getUrl(): Promise<string> {
return;
}
/**
* Get the local path of the running webserver
* @returns {Promise<string>} Returns a promise that resolves with the local path of the web server.
*/
*/
@Cordova()
getLocalPath(): Promise<string> { return; }
getLocalPath(): Promise<string> {
return;
}
}
@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
/**
* @beta
@@ -56,8 +56,8 @@ import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
* this.hyperTrack.stopTracking().then(success => {
* // Handle success (String). Should be "OK".
* }, error => {});
*
* }, error => {});*
*
* }, error => {});*
* ```
*/
@Plugin({
+12 -12
View File
@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin, CordovaCheck, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, CordovaCheck, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
declare const cordova: any;
@@ -266,7 +266,7 @@ export interface IBeaconDelegate {
*
* this.ibeacon.startMonitoringForRegion(beaconRegion)
* .then(
* () => console.log('Native layer recieved the request to monitoring'),
* () => console.log('Native layer received the request to monitoring'),
* error => console.error('Native layer failed to begin monitoring: ', error)
* );
* ```
@@ -296,12 +296,12 @@ export class IBeacon extends IonicNativePlugin {
*/
@CordovaCheck({ sync: true })
Delegate(): IBeaconDelegate {
let delegate = new cordova.plugins.locationManager.Delegate();
const delegate = new cordova.plugins.locationManager.Delegate();
delegate.didChangeAuthorizationStatus = (pluginResult?: IBeaconPluginResult) => {
return new Observable<IBeaconPluginResult>(
(observer: any) => {
let cb = (data: IBeaconPluginResult) => observer.next(data);
const cb = (data: IBeaconPluginResult) => observer.next(data);
return delegate.didChangeAuthorizationStatus = cb;
}
);
@@ -310,7 +310,7 @@ export class IBeacon extends IonicNativePlugin {
delegate.didDetermineStateForRegion = (pluginResult?: IBeaconPluginResult) => {
return new Observable<IBeaconPluginResult>(
(observer: any) => {
let cb = (data: IBeaconPluginResult) => observer.next(data);
const cb = (data: IBeaconPluginResult) => observer.next(data);
return delegate.didDetermineStateForRegion = cb;
}
);
@@ -319,7 +319,7 @@ export class IBeacon extends IonicNativePlugin {
delegate.didEnterRegion = (pluginResult?: IBeaconPluginResult) => {
return new Observable<IBeaconPluginResult>(
(observer: any) => {
let cb = (data: IBeaconPluginResult) => observer.next(data);
const cb = (data: IBeaconPluginResult) => observer.next(data);
return delegate.didEnterRegion = cb;
}
);
@@ -328,7 +328,7 @@ export class IBeacon extends IonicNativePlugin {
delegate.didExitRegion = (pluginResult?: IBeaconPluginResult) => {
return new Observable<IBeaconPluginResult>(
(observer: any) => {
let cb = (data: IBeaconPluginResult) => observer.next(data);
const cb = (data: IBeaconPluginResult) => observer.next(data);
return delegate.didExitRegion = cb;
}
);
@@ -337,7 +337,7 @@ export class IBeacon extends IonicNativePlugin {
delegate.didRangeBeaconsInRegion = (pluginResult?: IBeaconPluginResult) => {
return new Observable<IBeaconPluginResult>(
(observer: any) => {
let cb = (data: IBeaconPluginResult) => observer.next(data);
const cb = (data: IBeaconPluginResult) => observer.next(data);
return delegate.didRangeBeaconsInRegion = cb;
}
);
@@ -346,7 +346,7 @@ export class IBeacon extends IonicNativePlugin {
delegate.didStartMonitoringForRegion = (pluginResult?: IBeaconPluginResult) => {
return new Observable<IBeaconPluginResult>(
(observer: any) => {
let cb = (data: IBeaconPluginResult) => observer.next(data);
const cb = (data: IBeaconPluginResult) => observer.next(data);
return delegate.didStartMonitoringForRegion = cb;
}
);
@@ -355,7 +355,7 @@ export class IBeacon extends IonicNativePlugin {
delegate.monitoringDidFailForRegionWithError = (pluginResult?: IBeaconPluginResult) => {
return new Observable<IBeaconPluginResult>(
(observer: any) => {
let cb = (data: IBeaconPluginResult) => observer.next(data);
const cb = (data: IBeaconPluginResult) => observer.next(data);
return delegate.monitoringDidFailForRegionWithError = cb;
}
);
@@ -364,7 +364,7 @@ export class IBeacon extends IonicNativePlugin {
delegate.peripheralManagerDidStartAdvertising = (pluginResult?: IBeaconPluginResult) => {
return new Observable<IBeaconPluginResult>(
(observer: any) => {
let cb = (data: IBeaconPluginResult) => observer.next(data);
const cb = (data: IBeaconPluginResult) => observer.next(data);
return delegate.peripheralManagerDidStartAdvertising = cb;
}
);
@@ -373,7 +373,7 @@ export class IBeacon extends IonicNativePlugin {
delegate.peripheralManagerDidUpdateState = (pluginResult?: IBeaconPluginResult) => {
return new Observable<IBeaconPluginResult>(
(observer: any) => {
let cb = (data: IBeaconPluginResult) => observer.next(data);
const cb = (data: IBeaconPluginResult) => observer.next(data);
return delegate.peripheralManagerDidUpdateState = cb;
}
);
@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
export interface ImagePickerOptions {
@@ -1,42 +1,64 @@
import { Injectable } from '@angular/core';
import { Plugin, CordovaInstance, InstanceCheck, IonicNativePlugin } from '@ionic-native/core';
import {
CordovaInstance,
InstanceCheck,
IonicNativePlugin,
Plugin
} from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
import { Observer } from 'rxjs/Observer';
declare const cordova: Cordova & { InAppBrowser: any; };
declare const cordova: Cordova & { InAppBrowser: any };
export interface InAppBrowserOptions {
/** Set to yes or no to turn the InAppBrowser's location bar on or off. */
location?: 'yes' | 'no';
/** Set to yes to create the browser and load the page, but not show it. The loadstop event fires when loading is complete.
/* Set to yes to create the browser and load the page, but not show it. The loadstop event fires when loading is complete.
* Omit or set to no (default) to have the browser open and load normally. */
hidden?: 'yes' | 'no';
/** Set to yes to have the browser's cookie cache cleared before the new window is opened. */
clearcache?: 'yes';
/** Set to yes to have the session cookie cache cleared before the new window is opened. */
/* Set to yes to have the session cookie cache cleared before the new window is opened. */
clearsessioncache?: 'yes';
/** (Android Only) set to yes to show Android browser's zoom controls, set to no to hide them. Default value is yes. */
/* (Android) Set to a string to use as the close button's caption instead of a X. Note that you need to localize this value yourself.
* (iOS) Set to a string to use as the Done button's caption. Note that you need to localize this value yourself. */
closebuttoncaption?: string;
/* (Android) Set to a valid hex color string, for example: #00ff00, and it will change the close button color from default, regardless of being a text or default X. Only has effect if user has location set to yes.
* (iOS) Set as a valid hex color string, for example: #00ff00, to change from the default Done button's color. Only applicable if toolbar is not disabled. */
closebuttoncolor?: string;
/** (Android Only) Set to yes to show Android browser's zoom controls, set to no to hide them. Default value is yes. */
zoom?: 'yes' | 'no';
/** Set to yes to use the hardware back button to navigate backwards through the InAppBrowser's history.
/* (Android & Windows Phone Only) Set to yes to use the hardware back button to navigate backwards through the InAppBrowser's history.
* If there is no previous page, the InAppBrowser will close. The default value is yes, so you must set it to no if you want the back button to simply close the InAppBrowser. */
hardwareback?: 'yes' | 'no';
/** Set to yes to prevent HTML5 audio or video from autoplaying (defaults to no). */
mediaPlaybackRequiresUserAction?: 'yes' | 'no';
/* (Android) Set to yes to hide the navigation buttons on the location toolbar, only has effect if user has location set to yes. The default value is no.
* (iOS) Set to yes or no to turn the toolbar navigation buttons on or off (defaults to no). Only applicable if toolbar is not disabled.*/
hidenavigationbuttons?: 'yes' | 'no';
/* (Android) Set to yes to hide the url bar on the location toolbar, only has effect if user has location set to yes. The default value is no.*/
hideurlbar?: 'yes' | 'no';
/* (Android) Set to a valid hex color string, for example: #00ff00, and it will change the color of both navigation buttons from default. Only has effect if user has location set to yes and not hidenavigationbuttons set to yes.
* (iOS) Set as a valid hex color string, for example: #00ff00, to change from the default color. Only applicable if navigation buttons are visible. */
navigationbuttoncolor?: string;
/* (Android) Set to a valid hex color string, for example: #00ff00, and it will change the color the toolbar from default. Only has effect if user has location set to yes.
* (iOS) Set as a valid hex color string, for example: #00ff00, to change from the default color of the toolbar. Only applicable if toolbar is not disabled.*/
toolbarcolor?: string;
/** (Android Only) Set to yes to make InAppBrowser WebView to pause/resume with the app to stop background audio (this may be required to avoid Google Play issues) */
shouldPauseOnSuspend?: 'yes' | 'no';
/** (Android Only) Set to yes to show a close button in the footer similar to the iOS Done button. The close button will appear the same as for the header hence use closebuttoncaption and closebuttoncolor to set its properties */
footer?: 'yes' | 'no';
/** (Android Only) Set to a valid hex color string, for example #00ff00 or #CC00ff00 (#aarrggbb) , and it will change the footer color from default. Only has effect if user has footer set to yes */
/** (Android Only) Set to a valid hex color string, for example #00ff00 or #CC00ff00 (#aarrggbb), and it will change the footer color from default. Only has effect if user has footer set to yes */
footercolor?: string;
/** (iOS Only) Set to a string to use as the Done button's caption. Note that you need to localize this value yourself. */
closebuttoncaption?: string;
/** (iOS Only) Set to yes or no (default is no). Turns on/off the UIWebViewBounce property. */
disallowoverscroll?: 'yes' | 'no';
/** (iOS Only) Set to yes or no to turn the toolbar on or off for the InAppBrowser (defaults to yes) */
toolbar?: 'yes' | 'no';
/** (iOS Only) Set to yes or no to make the toolbar translucent(semi-transparent) (defaults to yes). Only applicable if toolbar is not disabled. */
toolbartranslucent?: 'yes' | 'no';
/** (iOS Only) Set to yes or no to prevent viewport scaling through a meta tag (defaults to no). */
enableViewportScale?: 'yes' | 'no';
/** (iOS Only) Set to yes or no to allow in-line HTML5 media playback, displaying within the browser window rather than a device-specific playback interface.
/* (iOS Only) Set to yes or no to allow in-line HTML5 media playback, displaying within the browser window rather than a device-specific playback interface.
* The HTML's video element must also include the webkit-playsinline attribute (defaults to no) */
allowInlineMediaPlayback?: 'yes' | 'no';
/** (iOS Only) Set to yes or no to open the keyboard when form elements receive focus via JavaScript's focus() call (defaults to yes). */
@@ -51,10 +73,11 @@ export interface InAppBrowserOptions {
toolbarposition?: 'top' | 'bottom';
/** (iOS Only) Set to yes or no to change the visibility of the loading indicator (defaults to no). */
hidespinner?: 'yes' | 'no';
/** (Windows only) Set to yes to create the browser control without a border around it.
/* (Windows only) Set to yes to create the browser control without a border around it.
* Please note that if location=no is also specified, there will be no control presented to user to close IAB window. */
fullscreen?: 'yes';
/** (Android Only) Sets whether the WebView should enable support for the "viewport" HTML meta tag or should use a wide viewport. When the value of the setting is no, the layout width is always set to the width of the WebView control in device-independent (CSS) pixels. When the value is yes and the page contains the viewport meta tag, the value of the width specified in the tag is used. If the page does not contain the tag or does not provide a width, then a wide viewport will be used. (defaults to yes). */
useWideViewPort?: 'yes' | 'no';
/**
* @hidden
*/
@@ -75,7 +98,6 @@ export interface InAppBrowserEvent extends Event {
* @hidden
*/
export class InAppBrowserObject {
private _objectInstance: any;
/**
@@ -89,20 +111,26 @@ export class InAppBrowserObject {
* The options string must not contain any blank space, and each feature's
* name/value pairs must be separated by a comma. Feature names are case insensitive.
*/
constructor(url: string, target?: string, options?: string | InAppBrowserOptions) {
constructor(
url: string,
target?: string,
options?: string | InAppBrowserOptions
) {
try {
if (options && typeof options !== 'string') {
options = Object.keys(options).map((key: string) => `${key}=${(<InAppBrowserOptions>options)[key]}`).join(',');
options = Object.keys(options)
.map(
(key: string) => `${key}=${(options as InAppBrowserOptions)[key]}`
)
.join(',');
}
this._objectInstance = cordova.InAppBrowser.open(url, target, options);
} catch (e) {
window.open(url, target);
console.warn('Native: InAppBrowser is not installed or you are running on a browser. Falling back to window.open.');
console.warn(
'Native: InAppBrowser is not installed or you are running on a browser. Falling back to window.open.'
);
}
}
@@ -111,20 +139,20 @@ export class InAppBrowserObject {
* if the InAppBrowser was already visible.
*/
@CordovaInstance({ sync: true })
show(): void { }
show(): void {}
/**
* Closes the InAppBrowser window.
*/
@CordovaInstance({ sync: true })
close(): void { }
close(): void {}
/**
* Hides an InAppBrowser window that is currently shown. Calling this has no effect
* if the InAppBrowser was already hidden.
*/
@CordovaInstance({ sync: true })
hide(): void { }
hide(): void {}
/**
* Injects JavaScript code into the InAppBrowser window.
@@ -132,7 +160,9 @@ export class InAppBrowserObject {
* @returns {Promise<any>}
*/
@CordovaInstance()
executeScript(script: { file?: string, code?: string }): Promise<any> { return; }
executeScript(script: { file?: string; code?: string }): Promise<any> {
return;
}
/**
* Injects CSS into the InAppBrowser window.
@@ -140,7 +170,9 @@ export class InAppBrowserObject {
* @returns {Promise<any>}
*/
@CordovaInstance()
insertCSS(css: { file?: string, code?: string }): Promise<any> { return; }
insertCSS(css: { file?: string; code?: string }): Promise<any> {
return;
}
/**
* A method that allows you to listen to events happening in the browser.
@@ -149,10 +181,19 @@ export class InAppBrowserObject {
*/
@InstanceCheck()
on(event: string): Observable<InAppBrowserEvent> {
return new Observable<InAppBrowserEvent>((observer: Observer<InAppBrowserEvent>) => {
this._objectInstance.addEventListener(event, observer.next.bind(observer));
return () => this._objectInstance.removeEventListener(event, observer.next.bind(observer));
});
return new Observable<InAppBrowserEvent>(
(observer: Observer<InAppBrowserEvent>) => {
this._objectInstance.addEventListener(
event,
observer.next.bind(observer)
);
return () =>
this._objectInstance.removeEventListener(
event,
observer.next.bind(observer)
);
}
);
}
}
@@ -196,7 +237,6 @@ export class InAppBrowserObject {
})
@Injectable()
export class InAppBrowser extends IonicNativePlugin {
/**
* Opens a URL in a new InAppBrowser instance, the current browser instance, or the system browser.
* @param url {string} The URL to load.
@@ -206,8 +246,11 @@ export class InAppBrowser extends IonicNativePlugin {
* name/value pairs must be separated by a comma. Feature names are case insensitive.
* @returns {InAppBrowserObject}
*/
create(url: string, target?: string, options?: string | InAppBrowserOptions): InAppBrowserObject {
create(
url: string,
target?: string,
options?: string | InAppBrowserOptions
): InAppBrowserObject {
return new InAppBrowserObject(url, target, options);
}
}
@@ -1,4 +1,4 @@
import { Plugin, IonicNativePlugin, Cordova, CordovaProperty } from '@ionic-native/core';
import { Cordova, CordovaProperty, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
/**
@@ -77,7 +77,7 @@ export interface IAPProductOptions {
type: string;
}
export type IAPProducts = Array<IAPProduct> & {
export type IAPProducts = IAPProduct[] & {
/**
* Get product by ID
*/
@@ -383,7 +383,7 @@ export class InAppPurchase2 extends IonicNativePlugin {
* Add or register a product
* @param product {IAPProductOptions}
*/
@Cordova({ sync: true})
@Cordova({ sync: true })
register(product: IAPProductOptions): void {}
/**
@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
/**
@@ -1,6 +1,6 @@
import { Injectable } from '@angular/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
/* tslint:disable */
/**
* @name In App Review
* @description
@@ -25,6 +25,7 @@ import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
*
* ```
*/
/* tslint:enable */
@Plugin({
pluginName: 'InAppReview',
plugin: 'com.omarben.inappreview',
@@ -34,7 +35,6 @@ import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
})
@Injectable()
export class InAppReview extends IonicNativePlugin {
/**
* Open the inApp review popup
* @return {Promise<any>} Returns a promise that resolves when something happens
@@ -43,5 +43,4 @@ export class InAppReview extends IonicNativePlugin {
requestReview(): Promise<any> {
return; // We add return; here to avoid any IDE / Compiler errors
}
}
@@ -1,5 +1,10 @@
import { Injectable } from '@angular/core';
import { Cordova, CordovaFunctionOverride, IonicNativePlugin, Plugin } from '@ionic-native/core';
import {
Cordova,
CordovaFunctionOverride,
IonicNativePlugin,
Plugin
} from '@ionic-native/core';
import { Observable } from 'rxjs/Observable';
export interface IndexItem {
@@ -16,7 +21,7 @@ export interface IndexItem {
/**
* Item keywords
*/
keywords?: Array<string>;
keywords?: string[];
/**
* Lifetime in minutes
@@ -88,7 +93,7 @@ export class IndexAppContent extends IonicNativePlugin {
* @return {Promise<any>} Returns if index set was successful
*/
@Cordova()
setItems(items: Array<IndexItem>): Promise<any> {
setItems(items: IndexItem[]): Promise<any> {
return;
}
@@ -98,7 +103,7 @@ export class IndexAppContent extends IonicNativePlugin {
* @return {Promise<any>} Resolve if successful
*/
@Cordova()
clearItemsForDomains(domains: Array<string>): Promise<any> {
clearItemsForDomains(domains: string[]): Promise<any> {
return;
}
@@ -108,11 +113,11 @@ export class IndexAppContent extends IonicNativePlugin {
* @return {Promise<any>} Resolve if successful
*/
@Cordova()
clearItemsForIdentifiers(identifiers: Array<string>): Promise<any> {
clearItemsForIdentifiers(identifiers: string[]): Promise<any> {
return;
}
/**
/**
* If user taps on a search result in spotlight then the app will be launched.
* You can register a Javascript handler to get informed when this happens.
* @returns {Observable<any>} returns an observable that notifies you when he user presses on the home screen icon
+1 -1
View File
@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Cordova, Plugin, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
/**
+1 -1
View File
@@ -1,5 +1,5 @@
import { Injectable } from '@angular/core';
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
/**
* @name Instagram
@@ -1,10 +1,10 @@
import { Plugin, Cordova, IonicNativePlugin } from '@ionic-native/core';
import { Cordova, IonicNativePlugin, Plugin } from '@ionic-native/core';
import { Injectable } from '@angular/core';
declare const window: any;
export interface IntelSecurityDataOptions {
/** Non-empty string. **/
/* Non-empty string. **/
data: String;
/** Tag text. */
tag?: String;
@@ -76,7 +76,6 @@ export interface IntelSecurityDataOptions {
})
@Injectable()
export class IntelSecurity extends IonicNativePlugin {
/**
* returns an IntelSecurityStorage object
* @type {IntelSecurityStorage}
@@ -88,7 +87,6 @@ export class IntelSecurity extends IonicNativePlugin {
* @type {IntelSecurityData}
*/
data: IntelSecurityData = new IntelSecurityData();
}
/**
@@ -100,14 +98,15 @@ export class IntelSecurity extends IonicNativePlugin {
pluginRef: 'intel.security.secureData'
})
export class IntelSecurityData {
/**
* This creates a new instance of secure data using plain-text data.
* @param options {IntelSecurityDataOptions}
* @returns {Promise<any>} Returns a Promise that resolves with the instanceID of the created data instance, or rejects with an error.
*/
* This creates a new instance of secure data using plain-text data.
* @param options {IntelSecurityDataOptions}
* @returns {Promise<any>} Returns a Promise that resolves with the instanceID of the created data instance, or rejects with an error.
*/
@Cordova({ otherPromise: true })
createFromData(options: IntelSecurityDataOptions): Promise<Number> { return; }
createFromData(options: IntelSecurityDataOptions): Promise<Number> {
return;
}
/**
* This creates a new instance of secure data (using sealed data)
@@ -116,7 +115,9 @@ export class IntelSecurityData {
* @returns {Promise<any>} Returns a Promise that resolves with the instanceID of the created data instance, or rejects with an error.
*/
@Cordova({ otherPromise: true })
createFromSealedData(options: { sealedData: string }): Promise<Number> { return; }
createFromSealedData(options: { sealedData: string }): Promise<Number> {
return;
}
/**
* This returns the plain-text data of the secure data instance.
@@ -124,7 +125,9 @@ export class IntelSecurityData {
* @returns {Promise<string>} Returns a Promise that resolves to the data as plain-text, or rejects with an error.
*/
@Cordova({ otherPromise: true })
getData(instanceID: Number): Promise<string> { return; }
getData(instanceID: Number): Promise<string> {
return;
}
/**
* This returns the sealed chunk of a secure data instance.
@@ -132,7 +135,9 @@ export class IntelSecurityData {
* @returns {Promise<any>} Returns a Promise that resolves to the sealed data, or rejects with an error.
*/
@Cordova({ otherPromise: true })
getSealedData(instanceID: any): Promise<any> { return; }
getSealedData(instanceID: any): Promise<any> {
return;
}
/**
* This returns the tag of the secure data instance.
@@ -140,7 +145,9 @@ export class IntelSecurityData {
* @returns {Promise<string>} Returns a Promise that resolves to the tag, or rejects with an error.
*/
@Cordova({ otherPromise: true })
getTag(instanceID: any): Promise<string> { return; }
getTag(instanceID: any): Promise<string> {
return;
}
/**
* This returns the data policy of the secure data instance.
@@ -148,7 +155,9 @@ export class IntelSecurityData {
* @returns {Promise<any>} Returns a promise that resolves to the policy object, or rejects with an error.
*/
@Cordova({ otherPromise: true })
getPolicy(instanceID: any): Promise<any> { return; }
getPolicy(instanceID: any): Promise<any> {
return;
}
/**
* This returns an array of the data owners unique IDs.
@@ -156,7 +165,9 @@ export class IntelSecurityData {
* @returns {Promise<Array>} Returns a promise that resolves to an array of owners' unique IDs, or rejects with an error.
*/
@Cordova({ otherPromise: true })
getOwners(instanceID: any): Promise<Array<any>> { return; }
getOwners(instanceID: any): Promise<any[]> {
return;
}
/**
* This returns the data creator unique ID.
@@ -164,7 +175,9 @@ export class IntelSecurityData {
* @returns {Promise<Number>} Returns a promsie that resolves to the creator's unique ID, or rejects with an error.
*/
@Cordova({ otherPromise: true })
getCreator(instanceID: any): Promise<Number> { return; }
getCreator(instanceID: any): Promise<Number> {
return;
}
/**
* This returns an array of the trusted web domains of the secure data instance.
@@ -172,7 +185,9 @@ export class IntelSecurityData {
* @returns {Promise<Array>} Returns a promise that resolves to a list of web owners, or rejects with an error.
*/
@Cordova({ otherPromise: true })
getWebOwners(instanceID: any): Promise<Array<any>> { return; }
getWebOwners(instanceID: any): Promise<any[]> {
return;
}
/**
* This changes the extra key of a secure data instance. To successfully replace the extra key, the calling application must have sufficient access to the plain-text data.
@@ -182,7 +197,9 @@ export class IntelSecurityData {
* @returns {Promise<any>} Returns a promise that resolves with no parameters, or rejects with an error.
*/
@Cordova({ otherPromise: true })
changeExtraKey(options: any): Promise<any> { return; }
changeExtraKey(options: any): Promise<any> {
return;
}
/**
* This releases a secure data instance.
@@ -190,8 +207,9 @@ export class IntelSecurityData {
* @returns {Promise<any>} Returns a promise that resovles with no parameters, or rejects with an error.
*/
@Cordova({ otherPromise: true })
destroy(instanceID: any): Promise<any> { return; }
destroy(instanceID: any): Promise<any> {
return;
}
}
/**
@@ -203,7 +221,6 @@ export class IntelSecurityData {
pluginRef: 'intel.security.secureStorage'
})
export class IntelSecurityStorage {
/**
* This deletes a secure storage resource (indicated by id).
* @param options {Object}
@@ -212,10 +229,9 @@ export class IntelSecurityStorage {
* @returns {Promise<any>} Returns a Promise that resolves with no parameters, or rejects with an error.
*/
@Cordova({ otherPromise: true })
delete(options: {
id: string,
storageType?: Number
}): Promise<any> { return; }
delete(options: { id: string; storageType?: Number }): Promise<any> {
return;
}
/**
* This reads the data from secure storage (indicated by id) and creates a new secure data instance.
@@ -227,10 +243,12 @@ export class IntelSecurityStorage {
*/
@Cordova({ otherPromise: true })
read(options: {
id: string,
storageType?: Number,
extraKey?: Number
}): Promise<Number> { return; }
id: string;
storageType?: Number;
extraKey?: Number;
}): Promise<Number> {
return;
}
/**
* This writes the data contained in a secure data instance into secure storage.
@@ -242,9 +260,10 @@ export class IntelSecurityStorage {
*/
@Cordova({ otherPromise: true })
write(options: {
id: String,
instanceID: Number,
storageType?: Number
}): Promise<any> { return; }
id: String;
instanceID: Number;
storageType?: Number;
}): Promise<any> {
return;
}
}

Some files were not shown because too many files have changed in this diff Show More