Messages Framework 开发文档(Sticker Packs 与 iMessage Apps)
概述
开发者可以为 iOS 10 的 Messages app 创建 extension。用户在其中可以发送文字、表情、媒体文件、交互式消息(交互式消息即 interactive messages,是一种允许被对话的参与者更新状态的消息)。
第三方软件可以使用 Messages framework 创建两种 app extension: 表情包(Sticker packs)和 iMessage apps。这两种 app extension 都可以作为现有主 app 的 extension 来发布,也可以单独发布。
为了方便理解后文内容,强烈建议先玩一下:
1. Sticker pack 比如知乎刘看山
2. GamePigeon中的台球
3. 大众点评的订电影票
表情包简介
表情包(Sticker packs)是一组不能变更(指不允许增删改图片文件,允许gif动图)的表情图片。表情图片可以被当做一条消息单独发送,也可以附加到一条已有消息的气泡上。创建表情包并不需要写任何代码,把图片拖拽到 Stickers asset catalog 中的 Sticker Pack 文件夹下即可。用作表情的图片必须符合以下规范:
- 必须是 PNG, APNG, GIF, 或 JPEG 格式的文件。
- 每张图片必须小于 500 KB。
- 图片不能小于 100 x 100 points 或大于 206 x 206 points,以保证最佳显示效果。
- 仅提供 @3x 的图片即可(在 300 x 300 像素到 618 x 618 之间)。系统会在运行时缩放生成 @2x 和 @1x 的版本。
Messages 仅支持三种尺寸的表情。表情被显示在 grid-based browser中。表情图片尺寸需要在 Xcode 的 Attributes inspector 中设置。支持的尺寸有:
- 小图: 100 x 100 points @3x (300 x 300 pixels).
- 中图: 136 x 136 points @3x (408 x 408 pixels).
- 大图: 206 x 206 points @3x (618 x 618 pixels).
适用范围:
- 除了纯粹做表情
- 可以为 app 做 branding
- 除此之外似乎并没什么卵用
更多关于创建 sticker packs 的话题,参考Creating Stickers with Motion。
iMessage Apps 简介
iMessage apps 可以用来:
在 Messages app 中呈现自定义UI:参考 MSMessagesAppViewController。
创建自定义或动态 sticker browser:参考 MSStickerBrowserViewController。
向 Messages app 的输入框插入文字、表情或媒体文件:参考 MSConversation。
创建携带 app 特定数据的交互式消息:参考 MSMessage。
更新交互式消息 (比如游戏或合作类 apps—-举个例子,台球或大众点评约朋友一起电影):参考 MSSession。
适用范围
当用户点击一条交互式消息时,系统会弹出一个 controller ,开发者可以在其中做很多事。
Messages extension 可以与主 app 共享数据,也能单独做一个完整应用,也有单独访问网络权限。
适合交互式场景的应用或游戏。
适合需要分享和 IM ,但是客户端中内嵌 IM 有点重的 app。
更多创建 app extension 的话题请参考 App Extension Programming Guide。
Symbols
Classes
MSConversation
MSConversation 在 Messages app 中用来表示一组对话。使用 conversation 对象可以获取当前单聊或者群聊中的信息,或者发送文字、表情、附件或其他消息对象。MSMessage
MSMessage 用来创建交互式消息对象。如果要创建一个能被对话中的其他人更新状态的消息,使用initWithSession:
初始化,否则使用init
初始化。MSMessageLayout
MSMessageLayout 是用来定义 MSMessage 显示样式的抽象基类,每种子类对应一个显示样式,然而,目前只有一个子类MSMessageTemplateLayout
。MSMessagesAppViewController
MSMessagesAppViewController 是 Messages extension 中的 principal view controller,当 Message app 换起 extension 时,这个controller 就会出现。向其添加不同的子 controller 以实现不同的 feature。MSMessageTemplateLayout
MSMessageTemplateLayout 是 MSMessageLayout 的子类。描述 MSMessage 在消息中如何显示。消息模板包含 message extension 的 icon,一份图片/视频/音频文件,以及一组文字元素(title, subtitle, caption, subcaption, trailing caption, and trailing subcaption)。MSSession
用来创建交互式消息的对象。MSSticker
Messages app 中的表情对象。Sticker 可以被单独发送,也可以被附加到一条已存在的消息的气泡上。MSStickerBrowserView
MSStickerBrowserView 用来显示动态生成的表情列表。用户用户可以点击 browser 中的表情将其加到输入框内,也可以将表情从 browser 中拖拽到任意消息气泡上。MSStickerBrowserViewController MSStickerBrowserViewController 用来显示标准表情 browser。和MSStickerBrowserView一样,用户点击表情插入输入框内,或拖拽表情来附加到任意气泡上。
MSStickerView
MSStickerView 用来显示表情对象。和上面一样,点击插入输入框,拖拽附加到气泡。
Protocols
- MSStickerBrowserViewDataSource
动态为表情 browser 提供表情时需实现此协议。
相关文档
- Errors
此文档描述了表情包和 Message apps 中使用的错误类型和错误代码(error code not error source code)。 - Messages Enumerations
MSMessagesAppPresentationStyle: 描述 controller 的展示样式,是收起在底部,还是伸展到全屏。
MSStickerSize : 描述表情的显示尺寸。