2016-02-08 32 views
1

我目前正在開發一個具有VoIP功能的應用程序。當一個新的電話進來時,我發出一個自定義聲音的通知。 如果手機在振動,默認情況下會振動一次。不過,我希望在整個自定義聲音(30秒)期間使手機振動。 有沒有「內置」的方式?或者,當我收到我的VoIP Push時,我是否必須主動觸發來自AppDelegate的振動?我可以面對任何AppStore認證問題嗎? (Facebook的Messenger和微信提供這種行爲,例如,所以必須有一個方法:))提前使iPhone在本地通知上振動

感謝 拉斐爾

+2

30秒振動停止定時器(當用戶接聽電話)?你想被用戶討厭嗎? – vikingosegundo

+0

@vikingosegundo我認爲當用戶接聽電話時,振動將會結束,就像每個通話應用程序 –

+0

一樣,所以您只會被能夠接聽電話的用戶所厭惡。很公平。 – vikingosegundo

回答

4

有跡象表明,需要一個參數兩個看似相似的功能kSystemSoundID_Vibrate:

1) AudioServicesPlayAlertSound(kSystemSoundID_Vibrate); 
2) AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); 

這兩個功能都會震動iPhone。但是,當您在不支持振動的設備上使用第一個功能時,會發出嘟嘟聲。另一方面,第二個功能對不支持的設備不起作用。因此,如果您要持續振動設備,請按照常識說的使用功能2. 首先,在Build Phases中將AudioToolbox框架AudioToolbox.framework添加到您的目標。

然後,導入這個頭文件:

#import <AudioToolbox/AudioServices.h> 

另外,如果你想振動一次,每5秒(或其他),你可以做到這一點。

ViewController.h

NSTimer *timer //declare this globally (in header file) 

ViewController.m

timer = [NSTimer scheduledTimerWithTimeInterval:YOURINTERVAL target:self selector:@selector(YOURSELECTOR) userInfo:nil repeats:YES]; 

-(void)YOURSELECTOR{ 
    AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); 
} 

你可以通過調用[timer invalidate]

+0

這個計時器會在後臺工作嗎? –