How do you make the iPhone vibrate for arbitrary d

2019-01-16 20:50发布

In the iPhone 2.x firmware, can you make the iPhone vibrate for durations other than the system-defined:

AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);

In jailbroken phones, you used to be able to use the MeCCA.framework to do this:

http://pastie.org/94481

MeCCA_Vibrator *v = new MeCCA_Vibrator;
v->activate(1);
sleep(5);
v->deactivate();

But MeCCA.framework doesn't exist on my 2.x iPhone.

4条回答
放荡不羁爱自由
2楼-- · 2019-01-16 21:10

Yes, this is something that has caused AppStore rejections in the past, and probably will again...which means it is still possible to do it.

Answering my own question, here's how to do it:

Add framework CoreTelephony in Build Phases.

declare:

extern void * _CTServerConnectionCreate(CFAllocatorRef, int (*)(void *, CFStringRef, CFDictionaryRef, void *), int *);
extern int _CTServerConnectionSetVibratorState(int *, void *, int, int, float, float, float);

static void* connection = nil;
static int x = 0;

initialize:

connection = _CTServerConnectionCreate(kCFAllocatorDefault, &vibratecallback, &x);

start vibration:

_CTServerConnectionSetVibratorState(&x, connection, 3, intensity, 0, 0, 0);

stop vibration:

_CTServerConnectionSetVibratorState(&x, connection, 0, 0, 0, 0, 0);

This code is from HapticKeyboard, a downloadable application that buzzes the phone as you type. It is available for jailbroken phones on Cydia. See also my jailbreaking experience)

Any other good references?

查看更多
ら.Afraid
3楼-- · 2019-01-16 21:12

There's no way to do this using the SDK, sorry.

查看更多
孤傲高冷的网名
4楼-- · 2019-01-16 21:20

Not only is this impossible to do using the SDK, but it's also the first item in the Unofficial App Store Rejection Criteria.

查看更多
祖国的老花朵
5楼-- · 2019-01-16 21:27

iOS 5 has implemented Custom Vibrations mode. So in some cases variable vibration is acceptable. The only thing is unknown what library deals with that (pretty sure not CoreTelephony) and if it is open for developers.

查看更多
登录 后发表回答