-1

只要我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,它就会停止在后台循环播放音频
4

0 回答 0