-
Notifications
You must be signed in to change notification settings - Fork 3.2k
Expand file tree
/
Copy pathnative.json
More file actions
3035 lines (3035 loc) · 281 KB
/
Copy pathnative.json
File metadata and controls
3035 lines (3035 loc) · 281 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
[
{
"packageName": "@awesome-cordova-plugins/abbyy-rtr",
"displayName": "ABBYY Real-Time Recognition",
"description": "\nThis plugin allows to use the Text Capture and Data Capture features of\nABBYY Real-Time Recognition SDK (RTR SDK) in apps.\n",
"usage": "\n```typescript\nimport { AbbyyRTR } from '@awesome-cordova-plugins/abbyy-rtr/ngx';\n\n\nconstructor(private abbyyRTR: AbbyyRTR) { }\n\n...\n\n\nthis.abbyyRTR.startTextCapture(options)\n .then((res: any) => console.log(res))\n .catch((error: any) => console.error(error));\n\n\nthis.abbyyRTR.startDataCapture(options)\n .then((res: any) => console.log(res))\n .catch((error: any) => console.error(error));\n\n```\n",
"platforms": [
"Android",
"iOS"
],
"repo": "https://github.com/abbyysdk/RTR-SDK.Cordova",
"cordovaPlugin": {
"name": "cordova-plugin-abbyy-rtr-sdk"
}
},
{
"packageName": "@awesome-cordova-plugins/action-sheet",
"displayName": "Action Sheet",
"description": "\nThe ActionSheet plugin shows a native list of options the user can choose from.\n\nRequires Cordova plugin: `cordova-plugin-actionsheet`. For more info, please see the [ActionSheet plugin docs](https://github.com/EddyVerbruggen/cordova-plugin-actionsheet).\n",
"usage": "\n```typescript\nimport { ActionSheet, ActionSheetOptions } from '@awesome-cordova-plugins/action-sheet/ngx';\n\nconstructor(private actionSheet: ActionSheet) { }\n\n...\n\n\nlet buttonLabels = ['Share via Facebook', 'Share via Twitter'];\n\nconst options: ActionSheetOptions = {\n title: 'What do you want with this image?',\n subtitle: 'Choose an action',\n buttonLabels: buttonLabels,\n addCancelButtonWithLabel: 'Cancel',\n addDestructiveButtonWithLabel: 'Delete',\n androidTheme: this.actionSheet.ANDROID_THEMES.THEME_HOLO_DARK,\n destructiveButtonLast: true\n}\n\nthis.actionSheet.show(options).then((buttonIndex: number) => {\n console.log('Button pressed: ' + buttonIndex);\n});\n```",
"platforms": [
"Android",
"Browser",
"iOS",
"Windows",
"Windows Phone 8"
],
"repo": "https://github.com/EddyVerbruggen/cordova-plugin-actionsheet",
"cordovaPlugin": {
"name": "cordova-plugin-actionsheet"
}
},
{
"packageName": "@awesome-cordova-plugins/adjust",
"displayName": "Adjust",
"description": "\nThis is the Ionic Cordova SDK of Adjust™. You can read more about Adjust™ at adjust.com.\n\nRequires Cordova plugin: `com.adjust.sdk`. For more info, please see the [Adjust Cordova SDK](https://github.com/adjust/cordova_sdk)\n",
"usage": "\n```typescript\n import { Adjust, AdjustConfig, AdjustEnvironment } from '@awesome-cordova-plugins/adjust/ngx';\n\n constructor(private adjust: Adjust) { }\n\n ...\n\n const config = new AdjustConfig('APP-TOKEN-HERE', AdjustEnvironment.Sandbox);\n config.logLevel = AdjustLogLevel.Verbose;\n // Set other config properties.\n adjust.create(config);\n\n```",
"platforms": [
"Android",
"iOS"
],
"repo": "https://github.com/adjust/cordova_sdk",
"cordovaPlugin": {
"name": "com.adjust.sdk"
}
},
{
"packageName": "@awesome-cordova-plugins/admob-plus",
"displayName": "AdMob Plus",
"description": "\nAdMob Plus is the successor of cordova-plugin-admob-free, which provides a cleaner API and build with modern tools.\n",
"platforms": [
"Android",
"iOS"
],
"repo": "https://github.com/admob-plus/admob-plus",
"cordovaPlugin": {
"name": "cordova-admob-plus"
}
},
{
"packageName": "@awesome-cordova-plugins/admob",
"displayName": "AdMob",
"description": "\nMost complete Admob plugin with support for [Tappx](http://www.tappx.com/?h=dec334d63287772de859bdb4e977fce6) ads.\nMonetize your apps and games with AdMob ads, using latest Google AdMob SDK. With this plugin you can show AdMob ads easily!\n\n**Supports:**\n- Banner ads (top and bottom)\n- Interstitial ads\n- Rewarded ads\n- [Tappx](http://www.tappx.com/?h=dec334d63287772de859bdb4e977fce6) ads\n",
"usage": "\n**Note:** No ads will be served on apps with package name `io.ionic.starter`. This is the default package name for new `ionic` apps. Make sure to rename the package name so ads can be displayed.\n```typescript\nimport { Admob, AdmobOptions } from '@awesome-cordova-plugins/admob';\n\n\nconstructor(private admob: Admob) {\n // Admob options config\n const admobOptions: AdmobOptions = {\n bannerAdId: 'XXX-XXXX-XXXX',\n interstitialAdId: 'XXX-XXXX-XXXX',\n rewardedAdId: 'XXX-XXXX-XXXX',\n isTesting: true,\n autoShowBanner: false,\n autoShowInterstitial: false,\n autoShowRewarded: false,\n adSize: this.admob.AD_SIZE.BANNER\n };\n\n // Set admob options\n this.admob.setOptions(admobOptions)\n .then(() => console.log('Admob options have been successfully set'))\n .catch(err => console.error('Error setting admob options:', err));\n}\n\n\n\n// (Optionally) Load banner ad, in order to have it ready to show\nthis.admob.createBannerView()\n .then(() => console.log('Banner ad loaded'))\n .catch(err => console.error('Error loading banner ad:', err));\n\n\n// Show banner ad (createBannerView must be called before and onAdLoaded() event raised)\nthis.admob.onAdLoaded().subscribe((ad) => {\n if (ad.adType === this.admob.AD_TYPE.BANNER) {\n this.admob.showBannerAd()\n .then(() => console.log('Banner ad shown'))\n .catch(err => console.error('Error showing banner ad:', err));\n }\n});\n\n\n// Hide banner ad, but do not destroy it, so it can be shown later on\n// See destroyBannerView in order to hide and destroy banner ad\nthis.admob.showBannerAd(false)\n .then(() => console.log('Banner ad hidden'))\n .catch(err => console.error('Error hiding banner ad:', err));\n\n\n\n// Request an interstitial ad, in order to be shown later on\n// It is possible to autoshow it via options parameter, see docs\nthis.admob.requestInterstitialAd()\n .then(() => console.log('Interstitial ad loaded'))\n .catch(err => console.error('Error loading interstitial ad:', err));\n\n\n// Show an interstitial ad (requestInterstitialAd must be called before)\nthis.admob.onAdLoaded().subscribe((ad) => {\n if (ad.adType === this.admob.AD_TYPE.INTERSTITIAL) {\n this.admob.showInterstitialAd()\n .then(() => console.log('Interstitial ad shown'))\n .catch(err => console.error('Error showing interstitial ad:', err));\n }\n});\n\n\n// Request a rewarded ad\nthis.admob.requestRewardedAd()\n .then(() => console.log('Rewarded ad loaded'))\n .catch(err => console.error('Error loading rewarded ad:', err));\n\n\n// Show rewarded ad (requestRewardedAd must be called before)\nthis.admob.onAdLoaded().subscribe((ad) => {\n if (ad.adType === this.admob.AD_TYPE.REWARDED) {\n this.admob.showRewardedAd()\n .then(() => console.log('Rewarded ad shown'))\n .catch(err => console.error('Error showing rewarded ad:', err));\n }\n});\n\n\n// Hide and destroy banner or interstitial ad\nthis.admob.destroyBannerView()\n .then(() => console.log('Banner or interstitial ad destroyed'))\n .catch(err => console.error('Error destroying banner or interstitial ad:', err));\n\n\n\n// On Ad loaded event\nthis.admob.onAdLoaded().subscribe((ad) => {\n if (ad.adType === this.admob.AD_TYPE.BANNER) {\n console.log('Banner ad is loaded');\n this.admob.showBannerAd();\n } else if (ad.adType === this.admob.AD_TYPE.INTERSTITIAL) {\n console.log('Interstitial ad is loaded');\n this.admob.showInterstitialAd();\n } else if (ad.adType === this.admob.AD_TYPE.REWARDED) {\n console.log('Rewarded ad is loaded');\n this.admob.showRewardedAd();\n }\n});\n\n\n\n// On ad failed to load\nthis.admob.onAdFailedToLoad().subscribe(err => console.log('Error loading ad:', err));\n\n\n\n// On interstitial ad opened\nthis.admob.onAdOpened().subscribe(() => console.log('Interstitial ad opened'));\n\n\n\n// On interstitial ad closed\nthis.admob.onAdClosed().subscribe(() => console.log('Interstitial ad closed'));\n\n\n\n// On ad clicked and left application\nthis.admob.onAdLeftApplication().subscribe(() => console.log('Ad lefted application'));\n\n\n\n// On user ad rewarded\nthis.admob.onRewardedAd().subscribe(() => console.log('The user has been rewarded'));\n\n\n\n// On rewarded ad video started\nthis.admob.onRewardedAdVideoStarted().subscribe(() => console.log('Rewarded ad vieo started'));\n\n\n\n// On rewarded ad video completed\nthis.admob.onRewardedAdVideoCompleted().subscribe(() => console.log('Rewarded ad video completed'));\n\n```\n",
"platforms": [
"Android",
"iOS",
"Browser"
],
"repo": "https://github.com/appfeel/admob-google-cordova",
"cordovaPlugin": {
"name": "cordova-admob"
}
},
{
"packageName": "@awesome-cordova-plugins/aes-256",
"displayName": "AES256",
"description": "\nThis cordova ionic plugin allows you to perform AES 256 encryption and decryption on the plain text.\nIt's a cross-platform plugin which supports both Android and iOS.\nThe encryption and decryption are performed on the device native layer so that the performance is much faster.\n",
"usage": "\n```typescript\nimport { AES256 } from '@awesome-cordova-plugins/aes-256/ngx';\n\nprivate secureKey: string;\nprivate secureIV: string;\n\nconstructor(private aes256: AES256) {\n this.generateSecureKeyAndIV(); // To generate the random secureKey and secureIV\n}\n\n...\n\nasync generateSecureKeyAndIV() {\n this.secureKey = await this.aes256.generateSecureKey('random password 12345'); // Returns a 32 bytes string\n this.secureIV = await this.aes256.generateSecureIV('random password 12345'); // Returns a 16 bytes string\n}\n\nthis.aes256.encrypt(this.secureKey, this.secureIV, 'testdata')\n .then(res => console.log('Encrypted Data: ',res))\n .catch((error: any) => console.error(error));\n\nthis.aes256.decrypt(this.secureKey, this.secureIV, 'encryptedData')\n .then(res => console.log('Decrypted Data : ',res))\n .catch((error: any) => console.error(error));\n\n\n* this.aes256.generateSecureKey('random password 12345')\n .then(res => console.log('Secure Key : ',res))\n .catch((error: any) => console.error(error));\n\n\n* this.aes256.generateSecureIV('random password 12345')\n .then(res => console.log('Secure IV : ',res))\n .catch((error: any) => console.error(error));\n\n```\n",
"platforms": [
"Android",
"iOS"
],
"repo": "https://github.com/Ideas2IT/cordova-aes256",
"cordovaPlugin": {
"name": "cordova-plugin-aes256-encryption"
}
},
{
"packageName": "@awesome-cordova-plugins/all-in-one-sdk",
"displayName": "AllInOneSDK",
"description": "\nPaytm All-in-One SDK plugin for Cordova/Ionic Applications\nPaytm All-in-One SDK provides a swift, secure and seamless payment experience to your users by invoking the Paytm app (if installed on your user’s smartphone) to complete payment for your order.\nPaytm All-in-One SDK enables payment acceptance via Paytm wallet, Paytm Payments Bank, saved Debit/Credit cards, Net Banking, BHIM UPI and EMI as available in your customer’s Paytm account. If Paytm app is not installed on a customer's device, the transaction will be processed via web view within the All-in-One SDK.\nFor more information about Paytm All-in-One SDK, please visit https://developer.paytm.com/docs/all-in-one-sdk/hybrid-apps/cordova/\n",
"usage": "\n```typescript\nimport { AllInOneSDK } from '@awesome-cordova-plugins/all-in-one-sdk/ngx';\n\n\nconstructor(private allInOneSDK: AllInOneSDK) { }\n\n...\n\nFor below parameters see [documentation](https://developer.paytm.com/docs/all-in-one-sdk/hybrid-apps/cordova/)\nlet paymentIntent = { mid : merchantID, orderId: orderId, txnToken: transactionToken, amount: amount, isStaging: isStaging, callbackUrl:callBackURL, restrictAppInvoke:restrictAppInvoke }\n\nthis.allInOneSDK.startTransaction(paymentIntent)\n .then((res: any) => console.log(res))\n .catch((error: any) => console.error(error));\n\n```\n\nFor iOS:\nAfter adding the plugin, open the iOS project, you can find the same at <projectName>/platforms/ios.\nIn case merchant don’t have callback URL, Add an entry into Info.plist LSApplicationQueriesSchemes(Array) Item 0 (String)-> paytm\nAdd a URL Scheme “paytm”+”MID”\n\n",
"platforms": [
"Android",
"iOS"
],
"repo": "https://github.com/paytm/paytm-allinonesdk-ionic-cordova.git",
"cordovaPlugin": {
"name": "cordova-paytm-allinonesdk"
}
},
{
"packageName": "@awesome-cordova-plugins/analytics-firebase",
"displayName": "Analytics Firebase",
"description": "\nGoogle Analytics Firebase plugin for Ionic Native apps.\n",
"usage": "\n```typescript\nimport { AnalyticsFirebase } from '@awesome-cordova-plugins/analytics-firebase';\n\n\nconstructor(private analyticsFirebase: AnalyticsFirebase) { }\n\n// Track an event with default events and params\nconst eventParams = {};\neventParams[this.analyticsFirebase.DEFAULT_PARAMS.LEVEL] = 29;\nthis.analyticsFirebase.logEvent(this.analyticsFirebase.DEFAULT_EVENTS.LEVEL_UP, eventParams)\n .then(() => console.log('Event successfully tracked'))\n .catch(err => console.log('Error tracking event:', err));\n\n// Track an event with custom events and params\nconst eventParams = {};\neventParams['my-prop'] = 29;\nthis.analyticsFirebase.logEvent('my-event', eventParams)\n .then(() => console.log('Event successfully tracked'))\n .catch(err => console.log('Error tracking event:', err));\n\n\n// Reset analytics data\nthis.analyticsFirebase.resetAnalyticsData()\n .then(() => console.log('Analytics data have been reset'))\n .catch(err => console.log('Error resetting analytics data:', err));\n\n\n// Track a screen view\nthis.analyticsFirebase.setCurrentScreen('Home')\n .then(() => console.log('View successfully tracked'))\n .catch(err => console.log('Error tracking view:', err));\n\n\n// Set user id\nthis.analyticsFirebase.setUserId('USER-ID')\n .then(() => console.log('User id successfully set'))\n .catch(err => console.log('Error setting user id:', err));\n\n\n// Set user property from default properties\nthis.analyticsFirebase.setUserProperty('KEY', 'VALUE')\n .then(() => console.log('User property successfully set'))\n .catch(err => console.log('Error setting user property:', err));\n\n```\n",
"platforms": [
"Android",
"iOS"
],
"repo": "https://github.com/appfeel/analytics-google",
"cordovaPlugin": {
"name": "cordova-plugin-analytics"
}
},
{
"packageName": "@awesome-cordova-plugins/android-exoplayer",
"displayName": "Android ExoPlayer",
"description": "\nCordova media player plugin using Google's ExoPlayer framework.\n\nhttps://github.com/google/ExoPlayer\n",
"usage": "\n```typescript\nimport { AndroidExoPlayer } from '@awesome-cordova-plugins/android-exoplayer/ngx';\n\nconstructor(private androidExoPlayer: AndroidExoPlayer) { }\n\n...\n\nthis.androidExoPlayer.show({url: 'http://www.youtube.com/api/manifest/dash/id/bf5bb2419360daf1/source/youtube'});\n\n```\n",
"platforms": [
"Android"
],
"repo": "https://github.com/frontyard/cordova-plugin-exoplayer",
"cordovaPlugin": {
"name": "cordova-plugin-exoplayer"
}
},
{
"packageName": "@awesome-cordova-plugins/android-full-screen",
"displayName": "Android Full Screen",
"description": "\nThis plugin enables developers to offer users a true full screen experience in their Cordova and PhoneGap apps for Android.\nUsing Android 4.0+, you can use true full screen in \"lean mode\", the way you see in apps like YouTube, expanding the app right to the edges of the screen, hiding the status and navigation bars until the user next interacts. This is ideally suited to video or cut-scene content.\nIn Android 4.4+, however, you can now enter true full screen, fully interactive immersive mode. In this mode, your app will remain in true full screen until you choose otherwise; users can swipe down from the top of the screen to temporarily display the system UI.",
"usage": "\n```typescript\nimport { AndroidFullScreen } from '@awesome-cordova-plugins/android-full-screen/ngx';\n\nconstructor(private androidFullScreen: AndroidFullScreen) { }\n\n...\n\nthis.androidFullScreen.isImmersiveModeSupported()\n .then(() => console.log('Immersive mode supported'))\n .catch(err => console.log(err));\n\n```\n",
"platforms": [
"Android"
],
"repo": "https://github.com/mesmotronic/cordova-plugin-fullscreen",
"cordovaPlugin": {
"name": "cordova-plugin-fullscreen"
}
},
{
"packageName": "@awesome-cordova-plugins/android-notch",
"displayName": "Android Notch",
"description": "\nThis plugin enables developers to get the cutout and android devices inset sizes\nIt is based on the cordova plugin developed by @tobspr: https://github.com/tobspr/cordova-plugin-android-notch\nThis plugin works on all android versions, but we can only detect notches starting from Android 9.\n",
"usage": "\n```typescript\nimport { AndroidNotch } from '@awesome-cordova-plugins/android-notch/ngx';\n\n\nconstructor(private androidNotch: AndroidNotch) { }\n\n...\n\n\nthis.androidNotch.hasCutout()\n .then((px: number) => console.log('Inset size: '), px)\n .catch((error: any) => console.log('Error: ', error))\n\nthis.androidNotch.getInsetTop()\n .then((px: number) => console.log('Inset size: '), px)\n .catch((error: any) => console.log('Error: ', error))\n\nthis.androidNotch.getInsetRight()\n .then((px: number) => console.log('Inset size: '), px)\n .catch((error: any) => console.log('Error: ', error))\n\nthis.androidNotch.getInsetBottom()\n .then((px: number) => console.log('Inset size: '), px)\n .catch((error: any) => console.log('Error: ', error))\n\nthis.androidNotch.getInsetLeft()\n .then((px: number) => console.log('Inset size: '), px)\n .catch((error: any) => console.log('Error: ', error))\n\n```\n",
"platforms": [
"Android"
],
"repo": "https://github.com/tobspr/cordova-plugin-android-notch.git",
"cordovaPlugin": {
"name": "cordova-plugin-android-notch"
}
},
{
"packageName": "@awesome-cordova-plugins/android-permissions",
"displayName": "Android Permissions",
"description": "\nThis plugin is designed to support Android new permissions checking mechanism.\n\nYou can find all permissions here: https://developer.android.com/reference/android/Manifest.permission.html\n",
"usage": "\n```\nimport { AndroidPermissions } from '@awesome-cordova-plugins/android-permissions/ngx';\n\n\nconstructor(private androidPermissions: AndroidPermissions) { }\n\n...\n\nthis.androidPermissions.checkPermission(this.androidPermissions.PERMISSION.CAMERA).then(\n result => console.log('Has permission?',result.hasPermission),\n err => this.androidPermissions.requestPermission(this.androidPermissions.PERMISSION.CAMERA)\n);\n\nthis.androidPermissions.requestPermissions([this.androidPermissions.PERMISSION.CAMERA, this.androidPermissions.PERMISSION.GET_ACCOUNTS]);\n\n```\n\nAndroid 26 and above: due to Android 26's changes to permissions handling (permissions are requested at time of use rather than at runtime,) if your app does not include any functions (eg. other Ionic Native plugins) that utilize a particular permission, then `requestPermission()` and `requestPermissions()` will resolve immediately with no prompt shown to the user. Thus, you must include a function utilizing the feature you would like to use before requesting permission for it.\n",
"platforms": [
"Android"
],
"repo": "https://github.com/NeoLSN/cordova-plugin-android-permissions",
"cordovaPlugin": {
"name": "cordova-plugin-android-permissions"
},
"premierSlug": "android-permissions"
},
{
"packageName": "@awesome-cordova-plugins/anyline",
"displayName": "Anyline",
"description": "\nAnyline provides an easy-to-use SDK for applications to enable Optical Character Recognition (OCR) on mobile devices.\n",
"usage": "\n```typescript\nimport { Anyline } from '@awesome-cordova-plugins/anyline/ngx';\n\n\nconstructor(private anyline: Anyline) { }\n\n...\n\n\nthis.anyline.scan(options)\n .then((res: any) => console.log(res))\n .catch((error: any) => console.error(error));\n\n```\n",
"platforms": [
"Android",
"iOS"
],
"repo": "https://github.com/Anyline/anyline-ocr-cordova-module",
"cordovaPlugin": {
"name": "io-anyline-cordova"
}
},
{
"packageName": "@awesome-cordova-plugins/app-availability",
"displayName": "App Availability",
"description": "\nThis plugin allows you to check if an app is installed on the user's device. It requires an URI Scheme (e.g. twitter://) on iOS or a Package Name (e.g com.twitter.android) on Android.\n\nRequires Cordova plugin: cordova-plugin-appavailability. For more info, please see the [AppAvailability plugin docs](https://github.com/ohh2ahh/AppAvailability).\n",
"usage": "\n```typescript\nimport { AppAvailability } from '@awesome-cordova-plugins/app-availability/ngx';\nimport { Platform } from 'ionic-angular';\n\nconstructor(private appAvailability: AppAvailability, private platform: Platform) { }\n\n...\n\nlet app;\n\nif (this.platform.is('ios')) {\n app = 'twitter://';\n} else if (this.platform.is('android')) {\n app = 'com.twitter.android';\n}\n\nthis.appAvailability.check(app)\n .then(\n (yes: boolean) => console.log(app + ' is available'),\n (no: boolean) => console.log(app + ' is NOT available')\n );\n```\n",
"platforms": [
"Android",
"iOS"
],
"repo": "https://github.com/ohh2ahh/AppAvailability",
"cordovaPlugin": {
"name": "cordova-plugin-appavailability"
}
},
{
"packageName": "@awesome-cordova-plugins/app-center-analytics",
"displayName": "App Center Analytics",
"description": "\nApp Center Analytics helps you understand user behavior and customer engagement to improve your app.\nThe SDK automatically captures session count and device properties like model, OS version, etc.\nYou can define your own custom events to measure things that matter to you.\nAll the information captured is available in the App Center portal for you to analyze the data.\n\nFor more info, please see https://docs.microsoft.com/en-us/appcenter/sdk/analytics/cordova\n",
"usage": "\n```typescript\nimport { AppCenterAnalytics } from '@awesome-cordova-plugins/app-center-analytics/ngx';\n\n\nconstructor(private appCenterAnalytics: AppCenterAnalytics) { }\n\n...\n\nthis.appCenterAnalytics.setEnabled(true).then(() => {\n this.appCenterAnalytics.trackEvent('My Event', { TEST: 'HELLO_WORLD' }).then(() => {\n console.log('Custom event tracked');\n });\n});\n\n```",
"platforms": [
"Android",
"iOS"
],
"repo": "https://github.com/Microsoft/appcenter-sdk-cordova/tree/master/cordova-plugin-appcenter-analytics",
"cordovaPlugin": {
"name": "cordova-plugin-appcenter-analytics"
}
},
{
"packageName": "@awesome-cordova-plugins/app-center-crashes",
"displayName": "App Center Crashes",
"description": "\nApp Center Analytics helps you understand user behavior and customer engagement to improve your app.\nThe SDK automatically captures session count and device properties like model, OS version, etc.\nYou can define your own custom events to measure things that matter to you.\nAll the information captured is available in the App Center portal for you to analyze the data.\n\nFor more info, please see https://docs.microsoft.com/en-us/appcenter/sdk/crashes/cordova\n",
"usage": "\n```typescript\nimport { AppCenterCrashes } from '@awesome-cordova-plugins/app-center-crashes/ngx';\n\n\nconstructor(private AppCenterCrashes: AppCenterCrashes) { }\n\n...\n\nthis.AppCenterCrashes.setEnabled(true).then(() => {\n this.AppCenterCrashes.lastSessionCrashReport().then(report => {\n console.log('Crash report', report);\n });\n});\n\n```",
"platforms": [
"Android",
"iOS"
],
"repo": "https://github.com/Microsoft/appcenter-sdk-cordova/tree/master/cordova-plugin-appcenter-crashes",
"cordovaPlugin": {
"name": "cordova-plugin-appcenter-crashes"
}
},
{
"packageName": "@awesome-cordova-plugins/app-center-low-memory",
"displayName": "App Center Low Memory",
"description": "\nGenerates a low memory warning.\nFor more info, please see: https://github.com/Microsoft/appcenter-sdk-cordova/tree/master/cordova-plugin-appcenter-generate-low-memory\n",
"usage": "\n```typescript\nimport { LowMemory } from '@awesome-cordova-plugins/app-center-low-memory/ngx';\n\n...\n\nconstructor(private lowMemory: LowMemory) { }\n\nasync warning() {\n await this.lowMemory.generateLowMemory();\n}\n```\n",
"platforms": [
"Android",
"iOS"
],
"repo": "https://github.com/Microsoft/appcenter-sdk-cordova/tree/master/cordova-plugin-appcenter-generate-low-memory",
"cordovaPlugin": {
"name": "https://github.com/Microsoft/appcenter-sdk-cordova/tree/master/cordova-plugin-appcenter-generate-low-memory"
}
},
{
"packageName": "@awesome-cordova-plugins/app-center-push",
"displayName": "App Center Push",
"description": "\n\nFor more info, please see https://docs.microsoft.com/en-us/appcenter/sdk/push/cordova\n",
"usage": "\n```typescript\nimport { AppCenterPush } from '@awesome-cordova-plugins/app-center-push/ngx';\n\n\nconstructor(private appCenterPush: AppCenterPush) { }\n\n...\n\nthis.appCenterPush.setEnabled(true).then(() => {\n this.appCenterPush.addEventListener('My Event').subscribe(pushNotification => {\n console.log('Recived push notification', pushNotification);\n });\n});\n\n```\n",
"platforms": [
"Android",
"iOS"
],
"repo": "https://github.com/Microsoft/appcenter-sdk-cordova/tree/master/cordova-plugin-appcenter-push",
"cordovaPlugin": {
"name": "cordova-plugin-appcenter-push"
}
},
{
"packageName": "@awesome-cordova-plugins/app-preferences",
"displayName": "App Preferences",
"description": "\nThis plugin allows you to read and write app preferences\n",
"usage": "\n```typescript\nimport { AppPreferences } from '@awesome-cordova-plugins/app-preferences/ngx';\n\nconstructor(private appPreferences: AppPreferences) { }\n\n...\n\nthis.appPreferences.fetch('key').then((res) => { console.log(res); });\n\n```\n\n",
"platforms": [
"Android",
"BlackBerry 10",
"Browser",
"iOS",
"macOS",
"Windows 8",
"Windows Phone"
],
"repo": "https://github.com/apla/me.apla.cordova.app-preferences",
"cordovaPlugin": {
"name": "cordova-plugin-app-preferences"
}
},
{
"packageName": "@awesome-cordova-plugins/app-rate",
"displayName": "App Rate",
"description": "\nThe AppRate plugin makes it easy to prompt the user to rate your app, either now, later, or never.\n\nRequires Cordova plugin: cordova-plugin-apprate. For more info, please see the [AppRate plugin docs](https://github.com/pushandplay/cordova-plugin-apprate).\n",
"usage": "\n```typescript\nimport { AppRate } from '@awesome-cordova-plugins/app-rate/ngx';\n\nconstructor(private appRate: AppRate) { }\n\n...\n// set certain preferences\nthis.appRate.setPreferences({\n storeAppURL: {\n ios: '<app_id>',\n android: 'market://details?id=<package_name>',\n windows: 'ms-windows-store://review/?ProductId=<store_id>'\n }\n});\n\nthis.appRate.promptForRating(true);\n\n// or, override the whole preferences object\nthis.appRate.setPreferences({\n usesUntilPrompt: 3,\n storeAppURL: {\n ios: '<app_id>',\n android: 'market://details?id=<package_name>',\n windows: 'ms-windows-store://review/?ProductId=<store_id>'\n }\n});\n\nthis.appRate.promptForRating(false);\n```\n",
"platforms": [
"Android",
"BlackBerry 10",
"iOS",
"Windows"
],
"repo": "https://github.com/pushandplay/cordova-plugin-apprate",
"cordovaPlugin": {
"name": "cordova-plugin-apprate"
},
"premierSlug": "app-rate"
},
{
"packageName": "@awesome-cordova-plugins/app-version",
"displayName": "App Version",
"description": "\nReads the version of your app from the target build settings.\n\nRequires Cordova plugin: `cordova-plugin-app-version`. For more info, please see the [Cordova App Version docs](https://github.com/whiteoctober/cordova-plugin-app-version).\n",
"usage": "\n```typescript\nimport { AppVersion } from '@awesome-cordova-plugins/app-version/ngx';\n\nconstructor(private appVersion: AppVersion) { }\n\n...\n\n\nthis.appVersion.getAppName();\nthis.appVersion.getPackageName();\nthis.appVersion.getVersionCode();\nthis.appVersion.getVersionNumber();\n\n```\n",
"platforms": [
"Android",
"iOS",
"Windows"
],
"repo": "https://github.com/whiteoctober/cordova-plugin-app-version",
"cordovaPlugin": {
"name": "cordova-plugin-app-version"
},
"premierSlug": "app-version"
},
{
"packageName": "@awesome-cordova-plugins/apple-wallet",
"displayName": "Apple Wallet",
"description": "\nA Cordova plugin that enables users from Add Payment Cards to their Apple Wallet.\n",
"usage": "\n```typescript\nimport { AppleWallet } from '@awesome-cordova-plugins/apple-wallet/ngx';\n\n\nconstructor(private appleWallet: AppleWallet) { }\n\n\n...\n\n\n// Simple call to determine if the current device supports Apple Pay and has a supported card installed.\nthis.appleWallet.isAvailable()\n .then((res: boolean) => {\n // Expect res to be boolean\n })\n .catch((err) => {\n // Catch {{err}} here\n });\n\n...\n\n\n// Simple call to check Card Eligibility\nthis.appleWallet.checkCardEligibility(primaryAccountIdentifier: string)\n .then((res: boolean) => {\n // Expect res to be boolean\n })\n .catch((err) => {\n // Catch {{err}} here\n });\n\n\n...\n\n\n// Simple call to checkCardEligibilityBySuffix\nthis.appleWallet.checkCardEligibilityBySuffix(cardSuffix: string)\n .then((res: boolean) => {\n // Expect res to be boolean\n })\n .catch((err) => {\n // Catch {{err}} here\n });\n\n\n...\n\n// Simple call to check out if there is any paired Watches so that you can toggle visibility of 'Add to Watch' button\nthis.appleWallet.checkPairedDevices()\n .then((res: WatchExistData) => {\n // object contains boolean flags showing paired devices\n })\n .catch((err) => {\n // Catch {{err}} here\n });\n\n\n...\n\n\n\n// Simple call to check paired devices with a card by its suffix\nthis.appleWallet.checkPairedDevicesBySuffix(cardSuffix: string)\n .then((res: PairedDevicesFlags) => {\n // object contains boolean values that ensure that card is already exists in wallet or paired-watch\n })\n .catch((err) => {\n // Catch {{err}} here\n });\n\n\n...\n\n\n// Simple call with the configuration data needed to instantiate a new PKAddPaymentPassViewController object.\n// This method provides the data needed to create a request to add your payment pass (credit/debit card). After a successful callback, pass the certificate chain to your issuer server-side using our callback delegate method `AppleWallet.completeAddPaymentPass`. The issuer server-side should returns an encrypted JSON payload containing the encrypted card data, which is required to be get the final response\n\nthis.appleWallet.startAddPaymentPass(data: cardData)\n .then((res: SignatureCertificatesData) => {\n // User proceed and successfully asked to add card to his wallet\n // Use the callback response JSON payload to complete addition process\n })\n .catch((err) => {\n // Catch {{err}} here\n });\n\n\n...\n\n\nthis.appleWallet.completeAddPaymentPass(data: encryptedCardData)\n .then((res: string) => {\n // Expect res to be string either 'success' or 'error'\n })\n .catch((err) => {\n // Catch {{err}} here\n // Error and can not add the card, or something wrong happend\n // PKAddPaymentPassViewController will be dismissed\n });\n\n```",
"platforms": [
"iOS"
],
"repo": "https://github.com/tomavic/cordova-apple-wallet",
"cordovaPlugin": {
"name": "cordova-apple-wallet"
}
},
{
"packageName": "@awesome-cordova-plugins/appsflyer",
"displayName": "Appsflyer",
"description": "\nAppsflyer Cordova SDK support for Attribution\n",
"usage": "\n```typescript\nimport { Appsflyer } from '@awesome-cordova-plugins/appsflyer/ngx';\n\n\nconstructor(private appsflyer: Appsflyer) { }\n\n...\n\n\nthis.appsflyer.initSdk(options);\n\n```\n",
"platforms": [
"iOS",
"Android"
],
"repo": "https://github.com/AppsFlyerSDK/cordova-plugin-appsflyer-sdk",
"cordovaPlugin": {
"name": "cordova-plugin-appsflyer-sdk"
}
},
{
"packageName": "@awesome-cordova-plugins/background-fetch",
"displayName": "Background Fetch",
"description": "\niOS Background Fetch Implementation. See: https://developer.apple.com/reference/uikit/uiapplication#1657399\niOS Background Fetch is basically an API which wakes up your app about every 15 minutes (during the user's prime-time hours) and provides your app exactly 30s of background running-time. This plugin will execute your provided callbackFn whenever a background-fetch event occurs. There is no way to increase the rate which a fetch-event occurs and this plugin sets the rate to the most frequent possible value of UIApplicationBackgroundFetchIntervalMinimum -- iOS determines the rate automatically based upon device usage and time-of-day (ie: fetch-rate is about ~15min during prime-time hours; less frequently when the user is presumed to be sleeping, at 3am for example).\nFor more detail, please see https://github.com/transistorsoft/cordova-plugin-background-fetch\n",
"usage": "\n\n```typescript\nimport { BackgroundFetch, BackgroundFetchConfig } from '@awesome-cordova-plugins/background-fetch/ngx';\n\n\nconstructor(private backgroundFetch: BackgroundFetch) {\n\n const config: BackgroundFetchConfig = {\n stopOnTerminate: false, // Set true to cease background-fetch from operating after user \"closes\" the app. Defaults to true.\n }\n\n backgroundFetch.configure(config)\n .then(() => {\n console.log('Background Fetch initialized');\n\n this.backgroundFetch.finish();\n\n })\n .catch(e => console.log('Error initializing background fetch', e));\n\n // Start the background-fetch API. Your callbackFn provided to #configure will be executed each time a background-fetch event occurs. NOTE the #configure method automatically calls #start. You do not have to call this method after you #configure the plugin\n backgroundFetch.start();\n\n // Stop the background-fetch API from firing fetch events. Your callbackFn provided to #configure will no longer be executed.\n backgroundFetch.stop();\n\n\n}\n\n```",
"platforms": [
"iOS"
],
"repo": "https://github.com/transistorsoft/cordova-plugin-background-fetch",
"cordovaPlugin": {
"name": "cordova-plugin-background-fetch"
}
},
{
"packageName": "@awesome-cordova-plugins/background-geolocation",
"displayName": "Background Geolocation",
"description": "\nThis plugin provides foreground and background geolocation with battery-saving \"circular region monitoring\" and \"stop detection\". For\nmore detail, please see https://github.com/mauron85/cordova-plugin-background-geolocation\n",
"usage": "\n\nBackgroundGeolocation must be called within app.ts and or before Geolocation. Otherwise the platform will not ask you for background tracking permission.\n\n```typescript\nimport { BackgroundGeolocation, BackgroundGeolocationConfig, BackgroundGeolocationEvents, BackgroundGeolocationResponse } from '@awesome-cordova-plugins/background-geolocation/ngx';\n\nconstructor(private backgroundGeolocation: BackgroundGeolocation) { }\n\n...\n\nconst config: BackgroundGeolocationConfig = {\n desiredAccuracy: 10,\n stationaryRadius: 20,\n distanceFilter: 30,\n debug: true, // enable this hear sounds for background-geolocation life-cycle.\n stopOnTerminate: false, // enable this to clear background location settings when the app terminates\n };\n\nthis.backgroundGeolocation.configure(config)\n .then(() => {\n\n this.backgroundGeolocation.on(BackgroundGeolocationEvents.location).subscribe((location: BackgroundGeolocationResponse) => {\n console.log(location);\n\n // IMPORTANT: You must execute the finish method here to inform the native plugin that you're finished,\n // and the background-task may be completed. You must do this regardless if your operations are successful or not.\n // IF YOU DON'T, ios will CRASH YOUR APP for spending too much time in the background.\n this.backgroundGeolocation.finish(); // FOR IOS ONLY\n });\n\n });\n\n// start recording location\nthis.backgroundGeolocation.start();\n\n// If you wish to turn OFF background-tracking, call the #stop method.\nthis.backgroundGeolocation.stop();\n\n```",
"platforms": [
"Android",
"iOS"
],
"repo": "https://github.com/mauron85/cordova-plugin-background-geolocation",
"cordovaPlugin": {
"name": "@mauron85/cordova-plugin-background-geolocation"
}
},
{
"packageName": "@awesome-cordova-plugins/background-mode",
"displayName": "Background Mode",
"description": "\nCordova plugin to prevent the app from going to sleep while in background.\nRequires Cordova plugin: cordova-plugin-background-mode. For more info about plugin, visit: https://github.com/katzer/cordova-plugin-background-mode",
"usage": "\n```typescript\nimport { BackgroundMode } from '@awesome-cordova-plugins/background-mode/ngx';\n\nconstructor(private backgroundMode: BackgroundMode) { }\n\n...\n\nthis.backgroundMode.enable();\n```\n",
"platforms": [
"AmazonFire OS",
"Android",
"Browser",
"iOS",
"Windows"
],
"repo": "https://github.com/katzer/cordova-plugin-background-mode",
"cordovaPlugin": {
"name": "cordova-plugin-background-mode"
}
},
{
"packageName": "@awesome-cordova-plugins/background-upload",
"displayName": "BackgroundUpload",
"description": "\nThis plugin does something\n",
"usage": "\n```typescript\nimport { BackgroundUpload } from '@awesome-cordova-plugins/background-upload/ngx';\n\n\nconstructor(private backgroundUpload: BackgroundUpload) { }\n\n...\n\n\nthis.backgroundUpload.init({})\n .then((res: any) => console.log(res))\n .catch((error: any) => console.error(error));\n\n```\n",
"platforms": [
"Android",
"iOS"
],
"repo": "https://github.com/spoonconsulting/cordova-plugin-background-upload",
"cordovaPlugin": {
"name": "cordova-plugin-background-upload"
}
},
{
"packageName": "@awesome-cordova-plugins/badge",
"displayName": "Badge",
"description": "\nThe essential purpose of badge numbers is to enable an application to inform its users that it has something for them — for example, unread messages — when the application isn’t running in the foreground.\n\nRequires Cordova plugin: cordova-plugin-badge. For more info, please see the [Badge plugin docs](https://github.com/katzer/cordova-plugin-badge).\n\nAndroid Note: Badges have historically only been a feature implemented by third party launchers and not visible unless one of those launchers was being used (E.G. Samsung or Nova Launcher) and if enabled by the user. As of Android 8 (Oreo), [notification badges](https://developer.android.com/training/notify-user/badges) were introduced officially to reflect unread notifications. This plugin is unlikely to work as expected on devices running Android 8 or newer. Please see the [local notifications plugin docs](https://github.com/katzer/cordova-plugin-local-notifications) for more information on badge use with notifications.\n",
"usage": "\n```typescript\nimport { Badge } from '@awesome-cordova-plugins/badge/ngx';\n\nconstructor(private badge: Badge) { }\n\n...\n\nthis.badge.set(10);\nthis.badge.increase(1);\nthis.badge.clear();\n```\n",
"platforms": [
"Android",
"Browser",
"iOS",
"Windows"
],
"repo": "https://github.com/katzer/cordova-plugin-badge",
"cordovaPlugin": {
"name": "cordova-plugin-badge"
},
"premierSlug": "badge"
},
{
"packageName": "@awesome-cordova-plugins/barcode-scanner",
"displayName": "Barcode Scanner",
"description": "\nThe Barcode Scanner Plugin opens a camera view and automatically scans a barcode, returning the data back to you.\n\nRequires Cordova plugin: `phonegap-plugin-barcodescanner`. For more info, please see the [BarcodeScanner plugin docs](https://github.com/phonegap/phonegap-plugin-barcodescanner).\n",
"usage": "\n```typescript\nimport { BarcodeScanner } from '@awesome-cordova-plugins/barcode-scanner/ngx';\n\nconstructor(private barcodeScanner: BarcodeScanner) { }\n\n...\n\n\nthis.barcodeScanner.scan().then(barcodeData => {\n console.log('Barcode data', barcodeData);\n}).catch(err => {\n\tconsole.log('Error', err);\n});\n```",
"platforms": [
"Android",
"BlackBerry 10",
"Browser",
"iOS",
"Windows"
],
"repo": "https://github.com/phonegap/phonegap-plugin-barcodescanner",
"cordovaPlugin": {
"name": "phonegap-plugin-barcodescanner"
}
},
{
"packageName": "@awesome-cordova-plugins/battery-status",
"displayName": "Battery Status",
"description": "\nRequires Cordova plugin: cordova-plugin-batterystatus. For more info, please see the [BatteryStatus plugin docs](https://github.com/apache/cordova-plugin-battery-status).\n",
"usage": "\n```typescript\nimport { BatteryStatus } from '@awesome-cordova-plugins/battery-status/ngx';\n\nconstructor(private batteryStatus: BatteryStatus) { }\n\n...\n\n\n// watch change in battery status\nconst subscription = this.batteryStatus.onChange().subscribe(status => {\n console.log(status.level, status.isPlugged);\n});\n\n// stop watch\nsubscription.unsubscribe();\n\n```",
"platforms": [
"iOS",
"Android",
"Windows",
"Browser"
],
"repo": "https://github.com/apache/cordova-plugin-battery-status",
"cordovaPlugin": {
"name": "cordova-plugin-battery-status"
}
},
{
"packageName": "@awesome-cordova-plugins/biocatch",
"displayName": "BioCatch",
"description": "\nBioCatch SDK Cordova support\n",
"usage": "\n```typescript\nimport { BioCatch } from '@awesome-cordova-plugins/biocatch';\n\n\nconstructor(private biocatch: BioCatch) { }\n\n...\n\n\nthis.biocatch.start('customer-session-1', 'http://example.com', 'some-public-key')\n .then((res: any) => console.log(res))\n .catch((error: any) => console.error(error));\n\n```\n",
"platforms": [
"iOS",
"Android"
],
"repo": "https://bitbucket.org/carlos_orellana/ionic-plugin",
"cordovaPlugin": {
"name": "cordova-plugin-biocatch"
}
},
{
"packageName": "@awesome-cordova-plugins/biometric-wrapper",
"displayName": "BiometricWrapper",
"description": "\nThis plugin capture biometric(Iris and Fingerprint) and validate the user.\nMay be used in Banking domain\n",
"usage": "\n```typescript\nimport { BiometricWrapper } from '@awesome-cordova-plugins/biometric-wrapper/ngx';\n\n\nconstructor(private biometricWrapper: BiometricWrapper) { }\n\n...\n\n\nthis.biometricWrapper.activateIris({'PID_XML': '<pid-xml/>'})\n .then((res: any) => )\n .catch((error: any) => );\n\n```\n",
"platforms": [
"Android"
],
"repo": "",
"installVariables": [],
"cordovaPlugin": {
"name": "cordova-plugin-biometric"
}
},
{
"packageName": "@awesome-cordova-plugins/ble",
"displayName": "BLE",
"description": "\nThis plugin enables communication between a phone and Bluetooth Low Energy (BLE) peripherals.\n\nThe plugin provides a simple JavaScript API for iOS and Android.\n\n- Scan for peripherals\n- Connect to a peripheral\n- Read the value of a characteristic\n- Write new value to a characteristic\n- Get notified when characteristic's value changes\n\nAdvertising information is returned when scanning for peripherals. Service, characteristic, and property info is returned when connecting to a peripheral. All access is via service and characteristic UUIDs. The plugin manages handles internally.\n\nSimultaneous connections to multiple peripherals are supported.\n",
"usage": "\n\n```typescript\n\nimport { BLE } from '@awesome-cordova-plugins/ble/ngx';\n\nconstructor(private ble: BLE) { }\n\n```\n\n## Peripheral Data\n\nPeripheral Data is passed to the success callback when scanning and connecting. Limited data is passed when scanning.\n\n```typescript\n {\n 'name': 'Battery Demo',\n 'id': '20:FF:D0:FF:D1:C0',\n 'advertising': [2,1,6,3,3,15,24,8,9,66,97,116,116,101,114,121],\n 'rssi': -55\n }\n```\nAfter connecting, the peripheral object also includes service, characteristic and descriptor information.\n\n```typescript\n {\n 'name': 'Battery Demo',\n 'id': '20:FF:D0:FF:D1:C0',\n 'advertising': [2,1,6,3,3,15,24,8,9,66,97,116,116,101,114,121],\n 'rssi': -55,\n 'services': [\n '1800',\n '1801',\n '180f'\n ],\n 'characteristics': [\n {\n 'service': '1800',\n 'characteristic': '2a00',\n 'properties': [\n 'Read'\n ]\n },\n {\n 'service': '1800',\n 'characteristic': '2a01',\n 'properties': [\n 'Read'\n ]\n },\n {\n 'service': '1801',\n 'characteristic': '2a05',\n 'properties': [\n 'Read'\n ]\n },\n {\n 'service': '180f',\n 'characteristic': '2a19',\n 'properties': [\n 'Read'\n ],\n 'descriptors': [\n {\n 'uuid': '2901'\n },\n {\n 'uuid': '2904'\n }\n ]\n }\n ]\n }\n```\n\n## Advertising Data\nBluetooth advertising data is returned in when scanning for devices. The format varies depending on your platform. On Android advertising data will be the raw advertising bytes. iOS does not allow access to raw advertising data, so a dictionary of data is returned.\n\nThe advertising information for both Android and iOS appears to be a combination of advertising data and scan response data.\n\n### Android\n\n```typescript\n {\n 'name': 'demo',\n 'id': '00:1A:7D:DA:71:13',\n 'advertising': ArrayBuffer,\n 'rssi': -37\n }\n```\n\nConvert the advertising info to a Uint8Array for processing. `var adData = new Uint8Array(peripheral.advertising)`\n\n### iOS\n\nNote that iOS uses the string value of the constants for the [Advertisement Data Retrieval Keys](https://developer.apple.com/library/ios/documentation/CoreBluetooth/Reference/CBCentralManagerDelegate_Protocol/index.html#//apple_ref/doc/constant_group/Advertisement_Data_Retrieval_Keys). This will likely change in the future.\n\n```typescript\n {\n 'name': 'demo',\n 'id': 'D8479A4F-7517-BCD3-91B5-3302B2F81802',\n 'advertising': {\n 'kCBAdvDataChannel': 37,\n 'kCBAdvDataServiceData': {\n 'FED8': {\n 'byteLength': 7 // data not shown\n }\n },\n 'kCBAdvDataLocalName': 'demo',\n 'kCBAdvDataServiceUUIDs': ['FED8'],\n 'kCBAdvDataManufacturerData': {\n 'byteLength': 7 // data not shown\n },\n 'kCBAdvDataTxPowerLevel': 32,\n 'kCBAdvDataIsConnectable': true\n },\n 'rssi': -53\n }\n```\n\n## Typed Arrays\n\nThis plugin uses typed Arrays or ArrayBuffers for sending and receiving data.\n\nThis means that you need convert your data to ArrayBuffers before sending and from ArrayBuffers when receiving.\n\n```typescript\n // ASCII only\n function stringToBytes(string) {\n var array = new Uint8Array(string.length);\n for (var i = 0, l = string.length; i < l; i++) {\n array[i] = string.charCodeAt(i);\n }\n return array.buffer;\n }\n\n // ASCII only\n function bytesToString(buffer) {\n return String.fromCharCode.apply(null, new Uint8Array(buffer));\n }\n```\nYou can read more about typed arrays in these articles on [MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arrays) and [HTML5 Rocks](http://www.html5rocks.com/en/tutorials/webgl/typed_arrays/).\n\n## UUIDs\n\nUUIDs are always strings and not numbers. Some 16-bit UUIDs, such as '2220' look like integers, but they're not. (The integer 2220 is 0x8AC in hex.) This isn't a problem with 128 bit UUIDs since they look like strings 82b9e6e1-593a-456f-be9b-9215160ebcac. All 16-bit UUIDs should also be passed to methods as strings.\n",
"platforms": [
"Android",
"iOS"
],
"repo": "https://github.com/don/cordova-plugin-ble-central",
"cordovaPlugin": {
"name": "cordova-plugin-ble-central"
}
},
{
"packageName": "@awesome-cordova-plugins/blinkid",
"displayName": "BlinkId",
"description": "\nMicroblink SDK wrapper for barcode and document scanning. See the\nblinkid-phonegap repository for available recognizers and other settings\n",
"usage": "\n```typescript\nimport { BlinkId, RecognizerResultState } from '@awesome-cordova-plugins/blinkid/ngx';\n\nconstructor(private blinkId: BlinkId) { }\n\n...\n\nconst overlaySettings = new this.blinkId.DocumentOverlaySettings();\n\nconst usdlRecognizer = new this.blinkId.UsdlRecognizer();\nconst usdlSuccessFrameGrabber = new this.blinkId.SuccessFrameGrabberRecognizer(usdlRecognizer);\n\nconst barcodeRecognizer = new this.blinkId.BarcodeRecognizer();\nbarcodeRecognizer.scanPdf417 = true;\n\nconst recognizerCollection = new this.blinkId.RecognizerCollection([\n usdlSuccessFrameGrabber,\n barcodeRecognizer,\n]);\n\nconst canceled = await this.blinkId.scanWithCamera(\n overlaySettings,\n recognizerCollection,\n { ios: IOS_LICENSE_KEY, android: ANDROID_LICENSE_KEY },\n);\n\nif (!canceled) {\n if (usdlRecognizer.result.resultState === RecognizerResultState.valid) {\n const successFrame = usdlSuccessFrameGrabber.result.successFrame;\n if (successFrame) {\n this.base64Img = `data:image/jpg;base64, ${successFrame}`;\n this.fields = usdlRecognizer.result.fields;\n }\n } else {\n this.barcodeStringData = barcodeRecognizer.result.stringData;\n }\n}\n\n...\n\nconst overlaySettings = new this.blinkId.BlinkCardOverlaySettings();\nconst recognizer = new this.blinkId.BlinkCardRecognizer();\nrecognizer.returnFullDocumentImage = false;\nrecognizer.detectGlare = true;\nrecognizer.extractCvv = true;\nrecognizer.extractValidThru = true;\nrecognizer.extractOwner = true;\n\nconst recognizerCollection = new this.blinkId.RecognizerCollection([recognizer]);\nconst canceled = await this.blinkId.scanWithCamera(\n overlaySettings,\n recognizerCollection,\n {\n ios: '', //iOS License Key\n android: '' //Android License Key\n },\n);\n\nif (!canceled) {\n if (recognizer.result.resultState === RecognizerResultState.valid) {\n const results = recognizer.result;\n\n if (results.resultState === RecognizerResultState.valid) {\n const ccInfo = {\n cardNumber: Number(results.cardNumber),\n expirationMonth: Number(results.validThru.month),\n expirationYear: Number(results.validThru.year),\n cvv: Number(results.cvv)\n };\n }\n }\n```\n",
"platforms": [
"iOS",
"Android"
],
"repo": "https://github.com/BlinkID/blinkid-phonegap",
"cordovaPlugin": {
"name": "blinkid-cordova"
}
},
{
"packageName": "@awesome-cordova-plugins/bluetooth-classic-serial-port",
"displayName": "Bluetooth Classic Serial Port",
"description": "This plugin is written using the iOS Accessory Framework (MFi) to support Classic Bluetooth on iOS.",
"usage": "\n```typescript\nimport { BluetoothClassicSerialPort } from '@awesome-cordova-plugins/bluetooth-classic-serial-port/ngx';\n\nconstructor(private bluetoothClassicSerialPort: BluetoothClassicSerialPort) { }\n\n\n// Write a string\nthis.bluetoothClassicSerialPort.write(\"00001101-0000-1000-8000-00805F9B34FB\", \"hello, world\", success, failure);\n\n// Array of int or bytes\nthis.bluetoothClassicSerialPort.write(\"00001101-0000-1000-8000-00805F9B34FB\", [186, 220, 222], success, failure);\n\n// Typed Array\nvar data = new Uint8Array(4);\ndata[0] = 0x41;\ndata[1] = 0x42;\ndata[2] = 0x43;\ndata[3] = 0x44;\nthis.bluetoothClassicSerialPort.write(interfaceId, data, success, failure);\n\n// Array Buffer\nthis.bluetoothClassicSerialPort.write(interfaceId, data.buffer, success, failure);\n```\n\n// iOS select accessory\n\n```typescript\n async selectAccessory() {\n const deviceDiscovery = this.bluetoothClassicSerialPort.setDeviceDiscoveredListener().subscribe(async (connectionConfig) => {\n deviceDiscovery.unsubscribe();\n })\n\n await this.bluetoothClassicSerialPort.discoverUnpaired().catch(error => {\n deviceDiscovery.unsubscribe();\n })\n\n }\n```\n\n",
"platforms": [
"Android",
"iOS",
"Browser"
],
"repo": "https://github.com/MaximBelov/cordova-plugin-bluetooth-classic-serial-port",
"cordovaPlugin": {
"name": "cordova-plugin-bluetooth-classic-serial-port"
}
},
{
"packageName": "@awesome-cordova-plugins/bluetooth-le",
"displayName": "BluetoothLE",
"description": "\nThis plugin has the most complete implementation for interacting with Bluetooth LE devices on Android, iOS and partially Windows.\nIt's a wrap around [randdusing/cordova-plugin-bluetoothle](https://github.com/randdusing/cordova-plugin-bluetoothle/blob/master/readme.md) cordova plugin for Ionic.\nIt supports peripheral **and** central modes and covers most of the API methods available on Android and iOS.\n",
"usage": "\n```typescript\nimport { BluetoothLE } from '@awesome-cordova-plugins/bluetooth-le/ngx';\n\n\nconstructor(public bluetoothle: BluetoothLE, public plt: Platform) {\n\n this.plt.ready().then((readySource) => {\n\n console.log('Platform ready from', readySource);\n\n this.bluetoothle.initialize().then(ble => {\n console.log('ble', ble.status) // logs 'enabled'\n });\n\n });\n}\n\n```\n\n",
"platforms": [
"Android",
"iOS"
],
"repo": "https://github.com/randdusing/cordova-plugin-bluetoothle",
"installVariables": [],
"cordovaPlugin": {
"name": "cordova-plugin-bluetoothle"
}
},
{
"packageName": "@awesome-cordova-plugins/bluetooth-serial",
"displayName": "Bluetooth Serial",
"description": "This plugin enables serial communication over Bluetooth. It was written for communicating between Android or iOS and an Arduino (not Android to Android or iOS to iOS).",
"usage": "\n```typescript\nimport { BluetoothSerial } from '@awesome-cordova-plugins/bluetooth-serial/ngx';\n\nconstructor(private bluetoothSerial: BluetoothSerial) { }\n\n\n// Write a string\nthis.bluetoothSerial.write('hello world').then(success, failure);\n\n// Array of int or bytes\nthis.bluetoothSerial.write([186, 220, 222]).then(success, failure);\n\n// Typed Array\nvar data = new Uint8Array(4);\ndata[0] = 0x41;\ndata[1] = 0x42;\ndata[2] = 0x43;\ndata[3] = 0x44;\nthis.bluetoothSerial.write(data).then(success, failure);\n\n// Array Buffer\nthis.bluetoothSerial.write(data.buffer).then(success, failure);\n```\n",
"platforms": [
"Android",
"iOS",
"Windows Phone 8"
],
"repo": "https://github.com/don/BluetoothSerial",
"cordovaPlugin": {
"name": "cordova-plugin-bluetooth-serial"
}
},
{
"packageName": "@awesome-cordova-plugins/branch-io",
"displayName": "BranchIo",
"description": "\nBranch.io is an attribution service for deeplinking and invitation links\n",
"usage": "\n```\nimport { BranchIo } from '@awesome-cordova-plugins/branch-io/ngx';\n\n\nconstructor(private branch: BranchIo) { }\n\n```\n",
"platforms": [
"iOS",
"Android"
],
"repo": "https://github.com/BranchMetrics/cordova-ionic-phonegap-branch-deep-linking",
"cordovaPlugin": {
"name": "branch-cordova-sdk"
}
},
{
"packageName": "@awesome-cordova-plugins/broadcaster",
"displayName": "Broadcaster",
"description": "\nThis plugin adds exchanging events between native code and your app.\n",
"usage": "\n```typescript\nimport { Broadcaster } from '@awesome-cordova-plugins/broadcaster/ngx';\n\nconstructor(private broadcaster: Broadcaster) { }\n\n...\n\n// Listen to events from Native\nthis.broadcaster.addEventListener('eventName').subscribe((event) => console.log(event));\n\n// Send event to Native\nthis.broadcaster.fireNativeEvent('eventName', {}).then(() => console.log('success'));\n\n```\n",
"platforms": [
"Android",
"iOS",
"Browser"
],
"repo": "https://github.com/bsorrentino/cordova-broadcaster",
"cordovaPlugin": {
"name": "cordova-plugin-broadcaster"
}
},
{
"packageName": "@awesome-cordova-plugins/build-info",
"displayName": "Build Info",
"description": "\nThis plugin provides build information.\n",
"usage": "\n```\nimport { BuildInfo } from '@awesome-cordova-plugins/build-info/ngx';\n\nthis.platform.ready().then(() => {\n console.log('BuildInfo.baseUrl =' + BuildInfo.baseUrl)\n console.log('BuildInfo.packageName =' + BuildInfo.packageName)\n console.log('BuildInfo.basePackageName=' + BuildInfo.basePackageName)\n console.log('BuildInfo.displayName =' + BuildInfo.displayName)\n console.log('BuildInfo.name =' + BuildInfo.name)\n console.log('BuildInfo.version =' + BuildInfo.version)\n console.log('BuildInfo.versionCode =' + BuildInfo.versionCode)\n console.log('BuildInfo.debug =' + BuildInfo.debug)\n console.log('BuildInfo.buildType =' + BuildInfo.buildType)\n console.log('BuildInfo.flavor =' + BuildInfo.flavor)\n console.log('BuildInfo.buildDate =' + BuildInfo.buildDate)\n console.log('BuildInfo.installDate =' + BuildInfo.installDate)\n})\n```\n",
"platforms": [
"Android",
"iOS",
"Windows",
"macOS",
"browser",
"Electron"
],
"repo": "https://github.com/lynrin/cordova-plugin-buildinfo",
"cordovaPlugin": {
"name": "cordova-plugin-buildinfo"
}
},
{
"packageName": "@awesome-cordova-plugins/calendar",
"displayName": "Calendar",
"description": "\nThis plugin allows you to add events to the Calendar of the mobile device.\n\nRequires Cordova plugin: `cordova-plugin-calendar`. For more info, please see the [Calendar plugin docs](https://github.com/EddyVerbruggen/Calendar-PhoneGap-Plugin).\n\n",
"usage": "\n```typescript\nimport { Calendar } from '@awesome-cordova-plugins/calendar/ngx';\n\nconstructor(private calendar: Calendar) { }\n\n\nthis.calendar.createCalendar('MyCalendar').then(\n (msg) => { console.log(msg); },\n (err) => { console.log(err); }\n);\n```",
"platforms": [
"Android",
"iOS"
],
"repo": "https://github.com/EddyVerbruggen/Calendar-PhoneGap-Plugin",
"cordovaPlugin": {
"name": "cordova-plugin-calendar"
},
"premierSlug": "calendar"
},
{
"packageName": "@awesome-cordova-plugins/call-directory",
"displayName": "Call Directory",
"description": "\nThis plugin can add phone numbers to an Callkit call directory extension. Call `reloadExtension` after using `addIdentification` and `removeIdentification`\nto process the changes in the call directory extension.\n",
"usage": "\n```typescript\nimport { CallDirectory } from '@awesome-cordova-plugins/call-directory/ngx';\n\n\nconstructor(private callDirectory: CallDirectory) { }\n\n\nlet items = [{label: \"Hello\", number: \"123\"}];\nthis.callDirectory.addIdentification(items)\n .then((res: any) => console.log(res))\n .catch((error: any) => console.error(error));\n\nthis.callDirectory.reloadExtension()\n .then(res: string) => console.log(res))\n .catch((error: any) => console.error(error));\n```\n",
"platforms": [
"iOS"
],
"repo": "https://github.com/GEDYSIntraWare/cordova-plugin-call-directory",
"installVariables": [
"EXT_NAME",
"ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES"
],
"cordovaPlugin": {
"name": "cordova-plugin-call-directory"
}
},
{
"packageName": "@awesome-cordova-plugins/call-number",
"displayName": "Call Number",
"description": "\nCall a number directly from your Cordova/Ionic application.\n**NOTE**: The iOS Simulator (and maybe Android Simulators) do not provide access to the phone subsystem.\n",
"usage": "\n```typescript\nimport { CallNumber } from '@awesome-cordova-plugins/call-number/ngx';\n\nconstructor(private callNumber: CallNumber) { }\n\n...\n\n\nthis.callNumber.callNumber(\"18001010101\", true)\n .then(res => console.log('Launched dialer!', res))\n .catch(err => console.log('Error launching dialer', err));\n\n```\n",
"platforms": [
"Android",
"iOS"
],
"repo": "https://github.com/Rohfosho/CordovaCallNumberPlugin",
"cordovaPlugin": {
"name": "call-number"
}
},
{
"packageName": "@awesome-cordova-plugins/camera-preview",
"displayName": "Camera Preview",
"description": "\nShowing camera preview in HTML\n\nRequires Cordova plugin: `https://github.com/cordova-plugin-camera-preview/cordova-plugin-camera-preview.git`. For more info, please see the [Cordova Camera Preview docs](https://github.com/cordova-plugin-camera-preview/cordova-plugin-camera-preview).\n",
"usage": "\n```typescript\nimport { CameraPreview, CameraPreviewPictureOptions, CameraPreviewOptions, CameraPreviewDimensions } from '@awesome-cordova-plugins/camera-preview/ngx';\n\nconstructor(private cameraPreview: CameraPreview) { }\n\n...\n\n// camera options (Size and location). In the following example, the preview uses the rear camera and display the preview in the back of the webview\nconst cameraPreviewOpts: CameraPreviewOptions = {\n x: 0,\n y: 0,\n width: window.screen.width,\n height: window.screen.height,\n camera: 'rear',\n tapPhoto: true,\n previewDrag: true,\n toBack: true,\n alpha: 1\n}\n\n// start camera\nthis.cameraPreview.startCamera(cameraPreviewOpts).then(\n (res) => {\n console.log(res)\n },\n (err) => {\n console.log(err)\n });\n\n// Set the handler to run every time we take a picture\nthis.cameraPreview.setOnPictureTakenHandler().subscribe((result) => {\n console.log(result);\n // do something with the result\n});\n\n\n// picture options\nconst pictureOpts: CameraPreviewPictureOptions = {\n width: 1280,\n height: 1280,\n quality: 85\n}\n\n// take a picture\nthis.cameraPreview.takePicture(this.pictureOpts).then((imageData) => {\n this.picture = 'data:image/jpeg;base64,' + imageData;\n}, (err) => {\n console.log(err);\n this.picture = 'assets/img/test.jpg';\n});\n\n// take a snap shot\nthis.cameraPreview.takeSnapshot(this.pictureOpts).then((imageData) => {\n this.picture = 'data:image/jpeg;base64,' + imageData;\n}, (err) => {\n console.log(err);\n this.picture = 'assets/img/test.jpg';\n});\n\n\n// Switch camera\nthis.cameraPreview.switchCamera();\n\n// set color effect to negative\nthis.cameraPreview.setColorEffect('negative');\n\n// Stop the camera preview\nthis.cameraPreview.stopCamera();\n\n```\n",
"platforms": [
"Android",
"iOS"
],
"repo": "https://github.com/cordova-plugin-camera-preview/cordova-plugin-camera-preview",
"cordovaPlugin": {
"name": "cordova-plugin-camera-preview"
}
},
{
"packageName": "@awesome-cordova-plugins/camera",
"displayName": "Camera",
"description": "\nTake a photo or capture video.\n\nRequires the Cordova plugin: `cordova-plugin-camera`. For more info, please see the [Cordova Camera Plugin Docs](https://github.com/apache/cordova-plugin-camera).\n\n[Warning] Since IOS 10 the camera requires permissions to be placed in your config.xml add\n```xml\n<config-file parent=\"NSCameraUsageDescription\" platform=\"ios\" target=\"*-Info.plist\">\n <string>You can take photos</string>\n</config-file>\n```\ninside of the <platform name='ios> section\n",
"usage": "\n```typescript\nimport { Camera, CameraOptions } from '@awesome-cordova-plugins/camera/ngx';\n\nconstructor(private camera: Camera) { }\n\n...\n\n\nconst options: CameraOptions = {\n quality: 100,\n destinationType: this.camera.DestinationType.FILE_URI,\n encodingType: this.camera.EncodingType.JPEG,\n mediaType: this.camera.MediaType.PICTURE\n}\n\nthis.camera.getPicture(options).then((imageData) => {\n // imageData is either a base64 encoded string or a file URI\n // If it's base64 (DATA_URL):\n let base64Image = 'data:image/jpeg;base64,' + imageData;\n}, (err) => {\n // Handle error\n});\n```",
"platforms": [
"Android",
"Browser",
"iOS",
"Windows"
],
"repo": "https://github.com/apache/cordova-plugin-camera",
"cordovaPlugin": {
"name": "cordova-plugin-camera"
},
"premierSlug": "camera"
},
{
"packageName": "@awesome-cordova-plugins/chooser",
"displayName": "Chooser",
"description": "\nFile chooser plugin for Cordova.\n\nThe following must be added to config.xml to prevent crashing when selecting large files on Android:\n```xml\n<platform name=\"android\">\n <edit-config\n file=\"app/src/main/AndroidManifest.xml\"\n mode=\"merge\"\n target=\"/manifest/application\">\n <application android:largeHeap=\"true\" />\n </edit-config>\n</platform>\n```\n",
"usage": "\n```typescript\nimport { Chooser } from '@awesome-cordova-plugins/chooser/ngx';\n\n\nconstructor(private chooser: Chooser) { }\n\n...\n\n\nthis.chooser.getFile()\n .then(file => console.log(file ? file.name : 'canceled'))\n .catch((error: any) => console.error(error));\n\n```\n",
"platforms": [
"Android",
"iOS"
],
"repo": "https://github.com/cyph/cordova-plugin-chooser",
"cordovaPlugin": {
"name": "cordova-plugin-chooser"
}
},
{
"packageName": "@awesome-cordova-plugins/clevertap",
"displayName": "CleverTap",
"description": "\nCordova Plugin that wraps CleverTap SDK for Android and iOS\n",
"usage": "\n```typescript\nimport { CleverTap } from '@awesome-cordova-plugins/clevertap/ngx';\n\nconstructor(private clevertap: CleverTap) { }\n\n```\n",
"platforms": [
"Android",
"iOS"
],
"repo": "https://github.com/CleverTap/clevertap-cordova",
"cordovaPlugin": {
"name": "clevertap-cordova"
}
},
{
"packageName": "@awesome-cordova-plugins/clipboard",
"displayName": "Clipboard",
"description": "\nClipboard management plugin for Cordova that supports iOS, Android, and Windows Phone 8.\n\n",
"usage": "\n```typescript\nimport { Clipboard } from '@awesome-cordova-plugins/clipboard/ngx';\n\nconstructor(private clipboard: Clipboard) { }\n\n...\n\n\nthis.clipboard.copy('Hello world');\n\nthis.clipboard.paste().then(\n (resolve: string) => {\n alert(resolve);\n },\n (reject: string) => {\n alert('Error: ' + reject);\n }\n );\n\nthis.clipboard.clear();\n```\n",
"platforms": [
"Android",
"iOS",
"Windows Phone 8"
],
"repo": "https://github.com/ihadeed/cordova-clipboard",
"cordovaPlugin": {
"name": "cordova-clipboard"
},
"premierSlug": "clipboard"
},
{
"packageName": "@awesome-cordova-plugins/cloud-settings",
"displayName": "Cloud Settings",
"description": "\nStores app settings in cloud storage so if the user re-installs the app or installs it on a different device, the settings will be restored and available in the new installation.\n",
"usage": "\n```typescript\nimport { CloudSettings } from '@awesome-cordova-plugins/cloud-settings/ngx';\n\n\nconstructor(private cloudSettings: CloudSettings) { }\n\n...\n\nthis.cloudSettings.exists()\n .then((exists: boolean) => console.log(\"Saved settings exist: \" + exists) )\n\nthis.cloudSettings.load()\n .then((settings: any) => this.settings = settings)\n .catch((error: any) => console.error(error));\n\nthis.cloudSettings.save(this.settings)\n .then((savedSettings: any) => console.log(\"Saved settings: \" + JSON.stringify(savedSettings)))\n .catch((error: any) => console.error(error));\n\n```\n",
"platforms": [
"Android",
"iOS"
],
"repo": "https://github.com/dpa99c/cordova-plugin-cloud-settings",
"installVariables": [
"ANDROID_BACKUP_SERVICE_KEY"
],
"cordovaPlugin": {
"name": "cordova-plugin-cloud-settings"
}
},
{
"packageName": "@awesome-cordova-plugins/code-push",
"displayName": "Code Push",
"description": "\nCodePush plugin for Cordova by Microsoft that supports iOS and Android.\n\nFor more info, please see https://github.com/Dellos7/example-cordova-code-push-plugin\n",
"usage": "\n```typescript\nimport { CodePush } from '@awesome-cordova-plugins/code-push/ngx';\n\nconstructor(private codePush: CodePush) { }\n\n...\n\n// note - mostly error & completed methods of observable will not fire\n// as syncStatus will contain the current state of the update\nthis.codePush.sync().subscribe((syncStatus) => console.log(syncStatus));\n\nconst downloadProgress = (progress) => { console.log(`Downloaded ${progress.receivedBytes} of ${progress.totalBytes}`); }\nthis.codePush.sync({}, downloadProgress).subscribe((syncStatus) => console.log(syncStatus));\n\n```\n",
"platforms": [
"Android",
"iOS"
],
"repo": "https://github.com/Microsoft/cordova-plugin-code-push",
"cordovaPlugin": {
"name": "cordova-plugin-code-push"
}
},
{
"packageName": "@awesome-cordova-plugins/custom-uisdk",
"displayName": "CustomUISDK",
"description": "\nThis plugin is used to access Paytm's native CustomUISDK framework's apis.\n",
"usage": "\n```typescript\nimport { CustomUISDK } from '@awesome-cordova-plugins/custom-uisdk/ngx';\n\nconstructor(private customuisdk: CustomUISDK) { }\n\n...\nthis.customuisdk.functionName('Hello', 123)\n .then((res: any) => console.log(res))\n .catch((error: any) => console.error(error));\n```\n",
"platforms": [
"Android, iOS"
],
"repo": "https://github.com/paytm/paytm-customuisdk-cordova",
"installVariables": [],
"cordovaPlugin": {
"name": "cordova-paytm-customuisdk"
}
},
{
"packageName": "@awesome-cordova-plugins/deeplinks",
"displayName": "Deeplinks",
"description": "This plugin handles deeplinks on iOS and Android for both custom URL scheme links\nand Universal App Links.\n\nPlease read the [ionic plugin deeplinks docs](https://github.com/ionic-team/ionic-plugin-deeplinks) for iOS and Android integration.\nYou must add `universal-links` to your `config.xml` and set up Apple App Site Association (AASA) for iOS and Asset Links for Android.\n",
"usage": "\n```typescript\nimport { Deeplinks } from '@awesome-cordova-plugins/deeplinks/ngx';\n\nconstructor(private deeplinks: Deeplinks) { }\n\nthis.deeplinks.route({\n '/about-us': AboutPage,\n '/universal-links-test': AboutPage,\n '/products/:productId': ProductPage\n }).subscribe(match => {\n // match.$route - the route we matched, which is the matched entry from the arguments to route()\n // match.$args - the args passed in the link\n // match.$link - the full link data\n console.log('Successfully matched route', match);\n }, nomatch => {\n // nomatch.$link - the full link data\n console.error('Got a deeplink that didn\\'t match', nomatch);\n });\n```\n\nAlternatively, if you're using Ionic, there's a convenience method that takes a reference to a `NavController` and handles\nthe actual navigation for you:\n\n```typescript\nthis.deeplinks.routeWithNavController(this.navController, {\n '/about-us': AboutPage,\n '/products/:productId': ProductPage\n}).subscribe(match => {\n // match.$route - the route we matched, which is the matched entry from the arguments to route()\n // match.$args - the args passed in the link\n // match.$link - the full link data\n console.log('Successfully matched route', match);\n }, nomatch => {\n // nomatch.$link - the full link data\n console.error('Got a deeplink that didn\\'t match', nomatch);\n });\n```\n\nSee the [Ionic Deeplinks Demo](https://github.com/ionic-team/ionic2-deeplinks-demo/blob/master/app/app.ts) for an example of how to\nretrieve the `NavController` reference at runtime.\n",
"platforms": [
"Android",
"Browser",
"iOS"
],
"repo": "https://github.com/ionic-team/ionic-plugin-deeplinks",
"installVariables": [
"URL_SCHEME",
"DEEPLINK_SCHEME",
"DEEPLINK_HOST",
"ANDROID_PATH_PREFIX"
],
"cordovaPlugin": {
"name": "ionic-plugin-deeplinks"
},
"premierSlug": "deeplinks"
},
{
"packageName": "@awesome-cordova-plugins/device-accounts",
"displayName": "Device Accounts",
"description": "\nGets the Google accounts associated with the Android device\n",
"usage": "\n```typescript\nimport { DeviceAccounts } from '@awesome-cordova-plugins/device-accounts/ngx';\n\nconstructor(private deviceAccounts: DeviceAccounts) { }\n\n...\n\nthis.deviceAccounts.get()\n .then(accounts => console.log(accounts))\n .catch(error => console.error(error));\n\n```",
"platforms": [
"Android"
],
"repo": "https://github.com/xUnholy/cordova-device-accounts-v2",
"cordovaPlugin": {
"name": "cordova-device-accounts-v2"
}
},
{
"packageName": "@awesome-cordova-plugins/device-motion",
"displayName": "Device Motion",
"description": "\nRequires Cordova plugin: `cordova-plugin-device-motion`. For more info, please see the [Device Motion docs](https://github.com/apache/cordova-plugin-device-motion).\n",
"usage": "\n```typescript\nimport { DeviceMotion, DeviceMotionAccelerationData } from '@awesome-cordova-plugins/device-motion/ngx';\n\nconstructor(private deviceMotion: DeviceMotion) { }\n\n...\n\n// Get the device current acceleration\nthis.deviceMotion.getCurrentAcceleration().then(\n (acceleration: DeviceMotionAccelerationData) => console.log(acceleration),\n (error: any) => console.log(error)\n);\n\n// Watch device acceleration\nvar subscription = this.deviceMotion.watchAcceleration().subscribe((acceleration: DeviceMotionAccelerationData) => {\n console.log(acceleration);\n});\n\n// Stop watch\nsubscription.unsubscribe();\n\n```",
"platforms": [
"Android",
"BlackBerry 10",
"Browser",
"Firefox OS",
"iOS",
"Tizen",
"Ubuntu",
"Windows",
"Windows Phone 8"
],
"repo": "https://github.com/apache/cordova-plugin-device-motion",
"cordovaPlugin": {
"name": "cordova-plugin-device-motion"
}
},
{
"packageName": "@awesome-cordova-plugins/device-orientation",
"displayName": "Device Orientation",
"description": "\nRequires Cordova plugin: `cordova-plugin-device-orientation`. For more info, please see the [Device Orientation docs](https://github.com/apache/cordova-plugin-device-orientation).\n",
"usage": "\n```typescript\n// DeviceOrientationCompassHeading is an interface for compass\nimport { DeviceOrientation, DeviceOrientationCompassHeading } from '@awesome-cordova-plugins/device-orientation/ngx';\n\nconstructor(private deviceOrientation: DeviceOrientation) { }\n\n...\n\n// Get the device current compass heading\nthis.deviceOrientation.getCurrentHeading().then(\n (data: DeviceOrientationCompassHeading) => console.log(data),\n (error: any) => console.log(error)\n);\n\n// Watch the device compass heading change\nvar subscription = this.deviceOrientation.watchHeading().subscribe(\n (data: DeviceOrientationCompassHeading) => console.log(data)\n);\n\n// Stop watching heading change\nsubscription.unsubscribe();\n```",
"platforms": [
"Amazon Fire OS",
"Android",
"BlackBerry 10",
"Browser",
"Firefox OS",
"iOS",
"Tizen",
"Ubuntu",
"Windows",
"Windows Phone"
],
"repo": "https://github.com/apache/cordova-plugin-device-orientation",
"cordovaPlugin": {
"name": "cordova-plugin-device-orientation"
}
},
{
"packageName": "@awesome-cordova-plugins/device",
"displayName": "Device",
"description": "\nAccess information about the underlying device and platform.\n",
"usage": "\n```typescript\nimport { Device } from '@awesome-cordova-plugins/device/ngx';\n\nconstructor(private device: Device) { }\n\n...\n\nconsole.log('Device UUID is: ' + this.device.uuid);\n```\n",
"platforms": [
"Android",
"Browser",
"iOS",
"macOS",
"Windows"
],
"repo": "https://github.com/apache/cordova-plugin-device",
"cordovaPlugin": {
"name": "cordova-plugin-device"
},
"premierSlug": "device"
},
{
"packageName": "@awesome-cordova-plugins/dfu-update",
"displayName": "Dfu Update",
"description": "\nThis plugin is a Wrapper to use Nordic Semiconductor's Device Firmware Update (DFU) service to update a Bluetooth LE device.\n",
"usage": "\n```typescript\nimport { DfuUpdate } from '@awesome-cordova-plugins/dfu-update/ngx';\n\n\nconstructor(private dfuUpdate: DfuUpdate) { }\n\n...\n\n\nthis.dfuUpdate.updateFirmware('fileURL', 'deviceIdentifier')\n .then((res: any) => console.log(res))\n .catch((error: any) => console.error(error));\n\n```\n",
"platforms": [
"Android",
"iOS"
],
"repo": "https://github.com/EinfachHans/cordova-plugin-dfu-update",
"installVariables": [
"ANDROID_NORDIC_VERSION"
],
"cordovaPlugin": {
"name": "cordova-plugin-dfu-update"
}
},
{
"packageName": "@awesome-cordova-plugins/diagnostic",
"displayName": "Diagnostic",
"description": "\nChecks whether device hardware features are enabled or available to the app, e.g. camera, GPS, wifi\n",
"usage": "\n```typescript\nimport { Diagnostic } from '@awesome-cordova-plugins/diagnostic/ngx';\n\nconstructor(private diagnostic: Diagnostic) { }\n\n...\n\nlet successCallback = (isAvailable) => { console.log('Is available? ' + isAvailable); }\nlet errorCallback = (e) => console.error(e);\n\nthis.diagnostic.isCameraAvailable().then(successCallback).catch(errorCallback);\n\nthis.diagnostic.isBluetoothAvailable().then(successCallback, errorCallback);\n\n\nthis.diagnostic.getBluetoothState()\n .then((state) => {\n if (state == this.diagnostic.bluetoothState.POWERED_ON){\n // do something\n } else {\n // do something else\n }\n }).catch(e => console.error(e));\n\n```\n\n",
"platforms": [
"Android",
"iOS",
"Windows"
],
"repo": "https://github.com/dpa99c/cordova-diagnostic-plugin",
"cordovaPlugin": {
"name": "cordova.plugins.diagnostic"
}
},
{
"packageName": "@awesome-cordova-plugins/dialogs",
"displayName": "Dialogs",
"description": "\nThis plugin gives you ability to access and customize the device native dialogs.\n\nRequires Cordova plugin: `cordova-plugin-dialogs`. For more info, please see the [Dialogs plugin docs](https://github.com/apache/cordova-plugin-dialogs).\n",
"usage": "\n```typescript\nimport { Dialogs } from '@awesome-cordova-plugins/dialogs/ngx';\n\nconstructor(private dialogs: Dialogs) { }\n\n...\n\nthis.dialogs.alert('Hello world')\n .then(() => console.log('Dialog dismissed'))\n .catch(e => console.log('Error displaying dialog', e));\n\n\n```",
"platforms": [
"Amazon Fire OS",
"Android",
"Browser",
"iOS",
"Windows"
],
"repo": "https://github.com/apache/cordova-plugin-dialogs",
"cordovaPlugin": {
"name": "cordova-plugin-dialogs"
},
"premierSlug": "dialogs"
},
{
"packageName": "@awesome-cordova-plugins/dns",
"displayName": "DNS",
"description": "A plugin for Apache Cordova that enables applications to manually resolve hostnames into an underlying network address. This is mostly useful for determining whether there is a problem with the device's DNS server configuration.\n",
"usage": "\n```typescript\nimport { DNS } from '@awesome-cordova-plugins/dns/ngx';\n\n\nconstructor(private dns: DNS) { }\n\n...\nthis.dns.resolve(hostname)\n .then(\n address => console.log('Resolved ' + hostname + ' to ' + address),\n error => console.log('Failed to resolve ' + hostname + ': ' + error)\n );\n\n```\n",
"platforms": [
"Android"
],
"repo": "https://bitbucket.org/zegeba/cordova-plugin-dns",
"cordovaPlugin": {
"name": "cordova-plugin-dns"
}
},
{
"packageName": "@awesome-cordova-plugins/document-picker",
"displayName": "iOS DocumentPicker",
"description": "\n\nOpens the file picker on iOS for the user to select a file, returns a file URI.\nAllows the user to upload files from iCloud\n",
"usage": "\n```typescript\nimport { DocumentPicker } from '@awesome-cordova-plugins/document-picker/ngx';\n\nconstructor(private docPicker: DocumentPicker) { }\n\n...\n\nthis.docPicker.getFile('all')\n .then(uri => console.log(uri))\n .catch(e => console.log(e));\n\n```\n",
"platforms": [
"iOS"
],
"repo": "https://github.com/iampossible/Cordova-DocPicker",
"cordovaPlugin": {
"name": "cordova-plugin-documentpicker.DocumentPicker"
}
},
{
"packageName": "@awesome-cordova-plugins/document-scanner",
"displayName": "Document Scanner",
"description": "\nThis plugin processes images of documents, compensating for perspective.\n",
"usage": "\n```typescript\nimport { DocumentScanner, DocumentScannerOptions } from '@awesome-cordova-plugins/document-scanner';\n\n\nconstructor(private documentScanner: DocumentScanner) { }\n\n...\n\nlet opts: DocumentScannerOptions = {};\nthis.documentScanner.scanDocument(opts)\n .then((res: string) => console.log(res))\n .catch((error: any) => console.error(error));\n\n```\n",
"platforms": [
"Android",
"iOS"
],
"repo": "https://github.com/NeutrinosPlatform/cordova-plugin-document-scanner",
"cordovaPlugin": {
"name": "cordova-plugin-document-scanner"
}
},
{
"packageName": "@awesome-cordova-plugins/document-viewer",
"displayName": "Document Viewer",
"description": "\nThis plugin offers a slim API to view PDF files which are either stored in the apps assets folder (/www/*) or in any other file system directory available via the cordova file plugin.\n",
"usage": "\n```typescript\nimport { DocumentViewer } from '@awesome-cordova-plugins/document-viewer/ngx';\n\n\nconstructor(private document: DocumentViewer) { }\n\n...\nconst options: DocumentViewerOptions = {\n title: 'My PDF'\n}\n\nthis.document.viewDocument('assets/myFile.pdf', 'application/pdf', options)\n\n```\n",
"platforms": [
"Android",
"iOS",
"Windows"
],
"repo": "https://github.com/sitewaerts/cordova-plugin-document-viewer",
"cordovaPlugin": {
"name": "cordova-plugin-document-viewer"
}
},
{
"packageName": "@awesome-cordova-plugins/email-composer",
"displayName": "Email Composer",
"description": "\n\nRequires Cordova plugin: cordova-plugin-email-composer. For more info, please see the [Email Composer plugin docs](https://github.com/hypery2k/cordova-email-plugin).\n\n",
"usage": "\n```typescript\nimport { EmailComposer } from '@awesome-cordova-plugins/email-composer/ngx';\n\nconstructor(private emailComposer: EmailComposer) { }\n\n...\n\n\nthis.emailComposer.getClients().then((apps: []) => {\n // Returns an array of configured email clients for the device\n});\n\nthis.emailComposer.hasClient().then(app, (isValid: boolean) => {\n if (isValid) {\n // Now we know we have a valid email client configured\n // Not specifying an app will return true if at least one email client is configured\n }\n});\n\nthis.emailComposer.hasAccount().then((isValid: boolean) => {\n if (isValid) {\n // Now we know we have a valid email account configured\n }\n});\n\nthis.emailComposer.isAvailable().then(app, (available: boolean) => {\n if(available) {\n // Now we know we can send an email, calls hasClient and hasAccount\n // Not specifying an app will return true if at least one email client is configured\n }\n});\n\nlet email = {\n to: '[email protected]',\n cc: '[email protected]',\n bcc: ['[email protected]', '[email protected]'],\n attachments: [\n 'file://img/logo.png',\n 'res://icon.png',\n 'base64:icon.png//iVBORw0KGgoAAAANSUhEUg...',\n 'file://README.pdf'\n ],\n subject: 'Cordova Icons',\n body: 'How are you? Nice greetings from Leipzig',\n isHtml: true\n}\n\n// Send a text message using default options\nthis.emailComposer.open(email);\n```\n\nYou can also assign aliases to email apps\n```ts\n// add alias\nthis.email.addAlias('gmail', 'com.google.android.gm');\n\n// then use alias when sending email\nthis.email.open({\n app: 'gmail',\n ...\n});\n```",
"platforms": [
"Amazon Fire OS",
"Android",
"Browser",
"iOS",
"Windows",
"macOS"
],
"repo": "https://github.com/katzer/cordova-plugin-email-composer",
"cordovaPlugin": {
"name": "cordova-plugin-email-composer"
},
"premierSlug": "email-composer"
},
{
"packageName": "@awesome-cordova-plugins/fabric",
"displayName": "Answers",
"description": "\nAPI for interacting with the Answers kit.\n\nhttps://docs.fabric.io/crashlytics/index.html\n",
"usage": "\n```typescript\nimport { Answers } from '@awesome-cordova-plugins/fabric/ngx';\n\n\nconstructor(private answers: Answers) { }\n\n...\n\nthis.answers.sendCustomEvent('SomeCustomEvent', { some: \"attributes\" })\n\n```\n",
"platforms": [
"Android",
"iOS"
],
"repo": "https://www.npmjs.com/package/cordova-fabric-plugin",
"installVariables": [
"FABRIC_API_KEY",
"FABRIC_API_SECRET"
],
"cordovaPlugin": {
"name": "cordova-fabric-plugin"
}
},
{
"packageName": "@awesome-cordova-plugins/facebook",
"displayName": "Facebook",
"description": "\nUse the Facebook Connect plugin to obtain access to the native FB application on iOS and Android.\n\nRequires Cordova plugin: `cordova-plugin-facebook-connect`. For more info, please see the [Facebook Connect](https://github.com/cordova-plugin-facebook-connect/cordova-plugin-facebook-connect).\n\n#### Installation\n\n To use the FB plugin, you first have to create a new Facebook App inside of the Facebook developer portal at [https://developers.facebook.com/apps](https://developers.facebook.com/apps).\n\n[](https://developers.facebook.com/apps/)\n\nRetrieve the `App ID` and `App Name`.\n\n[](https://developers.facebook.com/apps/)\n\nThen type in the following command in your Terminal, where APP_ID and APP_NAME are the values from the Facebook Developer portal.\n\n```bash\n ionic cordova plugin add cordova-plugin-facebook-connect --variable APP_ID=\"123456789\" --variable APP_NAME=\"myApplication\"\n```\n\nAfter, you'll need to add the native platforms you'll be using to your app in the Facebook Developer portal under your app's Settings:\n\n[](https://developers.facebook.com/apps/)\n\nClick `'Add Platform'`.\n\n[](https://developers.facebook.com/apps/)\n\nAt this point you'll need to open your project's [`config.xml`](https://cordova.apache.org/docs/en/latest/config_ref/index.html) file, found in the root directory of your project.\n\nTake note of the `id` for the next step:\n```\n<widget id=\"com.mycompany.testapp\" version=\"0.0.1\" xmlns=\"http://www.w3.org/ns/widgets\" xmlns:cdv=\"http://cordova.apache.org/ns/1.0\">\n```\n\nYou can also edit the `id` to whatever you'd like it to be.\n\n#### iOS Install\nUnder 'Bundle ID', add the `id` from your `config.xml` file:\n\n[](https://developers.facebook.com/apps/)\n\n\n#### Android Install\nUnder 'Google Play Package Name', add the `id` from your `config.xml` file:\n\n[](https://developers.facebook.com/apps/)\n\n\nAnd that's it! You can now make calls to Facebook using the plugin.\n\n## Events\n\nApp events allow you to understand the makeup of users engaging with your app, measure the performance of your Facebook mobile app ads, and reach specific sets of your users with Facebook mobile app ads.\n\n- [iOS] [https://developers.facebook.com/docs/ios/app-events](https://developers.facebook.com/docs/ios/app-events)\n- [Android] [https://developers.facebook.com/docs/android/app-events](https://developers.facebook.com/docs/android/app-events)\n- [JS] Does not have an Events API, so the plugin functions are empty and will return an automatic success\n\nActivation events are automatically tracked for you in the plugin.\n\nEvents are listed on the [insights page](https://www.facebook.com/insights/).\n\nFor tracking events, see `logEvent` and `logPurchase`.\n",
"usage": "\n```typescript\nimport { Facebook, FacebookLoginResponse } from '@awesome-cordova-plugins/facebook/ngx';\n\nconstructor(private fb: Facebook) { }\n\n...\n\nthis.fb.login(['public_profile', 'user_friends', 'email'])\n .then((res: FacebookLoginResponse) => console.log('Logged into Facebook!', res))\n .catch(e => console.log('Error logging into Facebook', e));\n\n\nthis.fb.logEvent(this.fb.EVENTS.EVENT_NAME_ADDED_TO_CART);\n\n```\n\n",
"platforms": [
"Android",
"iOS",