我已经为推送通知实现了APNS。我正在使用自定义声音发出警报通知,将播放30秒警报声音频文件。那正在工作。在播放该声音时,我只有2秒钟的持续时间振动一次。我需要长达30秒的振动。我该如何实现。 这是我正在使用的有效载荷。
{"aps":{"alert":"alert message","badge":1,"sound":"SIREN.caf"}}
我尝试实现振动30秒的代码。它会被调用
didReceiveRemoteNotification
-(void)vibrateDevice{
AudioServicesPlaySystemSoundWithCompletion(kSystemSoundID_Vibrate, ^{
AudioServicesDisposeSystemSoundID(kSystemSoundID_Vibrate);
});
vibrateCount++;
if (vibrateCount<30) {
// [self performSelector:@selector(vibrateDevice) withObject:nil afterDelay:1.0];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), { NSTimer* t = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(vibrateDevice) userInfo:nil repeats:NO];
[[NSRunLoop currentRunLoop] addTimer:t forMode:NSDefaultRunLoopMode];
[[NSRunLoop currentRunLoop] run];
});
}
}
问题是我只能在应用前景中振动。当应用程序 被杀死或在后台振动代码部分不起作用。