私はアプリに取り組んでいます。アプリでタイマーを設定しました。その後、バックグラウンドになり、時間が終わったらバックグラウンドで音楽を再生したいのですが、音楽が再生されませんか?
3 に答える
ios-sdk_background-audioを参照してください。あなたはとても役に立ちます。幸運を
このタイマーコードを使用してタイマーを設定します
UIBackgroundTaskIdentifier bgTask =0;
UIApplication *app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:bgTask];
}];
self.secondsTimer = [NSTimer
scheduledTimerWithTimeInterval:1
target:self
selector:@selector(timerFireMethod:)
userInfo:nil
repeats:NO];
火の方法-- (void) timerFireMethod:(NSTimer *) theTimer
{}
この火の方法では、メディアファイルを再生するために以下のコードを使用します-
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle]
pathForResource:@"tujhbinjena"
ofType:@"mp3"]];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
NSError *error;
audioPlayer = [[AVAudioPlayer alloc]
initWithContentsOfURL:url
error:&error];
audioPlayer.delegate=self;
audioPlayer.volume=1.0;
if (error)
{
NSLog(@"Error in audioPlayer: %@",
[error localizedDescription]);
} else {
audioPlayer.delegate = self;
[audioPlayer prepareToPlay];
[audioPlayer play]
}`
[自分がFirstResponderになる]; [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback エラー:nil]; [[AVAudioSession sharedInstance] setActive: はい エラー: nil];
- (BOOL)canBecomeFirstResponder {
return YES;
}
ViewDidUnload では、次の行を実行する必要があります
[[UIApplication sharedApplication] endReceivingRemoteControlEvents];
[self resignFirstResponder];
に従って AVAudioPlayerDelegateデリゲート メソッドを処理する必要があり、バックグラウンドでオーディオを再生するには、 Info.plistに 1 つのパラメーターを追加する必要があります。これは「必須のバックグラウンド モード」であり、このキーの値は「アプリがオーディオを再生します」です。ご不明な点がございましたらお知らせください。
この関数には、次のメソッドを使用できます:--
-(void)notificationSchedue
{
NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar];
//---------remainingTime NSUserDefaults には将来の日付が含まれています--------//
NSString *datevalueremaining= [[NSUserDefaults standardUserDefaults]valueForKey:@"remainingTime"];
NSDateFormatter *dateFormat = [[[NSDateFormatter alloc] init] autorelease];
[dateFormat setDateFormat:@"dd/MM/yyyy HH:mm:ss"];
NSDate *dateremaining=[dateFormat dateFromString:datevalueremaining];
NSDate *pickerDate = dateremaining;
NSDateComponents *dateComponents = [calendar components:( NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit )
fromDate:pickerDate];
NSDateComponents *timeComponents = [calendar components:( NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit )
fromDate:pickerDate];
// Set up the fire time
NSDateComponents *dateComps = [[NSDateComponents alloc] init];
[dateComps setDay:[dateComponents day]];
[dateComps setMonth:[dateComponents month]];
[dateComps setYear:[dateComponents year]];
[dateComps setHour:[timeComponents hour]];
[dateComps setMinute:[timeComponents minute]];
[dateComps setSecond:[timeComponents second]];
NSDate *itemDate = [calendar dateFromComponents:dateComps];
[dateComps release];
if (localNotif)
{
[[UIApplication sharedApplication] cancelLocalNotification:localNotif];
[localNotif release];
}
localNotif = [[UILocalNotification alloc] init];
if (localNotif == nil)
return;
localNotif.fireDate = itemDate;
localNotif.timeZone = [NSTimeZone defaultTimeZone];
localNotif.alertBody = @"Your Time is Over";
localNotif.alertAction = @"View";
NSString *stringvalue=[[NSUserDefaults standardUserDefaults]valueForKey:@"goodNight"];
//-----音楽は 30 秒以下にする必要があります---//
localNotif.soundName=@"s1.mp3";
NSDictionary *infoDict = [NSDictionary dictionaryWithObject:@"someValue" forKey:@"someKey"];
localNotif.userInfo = infoDict;
[[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
}