2012-05-07 2 views
1

Я хочу подключить методы класса MPIncomingPhoneCallController в iOS 5, чтобы что-то сделать, когда приходит вызов. Я используюКак подключить методы MPIncomingPhoneCallController?

Class _$MPIncomingPhoneCallController = objc_getClass("MPIncomingPhoneCallController"); 

MSHookMessage(_$MPIncomingPhoneCallController, 
       @selector(updateLCDWithName:label:breakPoint:), 
      (IMP) &Hook_LCD, 
      "pre_"); 

зацепить updateLCDWithName:label:breakPoint:, но это не удалось.

Как я могу это сделать?

+0

Вы не забираете Классы. Вы применяете методы или функции. Я предлагаю вам немного Google и искать учебники о том, как использовать MobileSubstrate, но сначала узнайте больше об основах программирования. PS: здесь вы должны использовать objc_getMetaClass() – YllierDev

+0

@YllierDev Да, вы правы, я перехватываю функции. Но сначала я должен получить класс. objc_getMetaClass() используется для привязки метода класса, в то время как objc_getClass используется для подбора методов. – dustdn

+1

objc_getClass используется, например, для методов. Извините за путаницу, я не знаю, как я думал, что вы хотите перехватить метод класса. Во всяком случае, я предполагаю, что вы пытаетесь подключить этот инструмент, когда ваша настройка вводится в SpringBoard. Вы должны знать, что этот класс находится в плагине для SpringBoard, который загружен довольно поздно. Таким образом, вы можете подключить его только после загрузки плагина. – YllierDev

ответ

1

Класс, который вы пытаетесь подключить, находится в IncomingCall.serviceBundle, который загружается в SpringBoard только при входящем вызове. Чтобы определить, когда он загружен, вам нужно подключить SBPluginManager loadPluginBundle:. Дождитесь загрузки загруженного пакета com.apple.mobilephone.incomingcall. Только тогда вы можете зацепить то, что хотите.

Смежные вопросы