我目前正在开发具有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]停止计时器(当用户接听电话时)

07-27 17:17