只要我bundle id
的是“dev.suragch.flutterAudioServiceDemo”(不是我的) ,音频就会在后台运行
但是如果我更改bunde id
为我的“com.ambee.new”:
-后台停止工作。
这是怎么回事?如何使它与我的bundleId
“com.ambee.new”一起使用?
这是我的 main.dart:
import 'package:audio_service/audio_service.dart';
import 'package:get_it/get_it.dart';
import 'package:audioplayers/audioplayers.dart' as audioplayers;
void main() async {
await setupServiceLocator();
final _audioHandler = getIt<AudioHandler>();
_audioHandler.play();
}
GetIt getIt = GetIt.instance;
Future<void> setupServiceLocator() async {
// services
getIt.registerSingleton<AudioHandler>(await initAudioService());
}
Future<AudioHandler> initAudioService() async {
return await AudioService.init(
builder: () => MyAudioHandler(),
config: AudioServiceConfig(
androidNotificationChannelId: 'com.mycompany.myapp.audio',
androidNotificationChannelName: 'Audio Service Demo',
androidNotificationOngoing: true,
androidStopForegroundOnPause: true,
),
);
}
class MyAudioHandler extends BaseAudioHandler {
final _player = audioplayers.AudioPlayer();
MyAudioHandler() {
_player.setReleaseMode(audioplayers.ReleaseMode.LOOP);
}
@override
Future<void> play() => _player.play(
'https://firebasestorage.googleapis.com/v0/b/ambee-cloud.appspot.com/o/Sound%2Fshort.wav?alt=media&token=bd7cc97f-d3d8-490b-9aff-b92df304e145');
}
您可以通过从此repo转到 ios -> Runner.xcworkspace 自己重现该问题。使用物理 iPhone 测试背景音频循环,而不是模拟器。
当您在 Xcode 中使用此捆绑包 ID 对其进行测试时:
dev.suragch.flutterAudioServiceDemo
:一旦你屏蔽了物理 iPhone,它就会在后台循环播放音频com.ambee.new
:一旦你阻止了物理 iPhone,它就会停止在后台循环播放音频