使iPhone在本地通知上振动

时间:2016-02-08 18:09:20

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

我目前正在开发具有VoIP功能的应用程序。当有新的通话时,我会发出一个带有自定义声音的通知。 如果手机处于振动状态,则默认情况下会振动一次。但是我想让手机在整个自定义声音(30秒)内振动。 有没有"内置"办法?或者,当我收到VoIP推送时,我是否必须主动触发AppDelegate的振动?如果我从那里开始,我可以面对任何AppStore认证问题吗? (Facebook Messenger和WeChat提供了这种行为,所以必须有办法:))

提前致谢 圣拉斐尔

1 个答案:

答案 0 :(得分:4)

有两个看似相似的函数采用参数kSystemSoundID_Vibrate:

PS C:\Users\josh.howard\Desktop\test> mv *.mp 'C:\Program Files\LANDesk\ManagementSuite\ldscan'

PS C:\Users\josh.howard\Desktop\test> cd $$
cd : Cannot find drive. A drive with the name ''C' does not exist.
At line:1 char:1
+ cd $$
+ ~~~~~
    + CategoryInfo          : ObjectNotFound: ('C:String) [Set-Location], DriveNotFoundException
    + FullyQualifiedErrorId : DriveNotFound,Microsoft.PowerShell.Commands.SetLocationCommand
  

这两项功能都会震动iPhone。但是,当您在不支持振动的设备上使用第一个功能时,它会发出哔声。另一方面,第二个功能在不支持的设备上不执行任何操作。因此,如果您要持续振动设备,作为警报,常识说,请使用功能2。   首先,在Build Phases中将AudioToolbox框架AudioToolbox.framework添加到目标。

然后,导入此头文件:

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

另外,如果你想每5秒(或其他)振动一次,你可以这样做。

ViewController.h

#import <AudioToolbox/AudioServices.h>

ViewController.m

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

您可以通过拨打timer = [NSTimer scheduledTimerWithTimeInterval:YOURINTERVAL target:self selector:@selector(YOURSELECTOR) userInfo:nil repeats:YES]; -(void)YOURSELECTOR{ AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); }

来停止计时器(当用户接听电话时)