通知センターを使用できます。
1- viewDidLoad の場合:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(playbackStateDidChange:)
name:@"MPAVControllerPlaybackStateChangedNotification"
object:nil];
2- このメソッドを実装します (秒は int です):
- (void)playbackStateDidChange:(NSNotification *)note {
NSLog(@"note.name=%@ state=%d", note.name, [[note.userInfo objectForKey:@"MPAVControllerNewStateParameter"] intValue]);
if ([[note.userInfo objectForKey:@"MPAVControllerNewStateParameter"] intValue] == 2) {
timer= [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(increaseSeconds) userInfo:nil repeats:YES];
NSLog(@"seconds: %i", seconds);
} else if([[note.userInfo objectForKey:@"MPAVControllerNewStateParameter"] intValue] == 1){
[timer invalidate];
NSLog(@"seconds: %i", seconds);
} else if([[note.userInfo objectForKey:@"MPAVControllerNewStateParameter"] intValue] == 0){
NSLog(@"Total watched: %i", seconds);
[self dismissMoviePlayerViewControllerAnimated];
}
}
MPAVControllerNewStateParameter == 2 (ビデオ開始) MPAVControllerNewStateParameter == 1 (ビデオ停止) MPAVControllerNewStateParameter == 0 (ビデオ終了または「完了」を押す)
3- 最後に、このメソッドを実装します。
-(void) increaseSeconds {
seconds++;
}