0

アプリの起動時にバックグラウンドでオーディオ ファイルを再生しています。関数は viewDidLoad で呼び出されます。

-(void)playsong
{
    NSString *songUrl = [[NSBundle mainBundle] pathForResource:@"chant" ofType:@"m4a"];
    NSData *songFile = [NSData dataWithContentsOfFile:songUrl];

    NSError *error; 
    audioPlayer = [[AVAudioPlayer alloc] initWithData:songFile error:&error ];
    [audioPlayer play];
}

ユーザーがホーム ボタンを押して、曲の現在の位置が 10 秒になると、曲の再生が停止します。しかし、ユーザーが再びアプリを開くと、曲は同じ位置から始まります。

アプリを開くたびに最初から起動してほしいです。

さらに、メモリ上の理由から、メモリの割り当てを解除したほうがよいのではないでしょうか?

から関数を呼び出そうとしました

- (void)viewWillAppear:(BOOL)animated

そしてそれを nil に設定します

- (void)viewWillDisappear:(BOOL)animated

しかし、メソッド - (void)viewWillDisappear:(BOOL)animated は呼び出されません。

4

1 に答える 1

1

viewWillDisappear が機能しない場合は、NSNotification センターにオブザーバーを追加してみてください。これは、アプリケーションが EnterBackground を実行したときにメソッドを呼び出します。そのようです:

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(enteredBackground:)
                                             name:UIApplicationDidEnterBackgroundNotification
                                           object:nil];

次に、コードをこのメソッドに追加します。

-(void)enteredBackground:(NSNotification *)notification {

}

お役に立てれば!

アップデート

では、about us ビューの audio オブジェクトにアクセスしたい場所から、次のようにしてみてください。

HomeViewController *HomeVC = [HomeViewController alloc] init]; 

HomeVC.audioPlayer...//then do what you want with it

ホーム VC でオーディオ オブジェクトを宣言している限り、これは機能するはずです。

about us ビュー コントローラーのいずれかのファイルにも、homeview コントローラーがインポートされていることを確認してください。

于 2013-06-30T14:25:27.120 に答える