2017-07-14 49 views
1

是否可以爲用戶通知警報創建自定義振動模式?例如,我們可以選擇爲用戶通知使用不同的音頻。是否有可能定製振動模式?用戶通知:自定義振動模式

我的意思是在iOS上使用swift以編程方式執行此操作。

回答

0

用於在iOS中創建自定義振動。使用AudioServicesPlaySystemSoundWithVibration和AudioServicesStopSystemSound。

心拍振實例

NSMutableDictionary* pulsePatternsDict = [@{} mutableCopy]; 
     NSMutableArray* pulsePatternsArray = [@[] mutableCopy]; 

     // beat for 100 times 
     for (NSInteger i=0; i<100; i++){ 
      [pulsePatternsArray addObject:@(YES)]; // vibrate for 100ms 
      [pulsePatternsArray addObject:@(100)]; 

      [pulsePatternsArray addObject:@(NO)]; //stop for 1200ms * 0.3 
      [pulsePatternsArray addObject:@(1200*0.3)]; 

      [pulsePatternsArray addObject:@(YES)]; //vibrate for 100ms 
      [pulsePatternsArray addObject:@(100)]; 

      [pulsePatternsArray addObject:@(NO)]; //stop for 1200ms * 0.5 
      [pulsePatternsArray addObject:@(1200*0.5)]; 
     } 

     [pulsePatternsDict setObject:pulsePatternsArray forKey:@"VibePattern"]; 
     [pulsePatternsDict setObject:[NSNumber numberWithInt:1.0] forKey:@"Intensity"]; 

     AudioServicesPlaySystemSoundWithVibration(kSystemSoundID_Vibrate, nil, pulsePatternsDict); 

但是,只有把這個(AudioServicesPlaySystemSoundWithVibration)將振動從來沒有停止。所以我必須找到一些功能來阻止它。

答案是AudioServicesStopSystemSound。它也是AudioToolbox框架中的一個私有函數。

函數的聲明是像

void AudioServicesStopSystemSound(SystemSoundID inSystemSoundID) 

注:AudioServicesPlaySystemSoundWithVibration僅適用於iOS6的

可用

目前iOS中9和iOS 9.1沒有公開可用的API。

並在iOS 10有一個新的API稱爲UIFeedbackGenerator。有關更多詳細信息,請參閱此post。它現在只適用於iPhone 7和iPhone 7 Plus。

聲明:有一種方法可以直接與Taptic Engine(iOS 9)進行交互,但有一種私有方法。你不應該在App Store應用程序中使用它。

+0

此方法只能在應用程序處於前景時「播放」自定義模式。我的問題是與用戶通知關聯的模式,但當應用處於前臺時不會發揮振動。 – user6539552

+0

是的,這只是工作,當在後臺和前臺的應用程序。 函數應用程序:didReceiveRemoteNotification:fetchCompletionHandler:它可能或可能不會調用該方法。如果用戶已禁用後臺更新,則該方法永遠不會被調用, 當應用處於終止狀態時,無法創建自定義振動模式。 –

+0

這個答案與我的問題無關。 – user6539552