2014-11-14 5 views
5

Ich habe eine App, wo ich reagieren möchte, wenn eine SMS empfangen wird; bis iOS 7 gearbeitet, dies zu CTTelephonyCenter wie dies durch die Registrierung:CTTelephonyCenterAddObserver benachrichtigt nicht empfangenden SMS

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

und in dem Rückruf für kCTMessageReceivedNotification überprüfen. Dies funktioniert nicht mehr in iOS 8, da ich wesentlich weniger Benachrichtigungstypen als auf iOS 7 empfange und keine mit dem Empfang von Nachrichten verbunden sind. Ich gehe davon aus, dass es sich um eine neue Berechtigung handelt, konnte aber noch nicht herausfinden, und wenn ja, welche Berechtigung benötigt. Weiß jemand, wie man das löst?

+0

Wie wird dieser Beobachter hinzugefügt? Müssen wir einen Rahmen importieren? Wenn ich obigen Code hinzufüge, erhalte ich den Fehler "Implizite Deklaration der Funktion CTTelefonyCenterGetDefault ist in c99 ungültig, Konvertierung von int in id nicht erlaubt in arc, CTTelephonyCenterAddObserver nicht gültig in c99 – Durgaprasad

Antwort

6

Sie müssen Benachrichtigung Name auf dem vierten Argument angeben:

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

Ab iOS 8 Sie nicht NULL als Benachrichtigung Namen übergeben können alle CoreTelephony Meldungen zu empfangen. Jetzt müssen Sie genau angeben, welche Benachrichtigungen Sie beobachten möchten.

8.3 UPDATE

Ab iOS 8.3 mindestens kCTMessageReceivedNotification erfordert Berechtigung (wahrscheinlich der Fall für alle Meldungen, wissen aber nicht sicher) aufgenommen werden

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

Danke. Du hast mich vor viel Graben gerettet :) – Orph

+0

Seit iOS 8.3 scheint es, dass es nicht mehr verfügbar ist. Ich versuche mit anderen Benachrichtigungen, die noch auf iOS 8.2 und älter arbeiten. Ich weiß nicht warum, aber es sieht aus wie Apple das Verhalten von CTTelefonyCenterAddObserver ändern. Ich habe versucht zerlegen Sie 8.2 & 8.3 CoreTelephony.framework, und alle Signaturen scheinen gleich zu sein. Haben Sie eine Abhilfe? Vielen Dank. – Boobby69

+0

@kreker welchen Wert sollte ich verwenden, um Telefonanrufe zu hören, und wo ist diese Informationen aufgelistet oder gefunden? Danke ! – mylord

2

Seit iOS 8.3, Der CTTelefonyCenterAddObserver funktioniert nicht mehr.

+0

@creker hast du es mit kCTMessageReceivedNotification auf iOS 8.3 getestet? –

+0

@kreker Was ist der Wert, der benötigt wird, um nach Telefonanrufen zuhören zu können (um Telefonanrufe zu ermöglichen)? – mylord

+0

@ Deiz_84, habe ich die Antwort – creker

Verwandte Themen