Недавно я посмотрел, как SpringBoard играет на своих вибрациях, когда вы переключаете тихий переключатель или подключаетесь к источнику питания. Он использует только AudioServicesPlaySystemSound
с тем же аргументом (0x452 для зарядки, 0x453 для бесшумного переключателя). Только место, где я видел AudioServicesPlaySystemSoundWithVibration
звонок, когда добавлен бюллетень.
Это относится к iOS 5-7. Только разница в IOS 5 Бюллетени использовать AudioServicesPlaySoundWithBehavior
потому AudioServicesPlaySystemSoundWithVibration
доступна только начиная с прошивкой 6.
UPDATE
Preferences приложение использует AudioServicesPlaySystemSound
с 0x547 или 0x546 в качестве аргумента. Причина, по которой вы не видите, что с MobileSubstrate заключается в том, что приложение Preferences загружает фреймворк AudioToolbox
во время выполнения с использованием dlopen
, а затем получает указатель на AudioServicesPlaySystemSound
с dlsym
. Чтобы перехватить функцию в этом случае, вам нужно подождать, пока приложение «Настройки» не получит указатель и только затем перехватит его.
UPDATE 2
SpringBoard также использует CoreMedia.framework API, чтобы играть вибрации. Все аргументы здесь - это всего лишь предположение о разборке. У меня не так много опыта с аргументами структуры C и инструкциями с плавающей запятой.
FigVibratorPlayVibrationWithDictionary(CFDictionaryRef pattern, BOOL, float)
. Последние два аргумента мне неизвестны - они установлены как NO и 1.0f.
FigVibratorPlayVibration(float, CMTime, CMTime, CTime)
.
функции выше, скорее всего, будет использоваться прошивкой, но есть некоторые другие функции стоит зацепляющие:
FigVibratorStartOneShot(float, CMTime)
FigVibratorStartRepeating
. Первый аргумент, вероятно, является float, но не знает других - это несколько аргументов CMTime.
Право. Но тогда есть все эти другие вибрации в iOS, например, когда вы переключаете вибрацию внутри настроек, получаете уведомление, получаете вызов и т. Д., И никто из них не использует AudioServicesPlaySystemSound/AudioServicesPlaySystemSoundWithVibration. Я понятия не имел о AudioServicesPlaySoundWithBehavior. Возможно, это то, что они используют! У вас есть определение функции/args? И как вы его нашли? – tydbwjiiofj23iof2jiojf2ifj3i2
AudioServicesPlaySoundWithBehavior предназначен только для iOS5. Он отсутствует с iOS6 - его заменяет AudioServicesPlaySystemSoundWithVibration. Я уже рассказывал об уведомлениях/бюллетенях - они используют AudioServicesPlaySystemSoundWithVibration. По крайней мере, это то, что я видел. – creker
Я обновил свой ответ с информацией о приложении «Настройки». Как я нашел все это - разборку. – creker