@@ -36,7 +36,7 @@ interface PlayConfig {
36
36
looping ?: boolean ;
37
37
speed ?: number ;
38
38
autoDestroy ?: boolean ;
39
- continueToPlayInBackground ?: boolean ;
39
+ continuesToPlayInBackground ?: boolean ;
40
40
}
41
41
42
42
interface PlayInfo {
@@ -45,7 +45,7 @@ interface PlayInfo {
45
45
}
46
46
47
47
interface Error {
48
- err : string ;
48
+ err ? : string ;
49
49
message ?: string ;
50
50
}
51
51
@@ -143,10 +143,13 @@ export class RCTAudioPlayerTurboModule extends TurboModule {
143
143
144
144
pauseOnBackground ( ) : void {
145
145
this . playConfigMap . forEach ( ( config , playerId ) => {
146
- if ( ! config . continueToPlayInBackground ) {
146
+ if ( ! config . continuesToPlayInBackground ) {
147
147
const player = this . playerMap . get ( playerId ) ;
148
148
if ( player ) {
149
149
player . pause ( ) ;
150
+ this . toEmit ( playerId , 'pause' , {
151
+ message : 'Playback paused due toBackground' ,
152
+ } ) ;
150
153
}
151
154
}
152
155
} ) ;
@@ -163,7 +166,7 @@ export class RCTAudioPlayerTurboModule extends TurboModule {
163
166
} ) ;
164
167
}
165
168
166
- setAVPlayerCallback ( avPlayer : media . AVPlayer , playerId : number ) : void {
169
+ setAVPlayerCallback ( avPlayer : media . AVPlayer , playerId : number , next : ( object ? ) => void ) : void {
167
170
// seek操作结果回调函数
168
171
avPlayer . on ( 'seekDone' , ( seekDoneTime : number ) => {
169
172
logger . debug ( `AVPlayer seek succeeded, seek time is ${ seekDoneTime } ` ) ;
@@ -178,7 +181,7 @@ export class RCTAudioPlayerTurboModule extends TurboModule {
178
181
avPlayer . reset ( ) ; // 调用reset重置资源,触发idle状态
179
182
} ) ;
180
183
// 状态机变化回调函数
181
- this . avPlayerStateChangeCallback ( avPlayer , playerId ) ;
184
+ this . avPlayerStateChangeCallback ( avPlayer , playerId , next ) ;
182
185
avPlayer . on ( 'seekDone' , ( ) => {
183
186
const call = this . playSeekCallbacks . get ( playerId ) ;
184
187
if ( call ) {
@@ -229,7 +232,7 @@ export class RCTAudioPlayerTurboModule extends TurboModule {
229
232
} ) ;
230
233
}
231
234
232
- avPlayerStateChangeCallback ( avPlayer : media . AVPlayer , playerId : number ) : void {
235
+ avPlayerStateChangeCallback ( avPlayer : media . AVPlayer , playerId : number , next : ( object ? ) => void ) : void {
233
236
avPlayer . on ( 'stateChange' , async ( state : string , reason : media . StateChangeReason ) => {
234
237
logger . debug ( `stateChange:${ state } ` ) ;
235
238
switch ( state ) {
@@ -242,6 +245,7 @@ export class RCTAudioPlayerTurboModule extends TurboModule {
242
245
case StateChange . PREPARED : // prepare调用成功后上报该状态机
243
246
logger . debug ( `prepared called.to and apply config and play` ) ;
244
247
this . applyConfig ( playerId ) ;
248
+ next ( null ) ;
245
249
break ;
246
250
case StateChange . PLAYING : // play成功调用后触发该状态机上报
247
251
break ;
@@ -272,11 +276,11 @@ export class RCTAudioPlayerTurboModule extends TurboModule {
272
276
} ) ;
273
277
}
274
278
275
- async createPlayer ( pathStr : string , playerId : number ) : Promise < void > {
279
+ async createPlayer ( pathStr : string , playerId : number , next : ( object ? ) => void ) : Promise < void > {
276
280
logger . debug ( `createPlayer path:${ pathStr } ` ) ;
277
281
try {
278
282
const avPlayer : media . AVPlayer = await media . createAVPlayer ( ) ;
279
- this . setAVPlayerCallback ( avPlayer , playerId ) ;
283
+ this . setAVPlayerCallback ( avPlayer , playerId , next ) ;
280
284
if ( pathStr . startsWith ( this . HTTP_START ) ) {
281
285
avPlayer . url = pathStr ;
282
286
} else {
@@ -312,39 +316,47 @@ export class RCTAudioPlayerTurboModule extends TurboModule {
312
316
}
313
317
}
314
318
315
- prepare ( playerId : number , path : string , option : PlayConfig , next : ( ) => void ) : void {
319
+ prepare ( playerId : number , path : string , option : PlayConfig , next : ( object ? ) => void ) : void {
316
320
logger . debug ( `prepare start` ) ;
317
321
this . setConfig ( playerId , option ) ;
318
- this . createPlayer ( path , playerId ) . then ( ( ) => {
319
- next ( ) ;
322
+ this . createPlayer ( path , playerId , next ) . then ( ( ) => {
320
323
} ) ;
321
324
}
322
325
323
- checkPlayer ( playerId : number , next : ( err ?: string ) => void ) : boolean {
326
+ checkPlayer ( playerId : number , next : ( object ? ) => void ) : boolean {
324
327
const hasPlayer = this . playerMap . has ( playerId ) ;
325
328
if ( hasPlayer ) {
326
329
return true ;
327
330
} else {
328
- next ?.( 'not found player' ) ;
331
+ logger . debug ( 'not found player' )
332
+ let err : Error = {
333
+ err : 'not found player' ,
334
+ message : 'not found media player' ,
335
+ } ;
336
+ next ?.( err ) ;
329
337
return false ;
330
338
}
331
339
}
332
340
333
- async play ( playerId : number , callback : ( err : string , result ?: PlayInfo ) => void ) : Promise < void > {
341
+ async play ( playerId : number , callback : ( object ? , result ?: PlayInfo ) => void ) : Promise < void > {
334
342
try {
335
343
logger . debug ( `play start` ) ;
336
344
if ( ! this . checkPlayer ( playerId , callback ) ) {
337
345
return ;
338
346
}
339
347
const player = this . getPlayer ( playerId ) ;
340
348
await player . play ( ) ;
341
- callback ( '' , this . getInfo ( playerId ) ) ;
349
+ callback ( null , this . getInfo ( playerId ) ) ;
342
350
} catch ( e ) {
343
- callback ?.( `player call play function err:${ JSON . stringify ( e ) } ` ) ;
351
+ let err : Error = {
352
+ err : 'player function err' ,
353
+ message : `player call play function err:${ JSON . stringify ( e ) } ` ,
354
+ } ;
355
+ callback ?.( err , this . getInfo ( playerId ) ) ;
344
356
}
345
357
}
346
358
347
- async pause ( playerId : number , callback : ( err : string , result ?: PlayInfo ) => void ) : Promise < void > {
359
+ async pause ( playerId : number , callback : ( object ? , result ?: PlayInfo ) => void ) : Promise < void > {
348
360
logger . debug ( `pause start` ) ;
349
361
if ( ! this . checkPlayer ( playerId , callback ) ) {
350
362
return ;
@@ -354,7 +366,7 @@ export class RCTAudioPlayerTurboModule extends TurboModule {
354
366
this . toEmit ( playerId , 'pause' , {
355
367
message : 'player paused' ,
356
368
} ) ;
357
- callback ( '' , this . getInfo ( playerId ) ) ;
369
+ callback ( null , this . getInfo ( playerId ) ) ;
358
370
}
359
371
360
372
async stop ( playerId : number , callback : ( ) => void ) : Promise < void > {
0 commit comments