Как вы заставляете iPhone вибрировать в течение произвольного времени?
В прошивке iPhone 2.x вы можете заставить iPhone вибрировать на периоды, отличные от системных:
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
В взломанных телефонах у вас была возможность использовать MeCCA.framework для этого:
MeCCA_Vibrator *v = new MeCCA_Vibrator;
v->activate(1);
sleep(5);
v->deactivate();
Но MeCCA.framework не существует на моем iPhone 2.x.
4 ответа
Да, это то, что вызывало отклонения AppStore в прошлом, и, вероятно, будет снова... что означает, что это все еще возможно сделать.
Отвечая на мой собственный вопрос, вот как это сделать:
Добавьте фреймворк CoreTelephony в фазы сборки.
заявляет:
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;
инициализации:
connection = _CTServerConnectionCreate(kCFAllocatorDefault, &vibratecallback, &x);
начать вибрацию:
_CTServerConnectionSetVibratorState(&x, connection, 3, intensity, 0, 0, 0);
остановить вибрацию:
_CTServerConnectionSetVibratorState(&x, connection, 0, 0, 0, 0, 0);
Этот код взят из HapticKeyboard, загружаемого приложения, которое звонит по телефону при вводе. Он доступен для взломанных телефонов на Cydia. Смотрите также мой опыт джейлбрейка)
Любые другие хорошие ссылки?
Мало того, что это невозможно сделать с помощью SDK, но это также первый элемент в неофициальных критериях отклонения в App Store.
В iOS 5 реализован режим пользовательских вибраций. Так что в некоторых случаях переменная вибрация приемлема. Неизвестно только, что библиотека имеет с этим дело (наверняка, не CoreTelephony) и открыта ли она для разработчиков.