A method for maintaining a client-state machine via a notification queue, comprising: receiving, by an application executing on a computing device from a server, an identification of a content item, a first notification, and a second notification, wherein the first notification and second notification correspond to the content item; storing, by the application, the first notification and the second notification in a notification queue in a memory of the computing device; determining, by the application responsive to display of the content item by a second application executing on the computing device, that the computing device is in a first state; determining, by the application responsive to a portion of the content item being not visible on a display screen of the computing device, that the computing device is in a second state; displaying, by the application responsive to determining that the computing device is in the second state, the first notification on the display screen of the computing device, the first notification removed from the notification queue; determining, by the application responsive to expiration of a timer, activated substantially concurrently with the display of the content item, that the computing device is in a third state; and responsive to the determination that the computing device is in the third state: dismissing, by the application, the first notification; and displaying, by the application, the second notification on the display screen of the computing device, the second notification removed from the notification queue. receiving, by an application executing on a computing device from a server, an identification of a content item, a first notification, and a second notification, wherein the first notification and second notification correspond to the content item; storing, by the application, the first notification and the second notification in a notification queue in a memory of the computing device; determining, by the application responsive to display of the content item by a second application executing on the computing device, that the computing device is in a first state; determining, by the application responsive to a portion of the content item being not visible on a display screen of the computing device, that the computing device is in a second state; displaying, by the application responsive to determining that the computing device is in the second state, the first notification on the display screen of the computing device, the first notification removed from the notification queue; determining, by the application responsive to expiration of a timer, activated substantially concurrently with the display of the content item, that the computing device is in a third state; and responsive to the determination that the computing device is in the third state: dismissing, by the application, the first notification; and displaying, by the application, the second notification on the display screen of the computing device, the second notification removed from the notification queue. storing, by the application, the first notification and the second notification in a notification queue in a memory of the computing device; determining, by the application responsive to display of the content item by a second application executing on the computing device, that the computing device is in a first state; determining, by the application responsive to a portion of the content item being not visible on a display screen of the computing device, that the computing device is in a second state; displaying, by the application responsive to determining that the computing device is in the second state, the first notification on the display screen of the computing device, the first notification removed from the notification queue; determining, by the application responsive to expiration of a timer, activated substantially concurrently with the display of the content item, that the computing device is in a third state; and responsive to the determination that the computing device is in the third state: dismissing, by the application, the first notification; and displaying, by the application, the second notification on the display screen of the computing device, the second notification removed from the notification queue. dismissing, by the application, the first notification; and displaying, by the application, the second notification on the display screen of the computing device, the second notification removed from the notification queue.