@@ -22,10 +22,17 @@ async function isSimulator() {
22
22
async function isAPNSCapableSimulator ( ) {
23
23
supportedAbis = await DeviceInfo . supportedAbis ( ) ; // looking for an ARM Simulator implying M1 host
24
24
iosVersionMajor = DeviceInfo . getSystemVersion ( ) . split ( '.' ) [ 0 ] ; // looking for iOS16+
25
+ iosVersionMinor = DeviceInfo . getSystemVersion ( ) . split ( '.' ) [ 1 ] ; // iOS 17.2 has a problem !?
25
26
macOSVersionMajor = require ( 'os' ) . release ( ) . split ( '.' ) [ 0 ] ; // host macOS13+ has Darwin kernel 22+
26
- if ( macOSVersionMajor >= 22 && supportedAbis . includes ( 'ARM64E' ) && iosVersionMajor >= 16 ) {
27
+ if (
28
+ macOSVersionMajor >= 22 &&
29
+ supportedAbis . includes ( 'ARM64E' ) &&
30
+ iosVersionMajor >= 16 &&
31
+ `${ iosVersionMajor } .${ iosVersionMinor } ` !== '17.2'
32
+ ) {
27
33
return true ;
28
34
}
35
+
29
36
return false ;
30
37
}
31
38
@@ -90,8 +97,13 @@ describe('messaging()', function () {
90
97
if ( device . getPlatform ( ) === 'ios' ) {
91
98
await firebase . messaging ( ) . unregisterDeviceForRemoteMessages ( ) ;
92
99
should . equal ( firebase . messaging ( ) . isDeviceRegisteredForRemoteMessages , false ) ;
93
- await firebase . messaging ( ) . registerDeviceForRemoteMessages ( ) ;
94
- should . equal ( firebase . messaging ( ) . isDeviceRegisteredForRemoteMessages , true ) ;
100
+ // did this happen in logs?
101
+ // 2024-02-02 18:35:26.277 Df testing[26266:18d3f] (Detox) 10.20.0 - [FirebaseMessaging][I-FCM002022] Declining request for FCM Token since no APNS Token specified
102
+ tryToRegister = await isAPNSCapableSimulator ( ) ;
103
+ if ( tryToRegister ) {
104
+ await firebase . messaging ( ) . registerDeviceForRemoteMessages ( ) ;
105
+ should . equal ( firebase . messaging ( ) . isDeviceRegisteredForRemoteMessages , true ) ;
106
+ }
95
107
} else {
96
108
this . skip ( ) ;
97
109
}
@@ -133,14 +145,12 @@ describe('messaging()', function () {
133
145
} ) ;
134
146
it ( 'resolves on ios with token on supported simulators' , async function ( ) {
135
147
// Make sure we are registered for remote notifications, else no token
136
- await firebase . messaging ( ) . registerDeviceForRemoteMessages ( ) ;
137
-
138
- if ( device . getPlatform ( ) === 'ios' ) {
148
+ aPNSCapableSimulator = await isAPNSCapableSimulator ( ) ;
149
+ simulator = await isSimulator ( ) ;
150
+ if ( device . getPlatform ( ) === 'ios' && ( ! simulator || ( simulator && aPNSCapableSimulator ) ) ) {
151
+ await firebase . messaging ( ) . registerDeviceForRemoteMessages ( ) ;
139
152
apnsToken = await firebase . messaging ( ) . getAPNSToken ( ) ;
140
153
141
- simulator = await isSimulator ( ) ;
142
- aPNSCapableSimulator = await isAPNSCapableSimulator ( ) ;
143
-
144
154
if ( ! simulator || ( simulator && aPNSCapableSimulator ) ) {
145
155
apnsToken . should . be . a . String ( ) ;
146
156
} else {
@@ -197,7 +207,9 @@ describe('messaging()', function () {
197
207
} ) ;
198
208
199
209
it ( 'correctly sets new token on ios' , async function ( ) {
200
- if ( device . getPlatform ( ) === 'ios' ) {
210
+ aPNSCapableSimulator = await isAPNSCapableSimulator ( ) ;
211
+ simulator = await isSimulator ( ) ;
212
+ if ( device . getPlatform ( ) === 'ios' && ( ! simulator || ( simulator && aPNSCapableSimulator ) ) ) {
201
213
originalAPNSToken = await firebase . messaging ( ) . getAPNSToken ( ) ;
202
214
// 74657374696E67746F6B656E is hex for "testingtoken"
203
215
await firebase . messaging ( ) . setAPNSToken ( '74657374696E67746F6B656E' , 'unknown' ) ;
@@ -230,12 +242,18 @@ describe('messaging()', function () {
230
242
231
243
describe ( 'deleteToken()' , function ( ) {
232
244
it ( 'generate a new token after deleting' , async function ( ) {
233
- const token1 = await firebase . messaging ( ) . getToken ( ) ;
234
- should . exist ( token1 ) ;
235
- await firebase . messaging ( ) . deleteToken ( ) ;
236
- const token2 = await firebase . messaging ( ) . getToken ( ) ;
237
- should . exist ( token2 ) ;
238
- token1 . should . not . eql ( token2 ) ;
245
+ aPNSCapableSimulator = await isAPNSCapableSimulator ( ) ;
246
+ simulator = await isSimulator ( ) ;
247
+ if ( device . getPlatform ( ) === 'ios' && simulator && ! aPNSCapableSimulator ) {
248
+ this . skip ( ) ;
249
+ } else {
250
+ const token1 = await firebase . messaging ( ) . getToken ( ) ;
251
+ should . exist ( token1 ) ;
252
+ await firebase . messaging ( ) . deleteToken ( ) ;
253
+ const token2 = await firebase . messaging ( ) . getToken ( ) ;
254
+ should . exist ( token2 ) ;
255
+ token1 . should . not . eql ( token2 ) ;
256
+ }
239
257
} ) ;
240
258
} ) ;
241
259
@@ -546,8 +564,15 @@ describe('messaging()', function () {
546
564
if ( device . getPlatform ( ) === 'ios' ) {
547
565
await unregisterDeviceForRemoteMessages ( getMessaging ( ) ) ;
548
566
should . equal ( isDeviceRegisteredForRemoteMessages ( getMessaging ( ) ) , false ) ;
549
- await registerDeviceForRemoteMessages ( getMessaging ( ) ) ;
550
- should . equal ( isDeviceRegisteredForRemoteMessages ( getMessaging ( ) ) , true ) ;
567
+ aPNSCapableSimulator = await isAPNSCapableSimulator ( ) ;
568
+ simulator = await isSimulator ( ) ;
569
+ if (
570
+ device . getPlatform ( ) === 'ios' &&
571
+ ( ! simulator || ( simulator && aPNSCapableSimulator ) )
572
+ ) {
573
+ await registerDeviceForRemoteMessages ( getMessaging ( ) ) ;
574
+ should . equal ( isDeviceRegisteredForRemoteMessages ( getMessaging ( ) ) , true ) ;
575
+ }
551
576
} else {
552
577
this . skip ( ) ;
553
578
}
@@ -594,14 +619,12 @@ describe('messaging()', function () {
594
619
it ( 'resolves on ios with token on supported simulators' , async function ( ) {
595
620
// Make sure we are registered for remote notifications, else no token
596
621
const { getMessaging, getAPNSToken, registerDeviceForRemoteMessages } = messagingModular ;
597
- await registerDeviceForRemoteMessages ( getMessaging ( ) ) ;
598
-
599
- if ( device . getPlatform ( ) === 'ios' ) {
622
+ aPNSCapableSimulator = await isAPNSCapableSimulator ( ) ;
623
+ simulator = await isSimulator ( ) ;
624
+ if ( device . getPlatform ( ) === 'ios' && ( ! simulator || ( simulator && aPNSCapableSimulator ) ) ) {
625
+ await registerDeviceForRemoteMessages ( getMessaging ( ) ) ;
600
626
apnsToken = await getAPNSToken ( getMessaging ( ) ) ;
601
627
602
- simulator = await isSimulator ( ) ;
603
- aPNSCapableSimulator = await isAPNSCapableSimulator ( ) ;
604
-
605
628
if ( ! simulator || ( simulator && aPNSCapableSimulator ) ) {
606
629
apnsToken . should . be . a . String ( ) ;
607
630
} else {
@@ -662,7 +685,9 @@ describe('messaging()', function () {
662
685
663
686
it ( 'correctly sets new token on ios' , async function ( ) {
664
687
const { getMessaging, getAPNSToken, setAPNSToken } = messagingModular ;
665
- if ( device . getPlatform ( ) === 'ios' ) {
688
+ aPNSCapableSimulator = await isAPNSCapableSimulator ( ) ;
689
+ simulator = await isSimulator ( ) ;
690
+ if ( device . getPlatform ( ) === 'ios' && ( ! simulator || ( simulator && aPNSCapableSimulator ) ) ) {
666
691
originalAPNSToken = await getAPNSToken ( getMessaging ( ) ) ;
667
692
// 74657374696E67746F6B656E6D6F64756C6172 is hex for "testingtokenmodular"
668
693
await firebase
@@ -690,12 +715,16 @@ describe('messaging()', function () {
690
715
describe ( 'deleteToken()' , function ( ) {
691
716
it ( 'generate a new token after deleting' , async function ( ) {
692
717
const { getMessaging, getToken, deleteToken } = messagingModular ;
693
- const token1 = await getToken ( getMessaging ( ) ) ;
694
- should . exist ( token1 ) ;
695
- await deleteToken ( getMessaging ( ) ) ;
696
- const token2 = await getToken ( getMessaging ( ) ) ;
697
- should . exist ( token2 ) ;
698
- token1 . should . not . eql ( token2 ) ;
718
+ aPNSCapableSimulator = await isAPNSCapableSimulator ( ) ;
719
+ simulator = await isSimulator ( ) ;
720
+ if ( device . getPlatform ( ) === 'ios' && ( ! simulator || ( simulator && aPNSCapableSimulator ) ) ) {
721
+ const token1 = await getToken ( getMessaging ( ) ) ;
722
+ should . exist ( token1 ) ;
723
+ await deleteToken ( getMessaging ( ) ) ;
724
+ const token2 = await getToken ( getMessaging ( ) ) ;
725
+ should . exist ( token2 ) ;
726
+ token1 . should . not . eql ( token2 ) ;
727
+ }
699
728
} ) ;
700
729
701
730
it ( 'should throw Error with wrong parameter types' , async function ( ) {
0 commit comments