{"_id":"58b8ca71cdcea50f0031285b","user":"5825dece55b1060f00ec4134","parentDoc":null,"project":"55e67aaa9cc7c62b00c4a1ea","version":{"_id":"55e67aab9cc7c62b00c4a1ed","project":"55e67aaa9cc7c62b00c4a1ea","__v":10,"createdAt":"2015-09-02T04:27:23.612Z","releaseDate":"2015-09-02T04:27:23.612Z","categories":["55e67aac9cc7c62b00c4a1ee","55e67b5556007d23005fee7d","55e67b5dde6fef23009480ca","55e680efde6fef23009480db","55e6829485a9741900314e99","561c61b4ad272c0d00a892df","586c014c0abf1d0f000d04d4","58991d2ad207df0f0002186b","589b8e1fdbb7cd190026732c","58b8ca5e3265d70f001788d4"],"is_deprecated":false,"is_hidden":false,"is_beta":false,"is_stable":true,"codename":"","version_clean":"1.0.0","version":"1.0"},"__v":0,"category":{"_id":"58b8ca5e3265d70f001788d4","version":"55e67aab9cc7c62b00c4a1ed","__v":0,"project":"55e67aaa9cc7c62b00c4a1ea","sync":{"url":"","isSync":false},"reference":false,"createdAt":"2017-03-03T01:43:58.388Z","from_sync":false,"order":2,"slug":"message-stream","title":"Message Stream"},"updates":[],"next":{"pages":[],"description":""},"createdAt":"2017-03-03T01:44:17.003Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":0,"body":"Message Stream is a home for your in-app messages. By default, when a person receives an in-app message, it will disappear as soon as it has been read. A Message Stream will act as a personalized inbox for these messages.\n\nEvery user will see a different stream of messages based on the targeting options you defined in Audience Builder. You define who should see a message and for how long: messages can have an expiration date, and can be archived and deleted from your Carnival Platform. When messages expire (or you archive them), they will simply disappear from a person's Message Stream.\n\nMessage Streams can be used for different purposes, for example:\n\n- **Personalized inbox.** Users will have a unique inbox, with personalized messages based on their preferences and behavior.\n- **Curated news feed.** You can create and distribute your own feed of stories. Stories can be targeted based on people interests and demographics. For example, fashion apps can choose to show women's apparel to women only, or to display accessories if a person has browsed the Accessories category in the past 7 days.\n- **Channels.** You can have people subscribe to multiple channels, and use a message stream to filter by these channels. This is useful for marketers that want to categorize promotions and offers into different categories.\n\n## Types of message streams\nYou define the UX and behavior of your message stream. To give people a seamless app experience, we encourage you to make it blend into your original look and feel.\nCarnival provides [message stream templates](https://github.com/carnivalmobile/carnival-stream-examples) as a blueprint to build and customize your experience. These examples contain the underlying logic to retrieve messages and media assets, in addition to track impressions and read status. Use these templates as the foundation of your message streams, so you can focus on delivering an awesome user experience.\n\nAll message streams are fully customizable, and you can add or remove functionality and components.\n\n<p align=\"center\">\n<a href=\"https://github.com/carnivalmobile/carnival-stream-examples\" class=\"btn btn-primary\">Download Message Stream Templates</a>\n</p>\n[block:parameters]\n{\n  \"data\": {\n    \"0-1\": \"## Standard\\n\\nDisplays messages in a list with title and description.\\n\\nIdeal for media in the 16:9 aspect ratio.\\n\\nThe template displays message type, date and unread badge.\",\n    \"h-1\": \"Message Stream Type\",\n    \"h-0\": \"Preview\",\n    \"0-0\": \"<img src=\\\"https://files.readme.io/13493fd-Standard.gif\\\" width=\\\"388\\\" />\",\n    \"1-1\": \"## Cards\\n\\nDisplays messages in a list with title and description.\\n\\nSimilar to Standard Message stream, but adapt for 4:3 aspect ratio.\",\n    \"1-0\": \"<img src=\\\"https://files.readme.io/49f1889-Cards.gif\\\" width=\\\"388\\\" />\",\n    \"2-1\": \"## Graphical Cards\\n\\nImmersive UX for messages with images and videos.\\n\\nPerfect for 16:9 aspect ratio, with rich media (videos and high resolution images).\\n\\nDisplays full bleed images and videos.\\n\\nTitle and description blend into graphical asset.\",\n    \"2-0\": \"<img src=\\\"https://files.readme.io/950fe8a-GraphicalCards.gif\\\" width=\\\"388\\\" />\",\n    \"3-1\": \"## List\\n\\nDisplays messages in a condensed view.\\n\\nPerfect for link messages with image or video thumbnails.\\n\\nDisplays message title, thumbnail, type, date and unread badge.\\n\\nThe template supports swipe actions out of the box (useful to remove a message or mark it as read).\",\n    \"3-0\": \"<img src=\\\"https://files.readme.io/fa3ea24-List.gif\\\" width=\\\"388\\\" />\"\n  },\n  \"cols\": 2,\n  \"rows\": 4\n}\n[/block]\n## Adapting the templates\n\nThe templates are open source project; feel free to copy and use the code in your own apps. We make the code available under an [Apache 2.0](https://github.com/carnivalmobile/carnival-stream-examples/blob/master/LICENSE.md) License.\n\n## Building your own Stream\n\nYou can also build your own stream from Scratch. A message stream should get the messages from the Carnival SDK and then display them in a context that makes sense in your app. There are some additional considerations to make when you're customizing our stream, such as impressions and marking messages as read. \n\n## Next steps\nOnce you identified the Message Streams you want to build, learn [how to leverage our SDK](doc:developing-a-custom-message-stream) to create a personalized experience for your users.","excerpt":"","slug":"message-stream","type":"basic","title":"Message Stream Overview"}

Message Stream Overview


Message Stream is a home for your in-app messages. By default, when a person receives an in-app message, it will disappear as soon as it has been read. A Message Stream will act as a personalized inbox for these messages. Every user will see a different stream of messages based on the targeting options you defined in Audience Builder. You define who should see a message and for how long: messages can have an expiration date, and can be archived and deleted from your Carnival Platform. When messages expire (or you archive them), they will simply disappear from a person's Message Stream. Message Streams can be used for different purposes, for example: - **Personalized inbox.** Users will have a unique inbox, with personalized messages based on their preferences and behavior. - **Curated news feed.** You can create and distribute your own feed of stories. Stories can be targeted based on people interests and demographics. For example, fashion apps can choose to show women's apparel to women only, or to display accessories if a person has browsed the Accessories category in the past 7 days. - **Channels.** You can have people subscribe to multiple channels, and use a message stream to filter by these channels. This is useful for marketers that want to categorize promotions and offers into different categories. ## Types of message streams You define the UX and behavior of your message stream. To give people a seamless app experience, we encourage you to make it blend into your original look and feel. Carnival provides [message stream templates](https://github.com/carnivalmobile/carnival-stream-examples) as a blueprint to build and customize your experience. These examples contain the underlying logic to retrieve messages and media assets, in addition to track impressions and read status. Use these templates as the foundation of your message streams, so you can focus on delivering an awesome user experience. All message streams are fully customizable, and you can add or remove functionality and components. <p align="center"> <a href="https://github.com/carnivalmobile/carnival-stream-examples" class="btn btn-primary">Download Message Stream Templates</a> </p> [block:parameters] { "data": { "0-1": "## Standard\n\nDisplays messages in a list with title and description.\n\nIdeal for media in the 16:9 aspect ratio.\n\nThe template displays message type, date and unread badge.", "h-1": "Message Stream Type", "h-0": "Preview", "0-0": "<img src=\"https://files.readme.io/13493fd-Standard.gif\" width=\"388\" />", "1-1": "## Cards\n\nDisplays messages in a list with title and description.\n\nSimilar to Standard Message stream, but adapt for 4:3 aspect ratio.", "1-0": "<img src=\"https://files.readme.io/49f1889-Cards.gif\" width=\"388\" />", "2-1": "## Graphical Cards\n\nImmersive UX for messages with images and videos.\n\nPerfect for 16:9 aspect ratio, with rich media (videos and high resolution images).\n\nDisplays full bleed images and videos.\n\nTitle and description blend into graphical asset.", "2-0": "<img src=\"https://files.readme.io/950fe8a-GraphicalCards.gif\" width=\"388\" />", "3-1": "## List\n\nDisplays messages in a condensed view.\n\nPerfect for link messages with image or video thumbnails.\n\nDisplays message title, thumbnail, type, date and unread badge.\n\nThe template supports swipe actions out of the box (useful to remove a message or mark it as read).", "3-0": "<img src=\"https://files.readme.io/fa3ea24-List.gif\" width=\"388\" />" }, "cols": 2, "rows": 4 } [/block] ## Adapting the templates The templates are open source project; feel free to copy and use the code in your own apps. We make the code available under an [Apache 2.0](https://github.com/carnivalmobile/carnival-stream-examples/blob/master/LICENSE.md) License. ## Building your own Stream You can also build your own stream from Scratch. A message stream should get the messages from the Carnival SDK and then display them in a context that makes sense in your app. There are some additional considerations to make when you're customizing our stream, such as impressions and marking messages as read. ## Next steps Once you identified the Message Streams you want to build, learn [how to leverage our SDK](doc:developing-a-custom-message-stream) to create a personalized experience for your users.