为了传递信息,我使用了App Group。 有待验证数据传输的两个方向:
将数据从项目主体传输到MessageFilterExtension。
将数据从MessageFilterExtension传输到项目的主要部分。
第一种方法没有问题。 但是第二个没有任何结果。 这是我从MessageFilterExtension编写信息的代码部分。
extension UserDefaults {
var sender: String? {
get { return self.string(forKey: #function) }
set { self.set(newValue, forKey: #function) }
}
var messageBody: String? {
get { return string(forKey: #function) }
set { set(newValue, forKey: #function) }
}
var blockedNumber: String? {
get { return string(forKey: #function) }
set { set(newValue, forKey: #function) }
}
}
extension MessageFilterExtension: ILMessageFilterQueryHandling {
// ...
private func offlineAction(for queryRequest: ILMessageFilterQueryRequest)
-> ILMessageFilterAction {
if let userDefaults = UserDefaults(suiteName: "group.GUI.TestExtSms2") {
userDefaults.sender = queryRequest.sender ?? "No sender"
userDefaults.messageBody = queryRequest.messageBody ?? "No body"
if let sender = queryRequest.sender,
let blockedNumber = userDefaults.blockedNumber {
return (sender == blockedNumber) ? .filter : .none
}
}
return .none
}
当我输入所需的电话号码(blockedNumber)时,锁起作用了。 但是我在项目的主要部分无法获取SMS上的数据(发件人和messageBody)。
答案 0 :(得分:0)
你不能。
https://developer.apple.com/documentation/sms_and_call_reporting/sms_and_mms_message_filtering
出于隐私原因,系统会处理与您的所有通信 关联服务器;您的邮件过滤器应用扩展程序无法访问 直接联网。
出于隐私原因,您的应用扩展程序无法将数据写入 与包含的应用共享的容器。