iPhone中的短信是以SQLite存储的(自己iPhone的系统是IOS 14.7.1)),用SQLite打开sms.db后就能看到表结构。我的需求如下:想从db中取出短信、发件号码、收到短信的时间。
自己摸索了下。部分小结如下
attachment: 短信附件信息表
chat : 含有发件人号码的
chat_message_join: chat 表和message表关联关系的表。
message: 主要存放短信的
通过分析建表语句,数据内容,得到如下结果。
message表中没有短信发件人的信息,这个信息是存在chat表里面的,而chat表和message表示通过chat_message_join表来关联的。
chat_message_join.message_id = message.rowid
chat_message_join.chat_id = chat.rowid
综上得到我想要的SQL语句
select text as 短信内容,jsrq as 接收时间,d.chat_identifier as 发件人 from (
select a.[text],datetime(substr(a.[date],1,9)+978307200,'unixepoch','localtime') as jsrq,rowid,chat_id from message a
left join chat_message_join b
on a.rowid = b.message_id)c
left join chat d
on c.chat_id = d.rowid
order by jsrq desc