iPhone只在调试应用程序时振动

时间:2013-01-01 21:49:14

标签: iphone objective-c ios xcode debugging

我正在编写一个需要反复振动的iPhone应用程序,直到用户停止它为止,我正在使用这样一个线程调用的循环:

-(void)vibrateLoop {
    while (1) {
        sleep(0.5);
        if (!vibrate) {
            [NSThread exit];
            return;
        }
        AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
    }
}

然而,当我从我的iPhone而不是Xcode运行应用程序时,振动拒绝发生。但是当在调试模式下在Xcode中运行它时,手机会像它应该的那样振动。发生了什么事?

2 个答案:

答案 0 :(得分:0)

尝试将Play调用放入方法中,并使用设置为repeat的计时器调用该方法。 EG

  -(void)vibrateLoop {

    if (!vibrate) {

        return;
    }
    [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(vibrateLoop) userInfo:nil repeats:NO];
    AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);

}

//somewhere else in code
[NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(vibrateLoop) userInfo:nil repeats:NO];

答案 1 :(得分:0)

如何使用图形服务框架库。它有一个方法

  

void GSEventVibrateForDuration(float secs);

您可以将secs设置为1并继续在循环中调用此方法,并在用户希望它停止时使用以下方法GSEventStopvibrator()

重要提示:图形服务框架库是一个私有库,因此如果您决定使用它,您将无法将应用程序提交到应用程序商店。