gpt4 book ai didi

ios - 在没有越狱的情况下获取带有文本正文的 SMS 广播,但在 IOS 中使用私有(private)框架

转载 作者:行者123 更新时间:2023-12-01 18:13:04 26 4
gpt4 key购买 nike

我想知道是否可以在收到文本时进行 SMS 广播。我还想检索整个正文和发件人信息。我想知道这是否可以通过私有(private)框架实现,而无需越狱。我不会出售该应用程序,它只是用于我的个人手机,但我正在努力避免越狱猫捉老鼠。

最佳答案

这是我的做法。无需越狱,只有私有(private) API。

私有(private) API 声明

核心电话框架:

extern CFStringRef const kCTMessageReceivedNotification;

CFNotificationCenterRef CTTelephonyCenterGetDefault();
void CTTelephonyCenterAddObserver(CFNotificationCenterRef ct, void* observer, CFNotificationCallback callBack, CFStringRef name, const void *object, CFNotificationSuspensionBehavior sb);
void CTTelephonyCenterRemoveObserver(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object);

私有(private) IMDPersistence 框架:

int IMDMessageRecordGetMessagesSequenceNumber();

私有(private) ChatKit 框架:CKDBMessage 可以找到 here

订阅传入的短信通知

CTTelephonyCenterAddObserver(CTTelephonyCenterGetDefault(),
NULL,
TelephonyObserver,
kCTMessageReceivedNotification,
NULL,
CFNotificationSuspensionBehaviorHold);

从 iOS 8 开始,您不能为通知名称参数传递 NULL 以接收所有电话通知。你必须告诉它你想观察哪个通知,就像 Darwin 通知中心一样。

回调

void TelephonyObserver(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo)
{
if ([(__bridge NSString*)name isEqualToString:(__bridge NSString*)kCTMessageReceivedNotification])
{
SmsReceived();
}
}

阅读消息内容

void SmsReceived()
{
int lastID = IMDMessageRecordGetMessagesSequenceNumber();

CKDBMessage* msg = [[CKDBMessage alloc] initWithRecordID:lastID];
}

我们在这里做什么。在我们收到收到 SMS 的通知后,我们将获得 SMS 数据库中的最后一行 ID (lastID)。然后使用该 ID 创建消息对象。 msg 将包含所有消息内容。

使用 CKDBMessageinitWithRecordID: 您可以访问任何 SMS 数据库记录。如果未找到行 ID,initWithRecordID: 将返回 nil。

适用于 iOS 7.x - 9.1。仅针对 SMS 消息进行了测试,但应该也适用于 MMS。评论中的用户在 iMessages 上测试成功。

iOS 8.3 更新

从 iOS 8.3 开始,如果不越狱,您将无法收到 kCTMessageReceivedNotification 通知。你需要权利

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

iOS 11 更新

从 iOS 11 开始,您不能使用 CKDBMessage。 Apple 向沙箱添加了另一条规则,可能需要使用特定授权对应用进行签名才能使用该 API。

关于ios - 在没有越狱的情况下获取带有文本正文的 SMS 广播,但在 IOS 中使用私有(private)框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26642770/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com