pushwoosh-cordova-plugin 8.3.1 → 8.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -14,13 +14,13 @@ Cross-Platform push notifications by Pushwoosh for Cordova / PhoneGap
14
14
  Using npm (requires cordova 7.0+):
15
15
 
16
16
  ```
17
- cordova plugin add pushwoosh-cordova-plugin@8.3.1
17
+ cordova plugin add pushwoosh-cordova-plugin@8.3.4
18
18
  ```
19
19
 
20
20
  Using git:
21
21
 
22
22
  ```
23
- cordova plugin add https://github.com/Pushwoosh/pushwoosh-phonegap-plugin.git#8.3.1
23
+ cordova plugin add https://github.com/Pushwoosh/pushwoosh-phonegap-plugin.git#8.3.4
24
24
  ```
25
25
 
26
26
  #### Phonegap
@@ -28,7 +28,7 @@ cordova plugin add https://github.com/Pushwoosh/pushwoosh-phonegap-plugin.git#8.
28
28
  Using npm (requires phonegap 7.1+):
29
29
 
30
30
  ```
31
- cordova plugin add pushwoosh-cordova-plugin@8.3.1
31
+ cordova plugin add pushwoosh-cordova-plugin@8.3.4
32
32
  ```
33
33
 
34
34
  ### Guide
package/README_PGB.md CHANGED
@@ -14,7 +14,7 @@ Cross-Platform push notifications by Pushwoosh for PhoneGap
14
14
  Using npm (requires cordova 5.0+):
15
15
 
16
16
  ```
17
- cordova plugin add pushwoosh-pgb-plugin@8.3.1
17
+ cordova plugin add pushwoosh-pgb-plugin@8.3.4
18
18
  ```
19
19
 
20
20
  ### Guide
package/package.json CHANGED
@@ -1,7 +1,9 @@
1
1
  {
2
2
  "name": "pushwoosh-cordova-plugin",
3
- "version": "8.3.1",
3
+ "version": "8.3.4",
4
4
  "description": "\n This plugin allows you to send and receive push notifications. Powered by Pushwoosh (www.pushwoosh.com).\n ",
5
+ "main":"www/PushNotification.js",
6
+ "typings":"types/index.d.ts",
5
7
  "cordova": {
6
8
  "id": "pushwoosh-cordova-plugin",
7
9
  "platforms": [
package/plugin.xml CHANGED
@@ -1,5 +1,5 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
- <plugin xmlns="http://apache.org/cordova/ns/plugins/1.0" xmlns:android="http://schemas.android.com/apk/res/android" id="pushwoosh-cordova-plugin" version="8.3.1">
2
+ <plugin xmlns="http://apache.org/cordova/ns/plugins/1.0" xmlns:android="http://schemas.android.com/apk/res/android" id="pushwoosh-cordova-plugin" version="8.3.4">
3
3
 
4
4
  <name>Pushwoosh</name>
5
5
 
@@ -38,6 +38,12 @@
38
38
  <meta-data android:name="com.pushwoosh.notification_service_extension" android:value="com.pushwoosh.plugin.pushnotifications.PushwooshNotificationServiceExtension" />
39
39
 
40
40
  <meta-data android:name="com.pushwoosh.internal.plugin_provider" android:value="com.pushwoosh.plugin.internal.PhonegapPluginProvider" />
41
+
42
+ <!-- <service android:name="com.pushwoosh.plugin.pushnotifications.CustomFirebaseMessagingService" android:exported="false">-->
43
+ <!-- <intent-filter>-->
44
+ <!-- <action android:name="com.google.firebase.MESSAGING_EVENT"/>-->
45
+ <!-- </intent-filter>-->
46
+ <!-- </service>-->
41
47
  </config-file>
42
48
 
43
49
  <config-file target="res/xml/config.xml" parent="/*">
@@ -54,6 +60,9 @@
54
60
 
55
61
  <source-file src="src/android/src/com/pushwoosh/plugin/pushnotifications/PushwooshNotificationServiceExtension.java"
56
62
  target-dir="src/com/pushwoosh/plugin/pushnotifications" />
63
+
64
+ <source-file src="src/android/src/com/pushwoosh/plugin/pushnotifications/CustomFirebaseMessagingService.java"
65
+ target-dir="src/com/pushwoosh/plugin/pushnotifications"/>
57
66
 
58
67
  <source-file src="src/android/src/com/pushwoosh/plugin/internal/PhonegapPluginProvider.java"
59
68
  target-dir="src/com/pushwoosh/plugin/internal" />
@@ -68,13 +77,13 @@
68
77
  <framework src="com.android.support.constraint:constraint-layout:1.0.2" />
69
78
  <framework src="com.github.bumptech.glide:glide:4.7.1" />
70
79
  <framework src="org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.60" />
71
- <framework src="com.pushwoosh:pushwoosh:6.4.1"/>
72
- <framework src="com.pushwoosh:pushwoosh-amazon:6.4.1"/>
73
- <framework src="com.pushwoosh:pushwoosh-firebase:6.4.1"/>
74
- <framework src="com.pushwoosh:pushwoosh-badge:6.4.1"/>
75
- <framework src="com.pushwoosh:pushwoosh-inbox:6.4.1"/>
76
- <framework src="com.pushwoosh:pushwoosh-inbox-ui:6.4.1"/>
77
- <framework src="com.pushwoosh:pushwoosh-huawei:6.4.1"/>
80
+ <framework src="com.pushwoosh:pushwoosh:6.5.2"/>
81
+ <framework src="com.pushwoosh:pushwoosh-amazon:6.5.2"/>
82
+ <framework src="com.pushwoosh:pushwoosh-firebase:6.5.2"/>
83
+ <framework src="com.pushwoosh:pushwoosh-badge:6.5.2"/>
84
+ <framework src="com.pushwoosh:pushwoosh-inbox:6.5.2"/>
85
+ <framework src="com.pushwoosh:pushwoosh-inbox-ui:6.5.2"/>
86
+ <framework src="com.pushwoosh:pushwoosh-huawei:6.5.2"/>
78
87
  </platform>
79
88
 
80
89
  <!-- ios -->
@@ -0,0 +1,29 @@
1
+ package com.pushwoosh.plugin.pushnotifications;
2
+
3
+ import androidx.annotation.NonNull;
4
+
5
+ import com.google.firebase.messaging.FirebaseMessagingService;
6
+ import com.google.firebase.messaging.RemoteMessage;
7
+ import com.pushwoosh.firebase.PushwooshFcmHelper;
8
+
9
+ public class CustomFirebaseMessagingService extends FirebaseMessagingService {
10
+ @Override
11
+ public void onMessageReceived(@NonNull RemoteMessage remoteMessage) {
12
+ if (PushwooshFcmHelper.isPushwooshMessage(remoteMessage)){
13
+ PushwooshFcmHelper.onMessageReceived(this, remoteMessage);
14
+ } else {
15
+ //handle push from a different service here
16
+ }
17
+ }
18
+
19
+ @Override
20
+ public void onNewToken(@NonNull String s) {
21
+ super.onNewToken(s);
22
+ PushwooshFcmHelper.onTokenRefresh(s);
23
+ sendTokenToAnotherService();
24
+ }
25
+
26
+ public void sendTokenToAnotherService() {
27
+ //handle push registration of another service here
28
+ }
29
+ }
@@ -165,6 +165,12 @@ public class PushNotifications extends CordovaPlugin {
165
165
  return true;
166
166
  }
167
167
 
168
+ @CordovaMethod
169
+ private boolean additionalAuthorizationOptions(JSONArray data, CallbackContext callbackContext) {
170
+ // Stub, this is iOS only method
171
+ return true;
172
+ }
173
+
168
174
  @CordovaMethod
169
175
  private boolean registerDevice(JSONArray data, CallbackContext callbackContext) {
170
176
  try {
@@ -160,6 +160,28 @@ static PushNotification *pw_PushNotificationPlugin;
160
160
  [[NSUserDefaults standardUserDefaults] synchronize];
161
161
  }
162
162
 
163
+ // Authorization options in addition to UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionCarPlay. Should be called before registering for pushes
164
+ - (void)additionalAuthorizationOptions:(CDVInvokedUrlCommand *)command {
165
+ NSDictionary *options = [command.arguments firstObject];
166
+ NSString* critical = options[@"UNAuthorizationOptionCriticalAlert"];
167
+ NSString* provisional = options[@"UNAuthorizationOptionProvisional"];
168
+ NSString* providesSettings = options[@"UNAuthorizationOptionProvidesAppNotificationSettings"];
169
+
170
+ UNAuthorizationOptions authOptions = 0;
171
+ if (@available(iOS 12.0, *)) {
172
+ if (critical) {
173
+ authOptions |= UNAuthorizationOptionCriticalAlert;
174
+ }
175
+ if (provisional) {
176
+ authOptions |= UNAuthorizationOptionProvisional;
177
+ }
178
+ if (providesSettings) {
179
+ authOptions |= UNAuthorizationOptionProvidesAppNotificationSettings;
180
+ }
181
+ [Pushwoosh sharedInstance].additionalAuthorizationOptions = authOptions;
182
+ }
183
+ }
184
+
163
185
  - (void)dispatchPushReceive:(NSDictionary *)pushData {
164
186
  NSData *json = [NSJSONSerialization dataWithJSONObject:pushData options:NSJSONWritingPrettyPrinted error:nil];
165
187
  NSString *jsonString = [[NSString alloc] initWithData:json encoding:NSUTF8StringEncoding];
@@ -28,6 +28,19 @@ NS_ASSUME_NONNULL_BEGIN
28
28
  */
29
29
  - (void)handleNotificationRequest:(UNNotificationRequest *)request contentHandler:(void (^)(UNNotificationContent *))contentHandler;
30
30
 
31
+ /**
32
+ Example:
33
+ @code
34
+ - (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {
35
+ self.contentHandler = contentHandler;
36
+ self.bestAttemptContent = [request.content mutableCopy];
37
+
38
+ [[PWNotificationExtensionManager sharedManager] handleNotificationRequest:request withAppGroups:@"group.com.example_domain.example_app_name."];
39
+ }
40
+ @endcode
41
+ */
42
+ - (void)handleNotificationRequest:(UNNotificationRequest *)request withAppGroups:(NSString * _Nullable)appGroupsName;
43
+
31
44
  @end
32
45
 
33
46
  NS_ASSUME_NONNULL_END
@@ -385,14 +385,6 @@ typedef void (^PushwooshErrorHandler)(NSError *error);
385
385
  */
386
386
  - (void)sendAppOpen;
387
387
 
388
- /**
389
- Sends current badge value to server. Called internally by SDK Runtime when `UIApplication` `setApplicationBadgeNumber:` is set. This function is used for "auto-incremeting" badges to work.
390
- This way Pushwoosh server can know what current badge value is set for the application.
391
-
392
- @param badge Current badge value.
393
- */
394
- - (void)sendBadges:(NSInteger)badge __API_AVAILABLE(macos(10.10), ios(8.0));
395
-
396
388
  + (NSString *)pushwooshVersion;
397
389
 
398
390
  #if TARGET_OS_IOS
@@ -18,7 +18,7 @@
18
18
 
19
19
  #endif
20
20
 
21
- #define PUSHWOOSH_VERSION @"6.3.3"
21
+ #define PUSHWOOSH_VERSION @"6.4.2"
22
22
 
23
23
 
24
24
  @class Pushwoosh, PWMessage, PWNotificationCenterDelegateProxy;
@@ -81,6 +81,11 @@ Tells the delegate that the user has pressed on the push notification banner.
81
81
  */
82
82
  @property (nonatomic, readonly) NSUInteger badge;
83
83
 
84
+ /**
85
+ Extension badge number of the push message.
86
+ */
87
+ @property (nonatomic, readonly) NSUInteger badgeExtension;
88
+
84
89
  /**
85
90
  Remote URL or deeplink from the push message.
86
91
  */
@@ -0,0 +1,68 @@
1
+ interface PushwooshConfig {
2
+ projectid: string,
3
+ appid: string,
4
+ serviceName?: string
5
+ }
6
+
7
+ type SuccessRegistrationCallback = {
8
+ pushToken: string;
9
+ }
10
+
11
+ type LocalNotification = {
12
+ msg: string;
13
+ seconds: number;
14
+ userData?: Object;
15
+ }
16
+
17
+ type AuthOptions = Record<string, number|string>
18
+
19
+ type RemoteNotificationStatus = Record<string,string|number|boolean>
20
+
21
+ interface PushwooshTags {
22
+ [index: string]: string | number | string[] | number[]
23
+ }
24
+
25
+ export interface PushNotification {
26
+ onDeviceReady(config: PushwooshConfig): void;
27
+ onAppActivated(config: Object): void;
28
+ registerDevice(success?: (callback: SuccessRegistrationCallback) => void, fail?: (error: Error|string) => void): void;
29
+ unregisterDevice(success?: (callback?: string) => void, fail?: (error?: Error|string) => void): void;
30
+ additionalAuthorizationOptions(options: AuthOptions): void;
31
+ setTags(config: PushwooshTags, success?: (tags?: Record<string,PushwooshTags>) => void, fail?: (error?: Error|string) => void): void;
32
+ getTags(success?: (tags: PushwooshTags) => void, fail?: (error?: Error|string) => void): void;
33
+ getPushToken(success?: (pushToken: string) => void): void;
34
+ getPushwooshHWID(success?: (hwid: string) => void): void;
35
+ getRemoteNotificationStatus(success?: (status: RemoteNotificationStatus) => void, fail?: (error: Error|string) => void): void;
36
+ setApplicationIconBadgeNumber(badge: number): void;
37
+ getApplicationIconBadgeNumber(success?: (badge: number) => void): void;
38
+ addToApplicationIconBadgeNumber(badge: number|string): void;
39
+ getLaunchNotification(success?: (notification: string) => void): void;
40
+ clearLaunchNotification(success?: () => void): void;
41
+ setUserId(userId: string): void;
42
+ postEvent(event: string, attributes?: Record<string, string>): void;
43
+ addJavaScriptInterface(bridgeName: string): void;
44
+ createLocalNotification(notification: LocalNotification, success?: () => void, fail?: () => void): void;
45
+ clearLocalNotification(): void;
46
+ clearNotificationCenter(): void;
47
+ setMultiNotificationMode(success?: () => void, fail?: () => void): void;
48
+ setSingleNotificationMode(success?: () => void, fail?: () => void): void;
49
+ cancelAllLocalNotifications(success?: () => void): void;
50
+ pushReceivedCallback(notification: string): void;
51
+ notificationCallback(notification: string): void;
52
+ presentInboxUI(params?: Record<string,any>): void;
53
+ showGDPRConsentUI(): void;
54
+ showGDPRDeletionUI(): void;
55
+ setCommunicationEnabled(enable: boolean, success?: () => void, fail?: (callback: Error|string) => void): void;
56
+ removeAllDeviceData(success?: () => void, fail?: (callback: Error|string) => void): void;
57
+ isCommunicationEnabled(success: (enabled: boolean) => void): void;
58
+ isDeviceDataRemoved(success: (removed: boolean) => void): void;
59
+ isAvailableGDPR(success: (isAvailable: boolean) => void): void;
60
+ enableHuaweiPushNotifications(): void;
61
+ setSoundType(type: string, success?: () => void, fail?: () => void): void;
62
+ setVibrateType(type: string, success?: () => void, fail?: () => void): void;
63
+ setLightScreenOnNotification(on: boolean, success?: () => void, fail?: () => void): void;
64
+ setEnableLED(on: boolean, success?: () => void, fail?: () => void): void;
65
+ setColorLED(color: string, success?: () => void, fail?: () => void): void;
66
+ getPushHistory(success?: (pushHistory: Object) => void): void;
67
+ clearPushHistory(callback: () => void): void;
68
+ }
@@ -0,0 +1,5 @@
1
+ import { PushNotification } from './PushNotification';
2
+
3
+ export declare const Pushwoosh: PushNotification;
4
+ export { PushNotification };
5
+ export default Pushwoosh;
@@ -9,7 +9,7 @@
9
9
  //
10
10
  // MIT Licensed
11
11
 
12
- var exec = require('cordova/exec');
12
+ var exec = window.cordova.exec;
13
13
 
14
14
  //Class: PushNotification
15
15
  //Class to interact with Pushwoosh Push Notifications plugin
@@ -79,6 +79,26 @@ PushNotification.prototype.registerDevice = function(success, fail) {
79
79
  exec(success, fail, "PushNotification", "registerDevice", []);
80
80
  };
81
81
 
82
+ //Function: additionalAuthorizationOptions
83
+ //[ios] Authorization options in addition to UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert | UNAuthorizationOptionCarPlay.
84
+ //Should be called before registering for pushes
85
+ //
86
+ //Parameters:
87
+ // "options.UNAuthorizationOptionCriticalAlert" - adds UNAuthorizationOptionCriticalAlert option
88
+ // "options.UNAuthorizationOptionProvisional" - adds UNAuthorizationOptionProvisional option
89
+ // "options.UNAuthorizationOptionProvidesAppNotificationSettings" - adds UNAuthorizationOptionProvidesAppNotificationSettings option
90
+ //
91
+ //Example:
92
+ //(start code)
93
+ // pushwoosh.additionalAuthorizationOptions({
94
+ // "UNAuthorizationOptionCriticalAlert" : 1,
95
+ // "UNAuthorizationOptionProvisional": 0 // set 0 or don't specify the option if you don't want to add it to your app.
96
+ // });
97
+ //(end)
98
+ PushNotification.prototype.additionalAuthorizationOptions = function(options) {
99
+ exec(null, null, "PushNotification", "additionalAuthorizationOptions", options ? [options] : []);
100
+ }
101
+
82
102
  //Function: unregisterDevice
83
103
  //[android, ios, wp8, windows] Unregister device form receiving push notifications
84
104
  //