react-native-notify-sphere 1.2.0 → 1.2.1
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/lib/module/index.js +210 -17
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/src/index.d.ts +40 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/package.json +4 -2
- package/src/index.tsx +248 -18
package/lib/module/index.js
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import messaging from '@react-native-firebase/messaging';
|
|
4
|
-
import
|
|
4
|
+
import DeviceInfo from 'react-native-device-info';
|
|
5
|
+
import notifee, { AndroidImportance, AndroidVisibility, AndroidStyle, EventType } from '@notifee/react-native';
|
|
5
6
|
import axios from 'axios';
|
|
6
7
|
import AsyncStorage from '@react-native-async-storage/async-storage';
|
|
7
8
|
import { PermissionsAndroid, Platform } from 'react-native';
|
|
8
9
|
const STORAGE_KEY_TOKEN = '@notifysphere_fcm_token';
|
|
9
10
|
const STORAGE_KEY_SUB_ID = '@notifysphere_subscription_id';
|
|
10
11
|
const STORAGE_KEY_USER_HASH = '@notifysphere_user_hash';
|
|
12
|
+
const STORAGE_KEY_CHANNELS = '@notifysphere_channels';
|
|
11
13
|
|
|
12
14
|
// ─── Type definitions ──────────────────────────────────────────────────────────
|
|
13
15
|
|
|
@@ -17,6 +19,8 @@ const STORAGE_KEY_USER_HASH = '@notifysphere_user_hash';
|
|
|
17
19
|
|
|
18
20
|
/** Normalised notification data delivered to the consumer callback */
|
|
19
21
|
|
|
22
|
+
/** Shape of a single notification channel returned by the registration API */
|
|
23
|
+
|
|
20
24
|
// ─── Internal logger ──────────────────────────────────────────────────────────
|
|
21
25
|
|
|
22
26
|
let _debug = false;
|
|
@@ -29,10 +33,17 @@ const warn = (...args) => {
|
|
|
29
33
|
// Errors are always surfaced regardless of the debug flag
|
|
30
34
|
const logError = (...args) => console.error('[NotifySphere]', ...args);
|
|
31
35
|
|
|
36
|
+
// ─── SDK version ──────────────────────────────────────────────────────────────
|
|
37
|
+
|
|
38
|
+
const SDK_VERSION = '1.2.1';
|
|
39
|
+
|
|
40
|
+
// ─── Device info result shape ─────────────────────────────────────────────────
|
|
41
|
+
|
|
32
42
|
// ─── Default endpoints ────────────────────────────────────────────────────────
|
|
33
43
|
|
|
34
44
|
const DEFAULT_BASE_URL = 'https://api.notifysphere.in/client/';
|
|
35
45
|
// const DEFAULT_BASE_URL = 'https://apinotify.dothejob.in';
|
|
46
|
+
//const DEFAULT_BASE_URL = 'https://apinotify.dothejob.in/client/';
|
|
36
47
|
|
|
37
48
|
// ─── NotifySphere class ───────────────────────────────────────────────────────
|
|
38
49
|
|
|
@@ -135,6 +146,41 @@ class NotifySphere {
|
|
|
135
146
|
}
|
|
136
147
|
}
|
|
137
148
|
|
|
149
|
+
// ─── Device info ──────────────────────────────────────────────────────────
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Collects device metadata sent to the registration API.
|
|
153
|
+
* Uses react-native-device-info for model, carrier, and app version.
|
|
154
|
+
* Falls back gracefully if any call fails so registration is never blocked.
|
|
155
|
+
*/
|
|
156
|
+
static async getDeviceInfo() {
|
|
157
|
+
try {
|
|
158
|
+
// getCarrier() is the only async call — run everything in parallel
|
|
159
|
+
const [carrier] = await Promise.all([DeviceInfo.getCarrier().catch(() => '')]);
|
|
160
|
+
return {
|
|
161
|
+
sdk: SDK_VERSION,
|
|
162
|
+
device_model: DeviceInfo.getModel(),
|
|
163
|
+
device_os: Platform.OS,
|
|
164
|
+
device_version: DeviceInfo.getSystemVersion(),
|
|
165
|
+
carrier: carrier ?? '',
|
|
166
|
+
app_version: DeviceInfo.getVersion(),
|
|
167
|
+
// Intl is available in Hermes/JSC without any extra package
|
|
168
|
+
timezone_id: Intl.DateTimeFormat().resolvedOptions().timeZone ?? ''
|
|
169
|
+
};
|
|
170
|
+
} catch (err) {
|
|
171
|
+
warn('getDeviceInfo failed, using fallback values:', err);
|
|
172
|
+
return {
|
|
173
|
+
sdk: SDK_VERSION,
|
|
174
|
+
device_model: '',
|
|
175
|
+
device_os: Platform.OS,
|
|
176
|
+
device_version: String(Platform.Version),
|
|
177
|
+
carrier: '',
|
|
178
|
+
app_version: '',
|
|
179
|
+
timezone_id: ''
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
138
184
|
// ─── User details fingerprint ─────────────────────────────────────────────
|
|
139
185
|
|
|
140
186
|
/**
|
|
@@ -177,7 +223,7 @@ class NotifySphere {
|
|
|
177
223
|
static async initialize(config) {
|
|
178
224
|
_debug = config.debug ?? false;
|
|
179
225
|
NotifySphere.appId = config.appId;
|
|
180
|
-
NotifySphere.baseUrl = NotifySphere.enforceHttps(config.baseUrl ?? DEFAULT_BASE_URL);
|
|
226
|
+
NotifySphere.baseUrl = NotifySphere.enforceHttps(config.baseUrl ?? DEFAULT_BASE_URL, true);
|
|
181
227
|
NotifySphere.trackingUrl = NotifySphere.enforceHttps(config.trackingUrl ?? `${NotifySphere.baseUrl}${config.appId}/onpress/handle`);
|
|
182
228
|
NotifySphere.deliveryUrl = NotifySphere.enforceHttps(config.deliveryUrl ?? `${NotifySphere.baseUrl}${config.appId}/delivery/confirm`);
|
|
183
229
|
NotifySphere.apiKey = config.apiKey ?? null;
|
|
@@ -200,7 +246,16 @@ class NotifySphere {
|
|
|
200
246
|
// ── Only call the registration API when the FCM token OR any user
|
|
201
247
|
// detail has changed. This avoids a redundant network call on every
|
|
202
248
|
// app open while still syncing updates (email, phone, location, etc.)
|
|
203
|
-
const [cachedToken, cachedUserHash] = await Promise.all([AsyncStorage.getItem(STORAGE_KEY_TOKEN), AsyncStorage.getItem(STORAGE_KEY_USER_HASH)]);
|
|
249
|
+
const [cachedToken, cachedUserHash, cachedChannels] = await Promise.all([AsyncStorage.getItem(STORAGE_KEY_TOKEN), AsyncStorage.getItem(STORAGE_KEY_USER_HASH), AsyncStorage.getItem(STORAGE_KEY_CHANNELS)]);
|
|
250
|
+
|
|
251
|
+
// Re-create all backend-configured channels on every launch so they
|
|
252
|
+
// always exist before a background notification arrives — even after
|
|
253
|
+
// a reinstall or app-data clear. Notifee's createChannel is idempotent.
|
|
254
|
+
if (cachedChannels) {
|
|
255
|
+
const channels = JSON.parse(cachedChannels);
|
|
256
|
+
await NotifySphere.createChannelsFromConfig(channels);
|
|
257
|
+
log('Channels restored from cache:', channels.length);
|
|
258
|
+
}
|
|
204
259
|
const currentUserHash = NotifySphere.buildUserHash(config);
|
|
205
260
|
let subscriptionId = cachedSubId ?? undefined;
|
|
206
261
|
const tokenChanged = fcmToken !== cachedToken;
|
|
@@ -234,6 +289,7 @@ class NotifySphere {
|
|
|
234
289
|
* Extracted so it can also be called from the token-refresh watcher.
|
|
235
290
|
*/
|
|
236
291
|
static async registerDevice(config, fcmToken, userHash) {
|
|
292
|
+
const devInfo = await NotifySphere.getDeviceInfo();
|
|
237
293
|
const res = await axios.post(`${NotifySphere.baseUrl}${config.appId}/users`, {
|
|
238
294
|
applicationUserId: config.applicationUserId,
|
|
239
295
|
token: fcmToken,
|
|
@@ -246,7 +302,14 @@ class NotifySphere {
|
|
|
246
302
|
state: config.state,
|
|
247
303
|
email: config.email,
|
|
248
304
|
phone: config.phone,
|
|
249
|
-
tags: config.tags
|
|
305
|
+
tags: config.tags,
|
|
306
|
+
sdk: devInfo.sdk,
|
|
307
|
+
device_model: devInfo.device_model,
|
|
308
|
+
device_os: devInfo.device_os,
|
|
309
|
+
device_version: devInfo.device_version,
|
|
310
|
+
carrier: devInfo.carrier,
|
|
311
|
+
app_version: devInfo.app_version,
|
|
312
|
+
timezone_id: devInfo.timezone_id
|
|
250
313
|
}
|
|
251
314
|
}, {
|
|
252
315
|
headers: {
|
|
@@ -262,6 +325,16 @@ class NotifySphere {
|
|
|
262
325
|
const subscriptionId = res.data?.subscription_id;
|
|
263
326
|
NotifySphere.subscriptionId = subscriptionId ?? null;
|
|
264
327
|
|
|
328
|
+
// Extract channels from the response and create them immediately.
|
|
329
|
+
// This ensures every backend-configured channel exists on the device
|
|
330
|
+
// before any background / terminated-state notification can arrive.
|
|
331
|
+
const channels = res.data?.notification_channels;
|
|
332
|
+
if (channels && channels.length > 0) {
|
|
333
|
+
await NotifySphere.createChannelsFromConfig(channels);
|
|
334
|
+
await AsyncStorage.setItem(STORAGE_KEY_CHANNELS, JSON.stringify(channels));
|
|
335
|
+
log('Channels created and cached from registration response:', channels.length);
|
|
336
|
+
}
|
|
337
|
+
|
|
265
338
|
// Persist token, subscription_id, and user hash for future launch comparisons
|
|
266
339
|
const hash = userHash ?? NotifySphere.buildUserHash(config);
|
|
267
340
|
await Promise.all([AsyncStorage.setItem(STORAGE_KEY_TOKEN, fcmToken), AsyncStorage.setItem(STORAGE_KEY_USER_HASH, hash), subscriptionId ? AsyncStorage.setItem(STORAGE_KEY_SUB_ID, subscriptionId) : Promise.resolve()]);
|
|
@@ -314,7 +387,10 @@ class NotifySphere {
|
|
|
314
387
|
}
|
|
315
388
|
}, {
|
|
316
389
|
headers: {
|
|
317
|
-
'Content-Type': 'application/json'
|
|
390
|
+
'Content-Type': 'application/json',
|
|
391
|
+
...(NotifySphere.apiKey ? {
|
|
392
|
+
Authorization: `Bearer ${NotifySphere.apiKey}`
|
|
393
|
+
} : {})
|
|
318
394
|
},
|
|
319
395
|
maxBodyLength: 1024 * 50,
|
|
320
396
|
timeout: 10000
|
|
@@ -374,9 +450,35 @@ class NotifySphere {
|
|
|
374
450
|
if (config?.subscriptionId) {
|
|
375
451
|
NotifySphere.subscriptionId = config.subscriptionId;
|
|
376
452
|
}
|
|
453
|
+
|
|
454
|
+
// Pre-create the default channel immediately so it is guaranteed to exist
|
|
455
|
+
// (with sound enabled) before any background or terminated-state message
|
|
456
|
+
// arrives. Without this, the channel would be created inside the async
|
|
457
|
+
// background handler — on some devices that races with the notification
|
|
458
|
+
// display and results in a silent notification.
|
|
459
|
+
notifee.createChannel({
|
|
460
|
+
id: 'channel_default',
|
|
461
|
+
name: 'Default Channel',
|
|
462
|
+
importance: AndroidImportance.HIGH,
|
|
463
|
+
lights: true,
|
|
464
|
+
lightColor: '#0000FF',
|
|
465
|
+
vibration: true
|
|
466
|
+
});
|
|
377
467
|
messaging().setBackgroundMessageHandler(async remoteMessage => {
|
|
378
468
|
const msg = remoteMessage;
|
|
379
|
-
|
|
469
|
+
|
|
470
|
+
// Always display via Notifee so the backend-configured channel (with its
|
|
471
|
+
// custom sound, importance, and LED settings) is used in every state.
|
|
472
|
+
//
|
|
473
|
+
// On iOS, setBackgroundMessageHandler never fires for messages that
|
|
474
|
+
// contain a `notification` field — APNs intercepts them — so there is
|
|
475
|
+
// no duplicate risk on iOS.
|
|
476
|
+
//
|
|
477
|
+
// On Android, if the FCM payload contains a `notification` field, FCM
|
|
478
|
+
// will also auto-display, which causes a duplicate notification. To avoid
|
|
479
|
+
// this, the backend should send data-only messages to Android tokens
|
|
480
|
+
// (omit the top-level `notification` field). Notifee then has full
|
|
481
|
+
// control over display and sound in all states.
|
|
380
482
|
await Promise.all([NotifySphere.displayLocalNotification(msg), NotifySphere.callbackOnDelivery(msg)]);
|
|
381
483
|
});
|
|
382
484
|
notifee.onBackgroundEvent(async ({
|
|
@@ -443,6 +545,70 @@ class NotifySphere {
|
|
|
443
545
|
NotifySphere.unsubscribers.push(unsubMessage, unsubOpened, unsubForeground);
|
|
444
546
|
}
|
|
445
547
|
|
|
548
|
+
// ─── Private: backend channel helpers ────────────────────────────────────
|
|
549
|
+
|
|
550
|
+
/** Maps the backend importance value to a Notifee AndroidImportance level. */
|
|
551
|
+
static mapImportance(value) {
|
|
552
|
+
const v = value ?? 3;
|
|
553
|
+
if (v >= 4) return AndroidImportance.HIGH;
|
|
554
|
+
if (v === 3) return AndroidImportance.DEFAULT;
|
|
555
|
+
if (v === 2) return AndroidImportance.LOW;
|
|
556
|
+
if (v === 1) return AndroidImportance.MIN;
|
|
557
|
+
return AndroidImportance.DEFAULT;
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
/** Maps the backend lockScreen value to a Notifee AndroidVisibility level. */
|
|
561
|
+
static mapVisibility(lockScreen) {
|
|
562
|
+
if (lockScreen === 1) return AndroidVisibility.PUBLIC;
|
|
563
|
+
if (lockScreen === -1) return AndroidVisibility.SECRET;
|
|
564
|
+
return AndroidVisibility.PRIVATE;
|
|
565
|
+
}
|
|
566
|
+
|
|
567
|
+
/**
|
|
568
|
+
* Creates Notifee channels from the array returned by the registration API.
|
|
569
|
+
* Called immediately after registration and on every subsequent launch from
|
|
570
|
+
* the AsyncStorage cache — so channels always exist before any notification
|
|
571
|
+
* arrives, including in background / terminated state.
|
|
572
|
+
*/
|
|
573
|
+
static async createChannelsFromConfig(channels) {
|
|
574
|
+
for (const ch of channels) {
|
|
575
|
+
// sound === 'Custom' → use soundDetail as the raw resource name
|
|
576
|
+
// sound === 'None' → no sound (don't spread sound key)
|
|
577
|
+
// sound === 'Default' → omit key so Android uses system default
|
|
578
|
+
let soundValue;
|
|
579
|
+
if (ch.sound === 'Custom' && ch.soundDetail) {
|
|
580
|
+
soundValue = ch.soundDetail.replace(/\..+$/, ''); // strip extension
|
|
581
|
+
}
|
|
582
|
+
// 'None' and 'Default' intentionally leave soundValue as undefined
|
|
583
|
+
|
|
584
|
+
console.log('this is sound value', soundValue);
|
|
585
|
+
const channelDef = {
|
|
586
|
+
id: ch.channel_id,
|
|
587
|
+
name: ch.name,
|
|
588
|
+
importance: NotifySphere.mapImportance(ch.Importance),
|
|
589
|
+
lights: (ch.LED ?? 0) === 1,
|
|
590
|
+
vibration: (ch.vibration ?? 0) === 1,
|
|
591
|
+
visibility: NotifySphere.mapVisibility(ch.lockScreen),
|
|
592
|
+
...(ch.description ? {
|
|
593
|
+
description: ch.description
|
|
594
|
+
} : {}),
|
|
595
|
+
...(ch.led_color ? {
|
|
596
|
+
lightColor: ch.led_color
|
|
597
|
+
} : {}),
|
|
598
|
+
// Only spread sound when it is a real custom resource name.
|
|
599
|
+
// For 'Default', omitting the key tells Android to use the system
|
|
600
|
+
// default sound. For 'None', omitting it silences the channel only
|
|
601
|
+
// if importance is set to LOW/MIN — HIGH importance always plays sound.
|
|
602
|
+
...(soundValue ? {
|
|
603
|
+
sound: soundValue
|
|
604
|
+
} : {})
|
|
605
|
+
};
|
|
606
|
+
await notifee.createChannel(channelDef);
|
|
607
|
+
NotifySphere.createdChannels.add(ch.channel_id);
|
|
608
|
+
log('Channel created from backend config:', ch.channel_id, `(${ch.name})`);
|
|
609
|
+
}
|
|
610
|
+
}
|
|
611
|
+
|
|
446
612
|
// ─── Private: channel management ─────────────────────────────────────────
|
|
447
613
|
|
|
448
614
|
/**
|
|
@@ -457,7 +623,13 @@ class NotifySphere {
|
|
|
457
623
|
id,
|
|
458
624
|
name,
|
|
459
625
|
importance: AndroidImportance.HIGH,
|
|
460
|
-
|
|
626
|
+
// For custom sounds, use the raw resource name (without extension).
|
|
627
|
+
// For 'default', omit the field entirely so Android uses the device's
|
|
628
|
+
// default notification sound. Setting it to undefined explicitly can
|
|
629
|
+
// be treated as "no sound" by Notifee on some devices.
|
|
630
|
+
...(soundName !== 'default' ? {
|
|
631
|
+
sound: soundName
|
|
632
|
+
} : {}),
|
|
461
633
|
lights: true,
|
|
462
634
|
lightColor: '#0000FF',
|
|
463
635
|
vibration: true
|
|
@@ -473,7 +645,11 @@ class NotifySphere {
|
|
|
473
645
|
// Use || so empty strings fall back just like null/undefined
|
|
474
646
|
const soundRaw = remoteMessage.data?.sound || 'default';
|
|
475
647
|
const soundName = soundRaw.replace(/\..+$/, '');
|
|
476
|
-
|
|
648
|
+
|
|
649
|
+
// If the backend specifies a channelId (e.g. a UUID created on the dashboard),
|
|
650
|
+
// use it directly — this lets the backend control which channel the notification
|
|
651
|
+
// is assigned to. Otherwise fall back to a channel derived from the sound name.
|
|
652
|
+
const channelId = remoteMessage.data?.channelId || `channel_${soundName}`;
|
|
477
653
|
await NotifySphere.ensureChannel(channelId, `Channel ${soundName}`, soundRaw);
|
|
478
654
|
|
|
479
655
|
// Resolve image — empty string treated same as missing
|
|
@@ -483,19 +659,31 @@ class NotifySphere {
|
|
|
483
659
|
const title = remoteMessage.data?.title || remoteMessage.notification?.title || undefined;
|
|
484
660
|
const body = remoteMessage.data?.body || remoteMessage.notification?.body || undefined;
|
|
485
661
|
|
|
486
|
-
// smallIcon
|
|
487
|
-
//
|
|
488
|
-
|
|
662
|
+
// Resolve smallIcon and largeIcon — both fall back to
|
|
663
|
+
// 'ic_stat_notifysphere_default' if not provided in the payload.
|
|
664
|
+
// Add a drawable with this name to your app's res/drawable folder.
|
|
665
|
+
const smallIconResolved = NotifySphere.resolveIcon(remoteMessage.data?.smallIcon) ?? 'ic_stat_notifysphere_default';
|
|
666
|
+
const largeIconResolved = NotifySphere.resolveIcon(remoteMessage.data?.largeIcon) ?? 'ic_stat_notifysphere_default';
|
|
667
|
+
|
|
668
|
+
// Determine Android expand style:
|
|
669
|
+
// - Image present → BIGPICTURE (shows image when expanded)
|
|
670
|
+
// - Long body (>44 chars) → BIGTEXT (shows full text when expanded)
|
|
671
|
+
// - Otherwise → no style (single-line collapsed notification)
|
|
672
|
+
const androidStyle = image ? {
|
|
673
|
+
type: AndroidStyle.BIGPICTURE,
|
|
674
|
+
picture: image
|
|
675
|
+
} : body && body.length > 44 ? {
|
|
676
|
+
type: AndroidStyle.BIGTEXT,
|
|
677
|
+
text: body
|
|
678
|
+
} : undefined;
|
|
489
679
|
await notifee.displayNotification({
|
|
490
680
|
title,
|
|
491
681
|
body,
|
|
492
682
|
android: {
|
|
493
683
|
channelId,
|
|
494
|
-
smallIcon,
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
picture: image
|
|
498
|
-
} : undefined
|
|
684
|
+
smallIcon: smallIconResolved,
|
|
685
|
+
largeIcon: largeIconResolved,
|
|
686
|
+
style: androidStyle
|
|
499
687
|
},
|
|
500
688
|
ios: {
|
|
501
689
|
sound: soundRaw,
|
|
@@ -525,12 +713,17 @@ class NotifySphere {
|
|
|
525
713
|
/**
|
|
526
714
|
* Rejects plain HTTP URLs to prevent user data (FCM token, email, phone,
|
|
527
715
|
* location) being sent over an unencrypted connection.
|
|
716
|
+
* Also ensures the URL ends with a trailing slash so appId is always
|
|
717
|
+
* correctly appended (e.g. baseUrl + appId + '/users').
|
|
528
718
|
*/
|
|
529
|
-
static enforceHttps(url) {
|
|
719
|
+
static enforceHttps(url, ensureTrailingSlash = false) {
|
|
530
720
|
if (url.startsWith('http://')) {
|
|
531
721
|
logError(`Insecure URL rejected: "${url}". NotifySphere only allows HTTPS endpoints.`);
|
|
532
722
|
throw new Error(`NotifySphere: insecure HTTP URL is not allowed — use HTTPS instead.`);
|
|
533
723
|
}
|
|
724
|
+
if (ensureTrailingSlash && !url.endsWith('/')) {
|
|
725
|
+
return url + '/';
|
|
726
|
+
}
|
|
534
727
|
return url;
|
|
535
728
|
}
|
|
536
729
|
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["messaging","notifee","AndroidImportance","AndroidStyle","EventType","axios","AsyncStorage","PermissionsAndroid","Platform","STORAGE_KEY_TOKEN","STORAGE_KEY_SUB_ID","STORAGE_KEY_USER_HASH","_debug","log","args","console","warn","logError","error","DEFAULT_BASE_URL","NotifySphere","callback","fcmToken","appId","subscriptionId","baseUrl","trackingUrl","deliveryUrl","apiKey","unsubscribers","initialized","createdChannels","Set","callbackOnpress","notification","status","notificationId","data","notification_id","headers","response","post","subscription_id","onPressStatus","maxBodyLength","timeout","sendCallback","err","callbackOnDelivery","remoteMessage","onDeliveredStatus","checkApplicationPermission","OS","Version","granted","request","PERMISSIONS","POST_NOTIFICATIONS","RESULTS","GRANTED","authStatus","requestPermission","AuthorizationStatus","AUTHORIZED","PROVISIONAL","buildUserHash","config","fields","applicationUserId","type","name","lat","long","city","state","email","phone","tags","JSON","stringify","Object","keys","sort","reduce","acc","k","initialize","debug","enforceHttps","hasPermission","undefined","getToken","cachedSubId","getItem","cachedToken","cachedUserHash","Promise","all","currentUserHash","tokenChanged","userChanged","registerDevice","ensureChannel","setupListeners","watchTokenRefresh","userHash","res","token","user","userName","Authorization","hash","setItem","resolve","unsubRefresh","onTokenRefresh","newToken","existingHash","push","updateTags","params","onNotification","setBackgroundHandler","setBackgroundMessageHandler","msg","displayLocalNotification","onBackgroundEvent","detail","PRESS","destroy","unsub","unsubMessage","onMessage","unsubOpened","onNotificationOpenedApp","messageId","getInitialNotification","then","catch","unsubForeground","onForegroundEvent","id","sound","has","soundName","replace","channelDef","importance","HIGH","lights","lightColor","vibration","createChannel","add","soundRaw","channelId","image","imageUrl","android","ios","attachments","url","title","body","smallIcon","resolveIcon","displayNotification","style","BIGPICTURE","picture","foregroundPresentationOptions","alert","badge","value","startsWith","Error","isFirebase","notif"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["messaging","DeviceInfo","notifee","AndroidImportance","AndroidVisibility","AndroidStyle","EventType","axios","AsyncStorage","PermissionsAndroid","Platform","STORAGE_KEY_TOKEN","STORAGE_KEY_SUB_ID","STORAGE_KEY_USER_HASH","STORAGE_KEY_CHANNELS","_debug","log","args","console","warn","logError","error","SDK_VERSION","DEFAULT_BASE_URL","NotifySphere","callback","fcmToken","appId","subscriptionId","baseUrl","trackingUrl","deliveryUrl","apiKey","unsubscribers","initialized","createdChannels","Set","callbackOnpress","notification","status","notificationId","data","notification_id","headers","response","post","subscription_id","onPressStatus","maxBodyLength","timeout","sendCallback","err","callbackOnDelivery","remoteMessage","onDeliveredStatus","checkApplicationPermission","OS","Version","granted","request","PERMISSIONS","POST_NOTIFICATIONS","RESULTS","GRANTED","authStatus","requestPermission","AuthorizationStatus","AUTHORIZED","PROVISIONAL","getDeviceInfo","carrier","Promise","all","getCarrier","catch","sdk","device_model","getModel","device_os","device_version","getSystemVersion","app_version","getVersion","timezone_id","Intl","DateTimeFormat","resolvedOptions","timeZone","String","buildUserHash","config","fields","applicationUserId","type","name","lat","long","city","state","email","phone","tags","JSON","stringify","Object","keys","sort","reduce","acc","k","initialize","debug","enforceHttps","hasPermission","undefined","getToken","cachedSubId","getItem","cachedToken","cachedUserHash","cachedChannels","channels","parse","createChannelsFromConfig","length","currentUserHash","tokenChanged","userChanged","registerDevice","ensureChannel","setupListeners","watchTokenRefresh","userHash","devInfo","res","token","user","userName","Authorization","notification_channels","setItem","hash","resolve","unsubRefresh","onTokenRefresh","newToken","existingHash","push","updateTags","params","onNotification","setBackgroundHandler","createChannel","id","importance","HIGH","lights","lightColor","vibration","setBackgroundMessageHandler","msg","displayLocalNotification","onBackgroundEvent","detail","PRESS","destroy","unsub","unsubMessage","onMessage","unsubOpened","onNotificationOpenedApp","messageId","getInitialNotification","then","unsubForeground","onForegroundEvent","mapImportance","value","v","DEFAULT","LOW","MIN","mapVisibility","lockScreen","PUBLIC","SECRET","PRIVATE","ch","soundValue","sound","soundDetail","replace","channelDef","channel_id","Importance","LED","visibility","description","led_color","add","has","soundName","soundRaw","channelId","image","imageUrl","android","ios","attachments","url","title","body","smallIconResolved","resolveIcon","smallIcon","largeIconResolved","largeIcon","androidStyle","BIGPICTURE","picture","BIGTEXT","text","displayNotification","style","foregroundPresentationOptions","alert","badge","ensureTrailingSlash","startsWith","Error","endsWith","isFirebase","notif"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -40,6 +40,27 @@ export type NotificationData = {
|
|
|
40
40
|
sound?: string;
|
|
41
41
|
};
|
|
42
42
|
export type NotificationCallback = (notification: NotificationData, type?: string) => void;
|
|
43
|
+
/** Shape of a single notification channel returned by the registration API */
|
|
44
|
+
export interface BackendChannelConfig {
|
|
45
|
+
channel_id: string;
|
|
46
|
+
name: string;
|
|
47
|
+
description?: string;
|
|
48
|
+
/** Android importance level sent by backend — mapped to AndroidImportance */
|
|
49
|
+
Importance?: number;
|
|
50
|
+
/** 1 = enable LED, 0 = disable */
|
|
51
|
+
LED?: number;
|
|
52
|
+
led_color?: string | null;
|
|
53
|
+
/** 'Custom' | 'Default' | 'None' */
|
|
54
|
+
sound?: string;
|
|
55
|
+
/** Raw resource name used when sound === 'Custom' (e.g. 'nowait_sound') */
|
|
56
|
+
soundDetail?: string;
|
|
57
|
+
/** 1 = vibration on, 0 = off */
|
|
58
|
+
vibration?: number;
|
|
59
|
+
vibrationDetail?: string | null;
|
|
60
|
+
badge?: number;
|
|
61
|
+
/** 1 = PUBLIC, 0 = PRIVATE, -1 = SECRET */
|
|
62
|
+
lockScreen?: number;
|
|
63
|
+
}
|
|
43
64
|
export type InitializeConfig = {
|
|
44
65
|
/** Your application's user ID for this device */
|
|
45
66
|
applicationUserId: number;
|
|
@@ -115,6 +136,12 @@ declare class NotifySphere {
|
|
|
115
136
|
*/
|
|
116
137
|
private static callbackOnDelivery;
|
|
117
138
|
static checkApplicationPermission(): Promise<boolean>;
|
|
139
|
+
/**
|
|
140
|
+
* Collects device metadata sent to the registration API.
|
|
141
|
+
* Uses react-native-device-info for model, carrier, and app version.
|
|
142
|
+
* Falls back gracefully if any call fails so registration is never blocked.
|
|
143
|
+
*/
|
|
144
|
+
private static getDeviceInfo;
|
|
118
145
|
/**
|
|
119
146
|
* Builds a stable string fingerprint of all user-profile fields.
|
|
120
147
|
* Used to detect whether any detail has changed since the last registration,
|
|
@@ -209,6 +236,17 @@ declare class NotifySphere {
|
|
|
209
236
|
*/
|
|
210
237
|
static destroy(): void;
|
|
211
238
|
private static setupListeners;
|
|
239
|
+
/** Maps the backend importance value to a Notifee AndroidImportance level. */
|
|
240
|
+
private static mapImportance;
|
|
241
|
+
/** Maps the backend lockScreen value to a Notifee AndroidVisibility level. */
|
|
242
|
+
private static mapVisibility;
|
|
243
|
+
/**
|
|
244
|
+
* Creates Notifee channels from the array returned by the registration API.
|
|
245
|
+
* Called immediately after registration and on every subsequent launch from
|
|
246
|
+
* the AsyncStorage cache — so channels always exist before any notification
|
|
247
|
+
* arrives, including in background / terminated state.
|
|
248
|
+
*/
|
|
249
|
+
private static createChannelsFromConfig;
|
|
212
250
|
/**
|
|
213
251
|
* Creates a notification channel if it hasn't been created yet this session.
|
|
214
252
|
* Notifee handles idempotency across app restarts; this in-memory guard
|
|
@@ -225,6 +263,8 @@ declare class NotifySphere {
|
|
|
225
263
|
/**
|
|
226
264
|
* Rejects plain HTTP URLs to prevent user data (FCM token, email, phone,
|
|
227
265
|
* location) being sent over an unencrypted connection.
|
|
266
|
+
* Also ensures the URL ends with a trailing slash so appId is always
|
|
267
|
+
* correctly appended (e.g. baseUrl + appId + '/users').
|
|
228
268
|
*/
|
|
229
269
|
private static enforceHttps;
|
|
230
270
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-notify-sphere",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"description": "Notify sphere npm package",
|
|
5
5
|
"main": "./lib/module/index",
|
|
6
6
|
"types": "lib/typescript/src/index.d.ts",
|
|
@@ -78,6 +78,7 @@
|
|
|
78
78
|
"react": "19.1.0",
|
|
79
79
|
"react-native": "0.81.1",
|
|
80
80
|
"react-native-builder-bob": "^0.40.13",
|
|
81
|
+
"react-native-device-info": "^15.0.1",
|
|
81
82
|
"release-it": "^19.0.4",
|
|
82
83
|
"turbo": "^2.5.6",
|
|
83
84
|
"typescript": "^5.9.2"
|
|
@@ -91,7 +92,8 @@
|
|
|
91
92
|
"@react-native-firebase/app": "^22.2.1",
|
|
92
93
|
"@react-native-firebase/messaging": "^22.2.1",
|
|
93
94
|
"react": "*",
|
|
94
|
-
"react-native": "*"
|
|
95
|
+
"react-native": "*",
|
|
96
|
+
"react-native-device-info": ">=10.0.0"
|
|
95
97
|
},
|
|
96
98
|
"workspaces": [
|
|
97
99
|
"example"
|
package/src/index.tsx
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import messaging from '@react-native-firebase/messaging';
|
|
2
|
+
import DeviceInfo from 'react-native-device-info';
|
|
2
3
|
import notifee, {
|
|
3
4
|
AndroidImportance,
|
|
5
|
+
AndroidVisibility,
|
|
4
6
|
AndroidStyle,
|
|
5
7
|
EventType,
|
|
6
8
|
type AndroidChannel,
|
|
@@ -9,9 +11,10 @@ import axios from 'axios';
|
|
|
9
11
|
import AsyncStorage from '@react-native-async-storage/async-storage';
|
|
10
12
|
import { PermissionsAndroid, Platform } from 'react-native';
|
|
11
13
|
|
|
12
|
-
const STORAGE_KEY_TOKEN
|
|
13
|
-
const STORAGE_KEY_SUB_ID
|
|
14
|
+
const STORAGE_KEY_TOKEN = '@notifysphere_fcm_token';
|
|
15
|
+
const STORAGE_KEY_SUB_ID = '@notifysphere_subscription_id';
|
|
14
16
|
const STORAGE_KEY_USER_HASH = '@notifysphere_user_hash';
|
|
17
|
+
const STORAGE_KEY_CHANNELS = '@notifysphere_channels';
|
|
15
18
|
|
|
16
19
|
// ─── Type definitions ──────────────────────────────────────────────────────────
|
|
17
20
|
|
|
@@ -52,6 +55,28 @@ export type NotificationCallback = (
|
|
|
52
55
|
type?: string
|
|
53
56
|
) => void;
|
|
54
57
|
|
|
58
|
+
/** Shape of a single notification channel returned by the registration API */
|
|
59
|
+
export interface BackendChannelConfig {
|
|
60
|
+
channel_id: string;
|
|
61
|
+
name: string;
|
|
62
|
+
description?: string;
|
|
63
|
+
/** Android importance level sent by backend — mapped to AndroidImportance */
|
|
64
|
+
Importance?: number;
|
|
65
|
+
/** 1 = enable LED, 0 = disable */
|
|
66
|
+
LED?: number;
|
|
67
|
+
led_color?: string | null;
|
|
68
|
+
/** 'Custom' | 'Default' | 'None' */
|
|
69
|
+
sound?: string;
|
|
70
|
+
/** Raw resource name used when sound === 'Custom' (e.g. 'nowait_sound') */
|
|
71
|
+
soundDetail?: string;
|
|
72
|
+
/** 1 = vibration on, 0 = off */
|
|
73
|
+
vibration?: number;
|
|
74
|
+
vibrationDetail?: string | null;
|
|
75
|
+
badge?: number;
|
|
76
|
+
/** 1 = PUBLIC, 0 = PRIVATE, -1 = SECRET */
|
|
77
|
+
lockScreen?: number;
|
|
78
|
+
}
|
|
79
|
+
|
|
55
80
|
export type InitializeConfig = {
|
|
56
81
|
/** Your application's user ID for this device */
|
|
57
82
|
applicationUserId: number;
|
|
@@ -113,10 +138,27 @@ const warn = (...args: unknown[]) => {
|
|
|
113
138
|
const logError = (...args: unknown[]) =>
|
|
114
139
|
console.error('[NotifySphere]', ...args);
|
|
115
140
|
|
|
141
|
+
// ─── SDK version ──────────────────────────────────────────────────────────────
|
|
142
|
+
|
|
143
|
+
const SDK_VERSION = '1.2.1';
|
|
144
|
+
|
|
145
|
+
// ─── Device info result shape ─────────────────────────────────────────────────
|
|
146
|
+
|
|
147
|
+
interface DeviceInfoResult {
|
|
148
|
+
sdk: string;
|
|
149
|
+
device_model: string;
|
|
150
|
+
device_os: string;
|
|
151
|
+
device_version: string;
|
|
152
|
+
carrier: string;
|
|
153
|
+
app_version: string;
|
|
154
|
+
timezone_id: string;
|
|
155
|
+
}
|
|
156
|
+
|
|
116
157
|
// ─── Default endpoints ────────────────────────────────────────────────────────
|
|
117
158
|
|
|
118
159
|
const DEFAULT_BASE_URL = 'https://api.notifysphere.in/client/';
|
|
119
160
|
// const DEFAULT_BASE_URL = 'https://apinotify.dothejob.in';
|
|
161
|
+
//const DEFAULT_BASE_URL = 'https://apinotify.dothejob.in/client/';
|
|
120
162
|
|
|
121
163
|
// ─── NotifySphere class ───────────────────────────────────────────────────────
|
|
122
164
|
|
|
@@ -236,6 +278,44 @@ class NotifySphere {
|
|
|
236
278
|
}
|
|
237
279
|
}
|
|
238
280
|
|
|
281
|
+
// ─── Device info ──────────────────────────────────────────────────────────
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* Collects device metadata sent to the registration API.
|
|
285
|
+
* Uses react-native-device-info for model, carrier, and app version.
|
|
286
|
+
* Falls back gracefully if any call fails so registration is never blocked.
|
|
287
|
+
*/
|
|
288
|
+
private static async getDeviceInfo(): Promise<DeviceInfoResult> {
|
|
289
|
+
try {
|
|
290
|
+
// getCarrier() is the only async call — run everything in parallel
|
|
291
|
+
const [carrier] = await Promise.all([
|
|
292
|
+
DeviceInfo.getCarrier().catch(() => ''),
|
|
293
|
+
]);
|
|
294
|
+
|
|
295
|
+
return {
|
|
296
|
+
sdk: SDK_VERSION,
|
|
297
|
+
device_model: DeviceInfo.getModel(),
|
|
298
|
+
device_os: Platform.OS,
|
|
299
|
+
device_version: DeviceInfo.getSystemVersion(),
|
|
300
|
+
carrier: carrier ?? '',
|
|
301
|
+
app_version: DeviceInfo.getVersion(),
|
|
302
|
+
// Intl is available in Hermes/JSC without any extra package
|
|
303
|
+
timezone_id: Intl.DateTimeFormat().resolvedOptions().timeZone ?? '',
|
|
304
|
+
};
|
|
305
|
+
} catch (err) {
|
|
306
|
+
warn('getDeviceInfo failed, using fallback values:', err);
|
|
307
|
+
return {
|
|
308
|
+
sdk: SDK_VERSION,
|
|
309
|
+
device_model: '',
|
|
310
|
+
device_os: Platform.OS,
|
|
311
|
+
device_version: String(Platform.Version),
|
|
312
|
+
carrier: '',
|
|
313
|
+
app_version: '',
|
|
314
|
+
timezone_id: '',
|
|
315
|
+
};
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
|
|
239
319
|
// ─── User details fingerprint ─────────────────────────────────────────────
|
|
240
320
|
|
|
241
321
|
/**
|
|
@@ -286,7 +366,7 @@ class NotifySphere {
|
|
|
286
366
|
): Promise<string | undefined> {
|
|
287
367
|
_debug = config.debug ?? false;
|
|
288
368
|
NotifySphere.appId = config.appId;
|
|
289
|
-
NotifySphere.baseUrl = NotifySphere.enforceHttps(config.baseUrl ?? DEFAULT_BASE_URL);
|
|
369
|
+
NotifySphere.baseUrl = NotifySphere.enforceHttps(config.baseUrl ?? DEFAULT_BASE_URL, true);
|
|
290
370
|
NotifySphere.trackingUrl = NotifySphere.enforceHttps(
|
|
291
371
|
config.trackingUrl ?? `${NotifySphere.baseUrl}${config.appId}/onpress/handle`
|
|
292
372
|
);
|
|
@@ -315,11 +395,21 @@ class NotifySphere {
|
|
|
315
395
|
// ── Only call the registration API when the FCM token OR any user
|
|
316
396
|
// detail has changed. This avoids a redundant network call on every
|
|
317
397
|
// app open while still syncing updates (email, phone, location, etc.)
|
|
318
|
-
const [cachedToken, cachedUserHash] = await Promise.all([
|
|
398
|
+
const [cachedToken, cachedUserHash, cachedChannels] = await Promise.all([
|
|
319
399
|
AsyncStorage.getItem(STORAGE_KEY_TOKEN),
|
|
320
400
|
AsyncStorage.getItem(STORAGE_KEY_USER_HASH),
|
|
401
|
+
AsyncStorage.getItem(STORAGE_KEY_CHANNELS),
|
|
321
402
|
]);
|
|
322
403
|
|
|
404
|
+
// Re-create all backend-configured channels on every launch so they
|
|
405
|
+
// always exist before a background notification arrives — even after
|
|
406
|
+
// a reinstall or app-data clear. Notifee's createChannel is idempotent.
|
|
407
|
+
if (cachedChannels) {
|
|
408
|
+
const channels = JSON.parse(cachedChannels) as BackendChannelConfig[];
|
|
409
|
+
await NotifySphere.createChannelsFromConfig(channels);
|
|
410
|
+
log('Channels restored from cache:', channels.length);
|
|
411
|
+
}
|
|
412
|
+
|
|
323
413
|
const currentUserHash = NotifySphere.buildUserHash(config);
|
|
324
414
|
let subscriptionId: string | undefined = cachedSubId ?? undefined;
|
|
325
415
|
|
|
@@ -369,6 +459,8 @@ class NotifySphere {
|
|
|
369
459
|
fcmToken: string,
|
|
370
460
|
userHash?: string
|
|
371
461
|
): Promise<string | undefined> {
|
|
462
|
+
|
|
463
|
+
const devInfo = await NotifySphere.getDeviceInfo();
|
|
372
464
|
const res = await axios.post(
|
|
373
465
|
`${NotifySphere.baseUrl}${config.appId}/users`,
|
|
374
466
|
{
|
|
@@ -384,6 +476,13 @@ class NotifySphere {
|
|
|
384
476
|
email: config.email,
|
|
385
477
|
phone: config.phone,
|
|
386
478
|
tags: config.tags,
|
|
479
|
+
sdk: devInfo.sdk,
|
|
480
|
+
device_model: devInfo.device_model,
|
|
481
|
+
device_os: devInfo.device_os,
|
|
482
|
+
device_version: devInfo.device_version,
|
|
483
|
+
carrier: devInfo.carrier,
|
|
484
|
+
app_version: devInfo.app_version,
|
|
485
|
+
timezone_id: devInfo.timezone_id,
|
|
387
486
|
},
|
|
388
487
|
},
|
|
389
488
|
{
|
|
@@ -402,6 +501,17 @@ class NotifySphere {
|
|
|
402
501
|
const subscriptionId: string | undefined = res.data?.subscription_id;
|
|
403
502
|
NotifySphere.subscriptionId = subscriptionId ?? null;
|
|
404
503
|
|
|
504
|
+
// Extract channels from the response and create them immediately.
|
|
505
|
+
// This ensures every backend-configured channel exists on the device
|
|
506
|
+
// before any background / terminated-state notification can arrive.
|
|
507
|
+
const channels: BackendChannelConfig[] | undefined =
|
|
508
|
+
res.data?.notification_channels;
|
|
509
|
+
if (channels && channels.length > 0) {
|
|
510
|
+
await NotifySphere.createChannelsFromConfig(channels);
|
|
511
|
+
await AsyncStorage.setItem(STORAGE_KEY_CHANNELS, JSON.stringify(channels));
|
|
512
|
+
log('Channels created and cached from registration response:', channels.length);
|
|
513
|
+
}
|
|
514
|
+
|
|
405
515
|
// Persist token, subscription_id, and user hash for future launch comparisons
|
|
406
516
|
const hash = userHash ?? NotifySphere.buildUserHash(config);
|
|
407
517
|
await Promise.all([
|
|
@@ -471,9 +581,14 @@ class NotifySphere {
|
|
|
471
581
|
user: { tags: params.tags },
|
|
472
582
|
},
|
|
473
583
|
{
|
|
474
|
-
headers: {
|
|
584
|
+
headers: {
|
|
585
|
+
'Content-Type': 'application/json',
|
|
586
|
+
...(NotifySphere.apiKey
|
|
587
|
+
? { Authorization: `Bearer ${NotifySphere.apiKey}` }
|
|
588
|
+
: {}),
|
|
589
|
+
},
|
|
475
590
|
maxBodyLength: 1024 * 50,
|
|
476
|
-
|
|
591
|
+
timeout: 10000,
|
|
477
592
|
}
|
|
478
593
|
);
|
|
479
594
|
|
|
@@ -552,9 +667,35 @@ class NotifySphere {
|
|
|
552
667
|
NotifySphere.subscriptionId = config.subscriptionId;
|
|
553
668
|
}
|
|
554
669
|
|
|
670
|
+
// Pre-create the default channel immediately so it is guaranteed to exist
|
|
671
|
+
// (with sound enabled) before any background or terminated-state message
|
|
672
|
+
// arrives. Without this, the channel would be created inside the async
|
|
673
|
+
// background handler — on some devices that races with the notification
|
|
674
|
+
// display and results in a silent notification.
|
|
675
|
+
notifee.createChannel({
|
|
676
|
+
id: 'channel_default',
|
|
677
|
+
name: 'Default Channel',
|
|
678
|
+
importance: AndroidImportance.HIGH,
|
|
679
|
+
lights: true,
|
|
680
|
+
lightColor: '#0000FF',
|
|
681
|
+
vibration: true,
|
|
682
|
+
});
|
|
683
|
+
|
|
555
684
|
messaging().setBackgroundMessageHandler(async (remoteMessage) => {
|
|
556
685
|
const msg = remoteMessage as FirebaseRemoteMessage;
|
|
557
|
-
|
|
686
|
+
|
|
687
|
+
// Always display via Notifee so the backend-configured channel (with its
|
|
688
|
+
// custom sound, importance, and LED settings) is used in every state.
|
|
689
|
+
//
|
|
690
|
+
// On iOS, setBackgroundMessageHandler never fires for messages that
|
|
691
|
+
// contain a `notification` field — APNs intercepts them — so there is
|
|
692
|
+
// no duplicate risk on iOS.
|
|
693
|
+
//
|
|
694
|
+
// On Android, if the FCM payload contains a `notification` field, FCM
|
|
695
|
+
// will also auto-display, which causes a duplicate notification. To avoid
|
|
696
|
+
// this, the backend should send data-only messages to Android tokens
|
|
697
|
+
// (omit the top-level `notification` field). Notifee then has full
|
|
698
|
+
// control over display and sound in all states.
|
|
558
699
|
await Promise.all([
|
|
559
700
|
NotifySphere.displayLocalNotification(msg),
|
|
560
701
|
NotifySphere.callbackOnDelivery(msg),
|
|
@@ -647,6 +788,68 @@ class NotifySphere {
|
|
|
647
788
|
);
|
|
648
789
|
}
|
|
649
790
|
|
|
791
|
+
// ─── Private: backend channel helpers ────────────────────────────────────
|
|
792
|
+
|
|
793
|
+
/** Maps the backend importance value to a Notifee AndroidImportance level. */
|
|
794
|
+
private static mapImportance(value: number | undefined): AndroidImportance {
|
|
795
|
+
const v = value ?? 3;
|
|
796
|
+
if (v >= 4) return AndroidImportance.HIGH;
|
|
797
|
+
if (v === 3) return AndroidImportance.DEFAULT;
|
|
798
|
+
if (v === 2) return AndroidImportance.LOW;
|
|
799
|
+
if (v === 1) return AndroidImportance.MIN;
|
|
800
|
+
return AndroidImportance.DEFAULT;
|
|
801
|
+
}
|
|
802
|
+
|
|
803
|
+
/** Maps the backend lockScreen value to a Notifee AndroidVisibility level. */
|
|
804
|
+
private static mapVisibility(lockScreen: number | undefined): AndroidVisibility {
|
|
805
|
+
if (lockScreen === 1) return AndroidVisibility.PUBLIC;
|
|
806
|
+
if (lockScreen === -1) return AndroidVisibility.SECRET;
|
|
807
|
+
return AndroidVisibility.PRIVATE;
|
|
808
|
+
}
|
|
809
|
+
|
|
810
|
+
/**
|
|
811
|
+
* Creates Notifee channels from the array returned by the registration API.
|
|
812
|
+
* Called immediately after registration and on every subsequent launch from
|
|
813
|
+
* the AsyncStorage cache — so channels always exist before any notification
|
|
814
|
+
* arrives, including in background / terminated state.
|
|
815
|
+
*/
|
|
816
|
+
private static async createChannelsFromConfig(
|
|
817
|
+
channels: BackendChannelConfig[]
|
|
818
|
+
): Promise<void> {
|
|
819
|
+
for (const ch of channels) {
|
|
820
|
+
// sound === 'Custom' → use soundDetail as the raw resource name
|
|
821
|
+
// sound === 'None' → no sound (don't spread sound key)
|
|
822
|
+
// sound === 'Default' → omit key so Android uses system default
|
|
823
|
+
let soundValue: string | undefined;
|
|
824
|
+
if (ch.sound === 'Custom' && ch.soundDetail) {
|
|
825
|
+
soundValue = ch.soundDetail.replace(/\..+$/, ''); // strip extension
|
|
826
|
+
}
|
|
827
|
+
// 'None' and 'Default' intentionally leave soundValue as undefined
|
|
828
|
+
|
|
829
|
+
console.log('this is sound value',soundValue)
|
|
830
|
+
|
|
831
|
+
const channelDef: AndroidChannel = {
|
|
832
|
+
id: ch.channel_id,
|
|
833
|
+
name: ch.name,
|
|
834
|
+
importance: NotifySphere.mapImportance(ch.Importance),
|
|
835
|
+
lights: (ch.LED ?? 0) === 1,
|
|
836
|
+
vibration: (ch.vibration ?? 0) === 1,
|
|
837
|
+
visibility: NotifySphere.mapVisibility(ch.lockScreen),
|
|
838
|
+
...(ch.description ? { description: ch.description } : {}),
|
|
839
|
+
...(ch.led_color ? { lightColor: ch.led_color } : {}),
|
|
840
|
+
// Only spread sound when it is a real custom resource name.
|
|
841
|
+
// For 'Default', omitting the key tells Android to use the system
|
|
842
|
+
// default sound. For 'None', omitting it silences the channel only
|
|
843
|
+
// if importance is set to LOW/MIN — HIGH importance always plays sound.
|
|
844
|
+
...(soundValue ? { sound: soundValue } : {}),
|
|
845
|
+
};
|
|
846
|
+
|
|
847
|
+
await notifee.createChannel(channelDef);
|
|
848
|
+
NotifySphere.createdChannels.add(ch.channel_id);
|
|
849
|
+
log('Channel created from backend config:', ch.channel_id, `(${ch.name})`);
|
|
850
|
+
}
|
|
851
|
+
}
|
|
852
|
+
|
|
650
853
|
// ─── Private: channel management ─────────────────────────────────────────
|
|
651
854
|
|
|
652
855
|
/**
|
|
@@ -666,7 +869,11 @@ class NotifySphere {
|
|
|
666
869
|
id,
|
|
667
870
|
name,
|
|
668
871
|
importance: AndroidImportance.HIGH,
|
|
669
|
-
|
|
872
|
+
// For custom sounds, use the raw resource name (without extension).
|
|
873
|
+
// For 'default', omit the field entirely so Android uses the device's
|
|
874
|
+
// default notification sound. Setting it to undefined explicitly can
|
|
875
|
+
// be treated as "no sound" by Notifee on some devices.
|
|
876
|
+
...(soundName !== 'default' ? { sound: soundName } : {}),
|
|
670
877
|
lights: true,
|
|
671
878
|
lightColor: '#0000FF',
|
|
672
879
|
vibration: true,
|
|
@@ -685,7 +892,11 @@ class NotifySphere {
|
|
|
685
892
|
// Use || so empty strings fall back just like null/undefined
|
|
686
893
|
const soundRaw = remoteMessage.data?.sound || 'default';
|
|
687
894
|
const soundName = soundRaw.replace(/\..+$/, '');
|
|
688
|
-
|
|
895
|
+
|
|
896
|
+
// If the backend specifies a channelId (e.g. a UUID created on the dashboard),
|
|
897
|
+
// use it directly — this lets the backend control which channel the notification
|
|
898
|
+
// is assigned to. Otherwise fall back to a channel derived from the sound name.
|
|
899
|
+
const channelId = remoteMessage.data?.channelId || `channel_${soundName}`;
|
|
689
900
|
|
|
690
901
|
await NotifySphere.ensureChannel(channelId, `Channel ${soundName}`, soundRaw);
|
|
691
902
|
|
|
@@ -703,20 +914,34 @@ class NotifySphere {
|
|
|
703
914
|
const body =
|
|
704
915
|
remoteMessage.data?.body || remoteMessage.notification?.body || undefined;
|
|
705
916
|
|
|
706
|
-
// smallIcon
|
|
707
|
-
//
|
|
708
|
-
|
|
709
|
-
|
|
917
|
+
// Resolve smallIcon and largeIcon — both fall back to
|
|
918
|
+
// 'ic_stat_notifysphere_default' if not provided in the payload.
|
|
919
|
+
// Add a drawable with this name to your app's res/drawable folder.
|
|
920
|
+
const smallIconResolved =
|
|
921
|
+
NotifySphere.resolveIcon(remoteMessage.data?.smallIcon) ??
|
|
922
|
+
'ic_stat_notifysphere_default';
|
|
923
|
+
const largeIconResolved =
|
|
924
|
+
NotifySphere.resolveIcon(remoteMessage.data?.largeIcon) ??
|
|
925
|
+
'ic_stat_notifysphere_default';
|
|
926
|
+
|
|
927
|
+
// Determine Android expand style:
|
|
928
|
+
// - Image present → BIGPICTURE (shows image when expanded)
|
|
929
|
+
// - Long body (>44 chars) → BIGTEXT (shows full text when expanded)
|
|
930
|
+
// - Otherwise → no style (single-line collapsed notification)
|
|
931
|
+
const androidStyle = image
|
|
932
|
+
? ({ type: AndroidStyle.BIGPICTURE, picture: image } as const)
|
|
933
|
+
: body && body.length > 44
|
|
934
|
+
? ({ type: AndroidStyle.BIGTEXT, text: body } as const)
|
|
935
|
+
: undefined;
|
|
710
936
|
|
|
711
937
|
await notifee.displayNotification({
|
|
712
938
|
title,
|
|
713
939
|
body,
|
|
714
940
|
android: {
|
|
715
941
|
channelId,
|
|
716
|
-
smallIcon,
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
: undefined,
|
|
942
|
+
smallIcon: smallIconResolved,
|
|
943
|
+
largeIcon: largeIconResolved,
|
|
944
|
+
style: androidStyle,
|
|
720
945
|
},
|
|
721
946
|
ios: {
|
|
722
947
|
sound: soundRaw,
|
|
@@ -744,8 +969,10 @@ class NotifySphere {
|
|
|
744
969
|
/**
|
|
745
970
|
* Rejects plain HTTP URLs to prevent user data (FCM token, email, phone,
|
|
746
971
|
* location) being sent over an unencrypted connection.
|
|
972
|
+
* Also ensures the URL ends with a trailing slash so appId is always
|
|
973
|
+
* correctly appended (e.g. baseUrl + appId + '/users').
|
|
747
974
|
*/
|
|
748
|
-
private static enforceHttps(url: string): string {
|
|
975
|
+
private static enforceHttps(url: string, ensureTrailingSlash = false): string {
|
|
749
976
|
if (url.startsWith('http://')) {
|
|
750
977
|
logError(
|
|
751
978
|
`Insecure URL rejected: "${url}". NotifySphere only allows HTTPS endpoints.`
|
|
@@ -754,6 +981,9 @@ class NotifySphere {
|
|
|
754
981
|
`NotifySphere: insecure HTTP URL is not allowed — use HTTPS instead.`
|
|
755
982
|
);
|
|
756
983
|
}
|
|
984
|
+
if (ensureTrailingSlash && !url.endsWith('/')) {
|
|
985
|
+
return url + '/';
|
|
986
|
+
}
|
|
757
987
|
return url;
|
|
758
988
|
}
|
|
759
989
|
|