我有一个应用程序,当收到短信时,我想做出反应;直到iOS 7为止,这是通过向CTTelephonyCenter注册这样的程序来实现的:
id center = CTTelephonyCenterGetDefault();
CTTelephonyCenterAddObserver(center,
NULL,
callback,
NULL,
NULL,
CFNotificationSuspensionBehaviorHold);以及在kCTMessageReceivedNotification的回调检查中。这在iOS 8中不再适用,因为我收到的通知类型比iOS 7少得多,而且没有一个与消息接收相关。我认为这是一个新的权利,但还无法计算如果是,以及需要什么权利。有人知道怎么解决这个问题吗?
发布于 2014-11-22 00:47:46
您需要在第四个参数中指定通知名:
id center = CTTelephonyCenterGetDefault();
CTTelephonyCenterAddObserver(center,
NULL,
callback,
CFSTR("kCTMessageReceivedNotification"),
NULL,
CFNotificationSuspensionBehaviorHold);从iOS 8开始,不能将NULL作为通知名来接收所有CoreTelephony通知。现在,您必须确切地告诉它要观察哪些通知。
8.3更新
在iOS 8.3中,至少kCTMessageReceivedNotification要求接收权限(可能是所有通知的情况,但不确定)
<key>com.apple.CommCenter.fine-grained</key>
<array>
<string>spi</string>
</array>发布于 2015-04-20 16:29:46
从iOS 8.3开始,CTTelephonyCenterAddObserver就不再工作了。
https://stackoverflow.com/questions/26932913
复制相似问题