/iMessageAnalyzer

Analyzes a user's iMessage

Primary LanguageObjective-C

Written by Ryan D'souza

iMessage Analyzer - Mac App

Analyzes a user's iMessages while providing cool functionality

Analyzes a user's iMessage database (chat.db*) to understand a user and their friends' messaging habits by graphing (and calculating statistics) on those characteristics.

Adds some unique functionality from Messages.app that provides a better experience, including a refined search for messages.

*chat.db, where a user's messages are stored, can be found in 2 ways:

  1. Where Messages.app (Apple's official Messages.app - iMessage for Mac) stores its data
  2. Where the iPhone's chat.db database is stored after a backup to the computer

Demo Video

Download .app

Newest features
  • Double messages: See who sends the most followup messages; defined as successive messages sent by the same person within 3 minutes to 8 hours of the last message send time
  • Conversation starters: See who starts the most conversations; defined as who messages first after 8 hours of the last message in the conversation

Current Features:

  • Looks like iMessage
    • Contacts tableview on left side with contact name + profile picture
    • iMessages you sent are in blue on the right side of messages panel
      • Normal text messages you send are in green
    • iMessages you received are in gray on the left side of messages panel
    • Shows each message's date/time and read receipts
Unique from iMessage Features
  • Loads all of a user's messages (as opposed to scrolling up forever to see the first few messages)

    • Still memory efficient and quick for large conversations
      • Tested on conversations with > 26,000 messages
      • Tested on total messages > 60,000
      • Barely uses 110MB of RAM
      • Minimal CPU usage
  • Searching for text shows conversations

    • With text that matches the conversation
    • With contact names/numbers/emails that match the text
    • Still (somehow) quicker than iMessage's search for conversations with text
    • Searched text is highlighted in yellow
    • Pressing enter moves to the next occurrence of that text
  • View messages sent and received on a certain date for a conversation

    • Calendar view pops up and a date can be chosen to view all messages with that conversant on
    • Pressing "Reset to All" shows all messages with person
  • Double clicking on contact in Contacts Tableview on the left shows

    • Total number of messages you sent and received in that conversation
    • Option to perform More Analysis
  • More Analysis

    • Shows the following for All Time or on a specific date
      • Words organized by frequency/occurrence for each person
        • Uses a Heap Data Structure I wrote
      • Total number of messages sent and received
      • Total number of words sent and received
      • Average word per message sent and received
      • Date selected from calendar view on bottom left
      • The actual messages sent and received
      • The number of double messages for each conversant: defined as two successive messages sent by the same person between 3 minutes and 8 hours of the last message sent
      • The number of times each conversant started a conversation: defined by who sends the first message at least 8 hours after the last message was sent/received
  • Graphs and charts

    • Line graph of messages with that person since your first message
      • Allows for zooming in on specific date ranges
      • Data can be changed to show
        • Messages with that person compared to all other messages sent during that time period
        • Your sent vs received messages with that person over time
        • Your sent vs received words with that person over time
    • Pie Chart
      • Sent messages vs received messages with person
      • Sent words vs received words with that person
      • Total messages with person vs all other messages in inbox
    • Bar Chart
      • Sent vs received messages per hour of day --> When y'all talk the most
      • Sent vs received words per hour of day --> When y'all talk the most
      • Percentage of total messages with person per hour of day vs percentage of all other messages with other people per hour of day --> When y'all talk the most in comparison to when you mainly talk to everyone else

Features in implementation:

  • Statistics on actual messaging habits
    • Average reply time over the course of a day
  • Autoreply based on replies to certain messages --> Machine Learning

Screenshots

  • Scroll to the bottom to see beginning flow

Screenshot 31 A graph of all messages with a person over the course of a year. This person seems like a good friend


Screenshot 32 Zooming in on that graph


Screenshot 33 Clicking on a point shows the y-value above it.


Screenshot 34 Graphing message frequency with another one. This seems like a broken-off friendship


Screenshot 35 Overlaying the messages with a friend (white) with all other messages on that day (green)


Screenshot 36 Zooming in on that overlay


Screenshot 19 Sent vs Received messages


Screenshot 20 Sent vs Received words


Screenshot 21 Pie chart of sent vs received messages


Screenshot 22 Pie chart of sent vs received words


Screenshot 23 Pie chart of total messages to that person vs all other messages


Screenshot 24 When y'all send the most amount of messages to each other throughout the day


Screenshot 25 When y'all type the most to each other throughout the day


Screenshot 26 That conversation vs all other conversations throughout the day


Screenshot 27 A percentage breakdown of that conversation vs all other conversations throughout the day


Screenshot 37 How that can vary from person to person


Screenshot 29 More analysis screen

  • Shows all messages sent and received

  • Shows the total word count, sent and received

  • Shows the average word per message

  • Shows all words for each participant in order of freuency

  • All messages are displayed on tableview at bottom of the screen


Screenshot 30 More analysis screen

Clicking on a date in the calendar on the bottom left - Shows above statistics but on that date + Includes recalculating word frequencies, words sent and received on date, and average word/message on date ("Avg. Word/Message (D)") - Shows messages sent on that day - Pressing "Clear" resets everything to the initial screen


Screenshot 0 View full conversations - all at once - with a person, starting from the first interaction Also shows delivered/read receipts for each person


Screenshot 1 View messages sent on a certain date (no messages)


Screenshot 2 View messages sent on a certain date (messages)


Screenshot 3 Searching for text brings up contacts + contacts with messages that match the text. Pressing Enter brings up the next text occurence. Message occurrences are highlighted in yellow and pressing enter scrolls to the next occurrence


Screenshot 4 Attachments sent are shown in a message. Clicking on them opens a popup with that attachment


Screenshot 5 For multiple attachments in a message, the popup allows scrolling through each attachment as well as the ability to open each attachment in the right application


Screenshot 6 Movie attachments and PDFs are also shown and movies begin playing automatically


Screenshot 28 Double clicking a contact shows quick statistics and gives the option to view more icon (circle icon)