2014-11-14 1 views
5

У меня есть приложение, в котором я хочу реагировать при получении СМС; вплоть до прошивки 7 это работало, зарегистрировав в CTTelephonyCenter так:CTTelephonyCenterAddObserver не уведомляет о получении SMS

 id center = CTTelephonyCenterGetDefault(); 
     CTTelephonyCenterAddObserver(center, 
            NULL, 
            callback, 
            NULL, 
            NULL, 
            CFNotificationSuspensionBehaviorHold); 

и обратный вызов проверки для kCTMessageReceivedNotification. Это больше не работает в iOS 8, так как я получаю гораздо меньше типов уведомлений, чем на iOS 7, и ни одна из них не связана с получением сообщений. Я предполагаю, что речь идет о новом праве, но пока не может понять, если это так, и каково требуемое право. Кто-нибудь знает, как это решить?

+0

Как добавить это наблюдателя? Нужно ли импортировать какие-либо фреймворки? Когда я добавляю код выше, я получаю сообщение об ошибке «Неявное объявление функции CTTelephonyCenterGetDefault недействительно в c99, преобразование из int в id не разрешено по дуге, CTTelephonyCenterAddObserver недействителен в c99 – Durgaprasad

ответ

6

Вы должны указать имя уведомления в четвертый аргумент:

id center = CTTelephonyCenterGetDefault(); 
CTTelephonyCenterAddObserver(center, 
          NULL, 
          callback, 
          CFSTR("kCTMessageReceivedNotification"), 
          NULL, 
          CFNotificationSuspensionBehaviorHold); 

С прошивкой 8 вы не можете передать NULL как имя уведомления, чтобы получать все CoreTelephony уведомления. Теперь вы должны точно указать, какие уведомления вы хотите наблюдать.

8,3 ОБНОВЛЕНИЕ

С прошивкой 8.3, по крайней мере kCTMessageReceivedNotification требует права быть получен (вероятно, случай для всех уведомлений, но не знает точно)

<key>com.apple.CommCenter.fine-grained</key> 
<array> 
    <string>spi</string> 
</array> 
+0

Спасибо. Вы спасли меня от много рытья :) – Orph

+0

Начиная с iOS 8.3, кажется, что он больше не доступен. Я пытаюсь с другими уведомлениями, которые все еще работают над iOS 8.2 и ранее. Я не знаю почему, но похоже, что Apple меняет поведение CTTelephonyCenterAddObserver. разобрать 8.2 и 8.3 CoreTelephony.framework, и все подписи кажутся одинаковыми. У вас есть обходное решение? Спасибо. – Boobby69

+0

@creker какое значение следует использовать для прослушивания телефонных звонков, и где эта информация перечислена или найдена? ! – mylord

2

Так как прошивка 8.3, CTTelephonyCenterAddObserver больше не работают.

+0

@creker вы тестировали его с помощью kCTMessageReceivedNotification на iOS 8.3? –

+0

@creker Что нужно для прослушивания телефонных звонков (чтобы сделать запись по телефону)? – mylord

+0

@ Deiz_84, я обновил ответ – creker

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

  • Нет связанных вопросов^_^