我目前正在开发具有VoIP功能的应用程序。接到新电话时,我会发出自定义声音的通知。
如果手机处于震动状态,则默认情况下会震动一次。但是,我想让手机在整个自定义声音(30秒)内振动。
有什么“内置”方式吗?还是在收到VoIP Push时必须主动从AppDelegate触发振动?如果从那里开始,我是否会遇到任何AppStore认证问题? (例如,Facebook Messenger和微信提供了这种行为,因此必须有一种方法:))
提前致谢
拉斐尔
最佳答案
有两个看似相似的函数带有参数kSystemSoundID_Vibrate:
1) AudioServicesPlayAlertSound(kSystemSoundID_Vibrate);
2) AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
这两个功能都使iPhone震动。但是,当您在不支持振动的设备上使用第一个功能时,它会发出蜂鸣声。另一方面,第二个功能在不受支持的设备上不起作用。因此,如果要连续振动设备,常识请注意,请使用功能2。
首先,在构建阶段中将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]
停止计时器(当用户接听电话时)