如何在接收推送通知的同时在后台振动多达30秒的iOS设备

时间:2019-07-01 09:58:51

标签: ios objective-c apple-push-notifications

我已经为推送通知实现了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];
    });
  }
}
  

问题是我只能在应用前景中振动。当应用程序   被杀死或在后台振动代码部分不起作用。

0 个答案:

没有答案