WWDC 2016 上最重磅的消息之一就是在 iOS 10 中引入了 Message 框架。开发者现在可以为苹果内置的 Messages
应用开发扩展啦。通过开发一个应用扩展,你可以让用户跟应用在 Messages 应用中交互。例如,你可以开发一个 Message Sticker
Extension 允许用户跟朋友交流时发送表情贴纸。如果你已经开发了一个图片编辑的应用,那么你可以开发一个扩展,这样用户就可以在
Messages 应用内部编辑图片了。扩展的支持为很多应用开发者提供了大量的机会。苹果甚至为 iMessage 引入了 App
Store,所以你可以在商店内售卖专门为 iMessage 开发的应用扩展。

为 Messages 开发一个应用扩展,你需要使用新的 Message 框架。这个框架支持以下两种类型的扩展:

  • Sticker packs(注:表情包)
  • iMessage apps

在这个教程里,我将会教你如何通过这个框架开发一个 sticker pack。而之后,我们将会稍微深入地了解下如何开发一个 iMessage app。

无论你要开发什么样类型的扩展,首先你需要使用 Xcode 8。在我写这篇文章的时候,Xcode 8 还是测试版。如果你还没安装工具,可以从 这里下载 并安装到你的电脑上。即使你已经安装了 Xcode 7,你仍然可以保留当前的版本并且安装新的 Xcode。

在继续下一步之前,我必须夸一下苹果,因为他让 sticker pack 的开发非常简单。即使你不会任何 Swift
编程经验,你也能够创建你自己的 sticker pack,因为你不需要写一行代码。跟着这篇教程学会如何创建一个 Sticker
Extension。

创建一个 Sticker Pack 项目

首先,打开 Xcode 8 然后创建一个新的项目。Xcode 8 已经为 Message Extension 准备了几个项目模板。如果是
sticker pack,选择 iOS > Application > Sticker Pack Application.

然后,输入项目名称。在这个项目里,我使用 CuteSticker ,但是你可以使用任何你喜欢的名称。

为 Sticker Pack 添加图片

一旦你创建了项目,你将会在 project navigator 里看到两个文件。点击 Stickers.xcstickers 然后选择
Sticker Pack 文件夹,这是存放图片文件的地方。如果你想做 demo 你可以下载这个图片包,或者使用你自己的图片。但是请注意图片必须是
PNG(首选)、APNG、GIF 或者 JPG 格式,并且大小不超过 500KB。

假设你已经下载了我们的图片包,在 Finder 里面解压。然后选择所有的图片,并将他们拖到 Sticker Pack 文件夹。

声明:这个图片表是由 pixeden.com 提供的。

此外,你还可以随意地选择 sticker 的尺寸。选择 Sticker Pack 文件夹,然后选择 Attributes inspector。sticker 的默认尺寸为 Medium,你可以改为 SmallLarge。在这个 demo 里面,我只是用了默认设置。

添加应用图标

最后,你的表情包必须有一个应用图片。同样滴,由于是 demo,我已经准备了样例应用图标,你可以在这里下载。如果你想要创建自己的图片,确保你准备好了不同尺寸的图标:

  • Messages App Store:1024×768 points (@1x)
  • Messages:27×20 points (@1x, @2x, @3x)
  • Messages:32×24 points (@1x, @2x, @3x)
  • iPhone/iPad 设定:29×29 points (@1x, @2x, @3x)
  • Messages(iPhone):60×45 points (@2x, @3x)
  • Messages(iPad):67×50 points (@1x, @2x)
  • Message(iPad Pro):74×55 points (@2x)

为了简化图片准备工作,你可以从苹果官网下载 iMessage App Icon 模板

在你下载完我们的 演示应用图标包 后,解压并将所有图标拖到 iMessage App Icon 下。

测试 Sticker Pack

好了!现在你已经为 Message 创建了一个表情包了,是时候来测试了。你不需要一台 iOS 10 设备去测试,Xcode 提供了内置的模拟器来测试 iMessage 应用扩展。选择一个模拟器设备(如:iPhone 6)然后点击 Run 按钮开始测试。

由于 Sticker pack 是一个应用扩展,所以你可以把它当做一个独立的应用,并且必须运行在 Message 应用里面。所以当 Xcode 询问你选择哪个应用来运行时,选择 Message 应用。然后点击 Run。

当模拟器登录完了, Message 将会直接打开。点击扩展按钮,你可以找到你的 sticker pack。如果你点击左下菜单,将会显示你的 Sticker pack,当然这也是内置的。

在模拟器里,Message 有两个模拟用户,选择一个表情发送,然后回到 messageuser2,你可以看到 messageuser1 发送的表情。

使用动画图片来自增强 Sticker Pack

你不仅仅可以在 Sticker Pack 里面绑定静态图片,并且可以让你简单地添加动态图片到表情包里。如果你已经有一些 像这样的 GIF 或者 APNG 图,简单地添加图片到表情包里。Xcode 将会识别并展示动画。

创建动图的另外一个替代方案是创建一个 sticker 序列。回到你的 sticker pack,在任意空白处右击,选择 Add Assets > New Sticker Sequence。这个将会创建一个让你添加图片队列的 sticker 序列。

作为示例,你可以下载 这个图片包。解压并添加到 sticker 序列。Xcode 允许你在 sticker pack 的右边预览动画。

总结

你已经学会了如何在 Message 应用内使用 Xcode 8 创建一个应用扩展。正如你所见,你不需要写哪怕一行代码去创建一个 sticker pack。你仅需要做的就是准备好图片(动态或者静态),然后就可以开始制作表情包啦。

同时,Xcode 8 和 iOS 10 仍然是测试版。你还不能将你的 sticker pack 上传到 Message App Store。但是这是你开始创建属于你自己的表情包的绝佳时机。当 iOS 10 正式发布好了,你就掌握了先机。

Sticker pack 只是 iMessage 应用的一种扩展。在下一篇的教程里,我们将会学习如何去创建一种更复杂的 Message 扩展。敬请关注。

dome:https://github.com/appcoda/iMessageSticker

学习网站:http://www.jianshu.com/p/b03b487f340f

iOS 10 中引入了 Message 框架的更多相关文章

  1. 关于 iOS 10 中 ATS 的问题

    本文于 2016 年 11 月 28 日按照 Apple 最新的文档和 Xcode 8 中的表现进行了部分更新. WWDC 15 提出的 ATS (App Transport Security) 是 ...

  2. 关于 iOS 10 中 ATS / HTTPS /2017 问题

    本文于 2016 年 11 月 28 日按照 Apple 最新的文档和 Xcode 8 中的表现进行了部分更新. WWDC 15 提出的 ATS (App Transport Security) 是 ...

  3. iOS 10中如何搭建一个语音转文字框架

    在2016WWDC大会上,Apple公司介绍了一个很好的语音识别的API,那就是Speech framework.事实上,这个Speech Kit就是Siri用来做语音识别的框架.如今已经有一些可用的 ...

  4. 使用 Swift 在 iOS 10 中集成 Siri —— SiriKit 教程

    下载 Xcode 8,配置 iOS 10 和 Swift 3 (可选)通过命令行编译 除 非你想使用命令行编译,使用 Swift 3.0 的工具链并不需要对项目做任何改变.如果你想的话,打开 Xcod ...

  5. 分割视图控制器(UISplitViewController) 改_masterColumnWidth 导致在 IOS 10中出现闪退

    默认UISplitViewController的Master和Detail的宽度是固定的,可以通过下面的方式来改变 [splitViewController setValue:[NSNumber nu ...

  6. 在iOS项目中引入MVVM

    本文翻译自:http://www.objc.io/issue-13/mvvm.html.为了方便读者并节约时间,有些不是和文章主题相关的就去掉了.如果读者要看原文的话可以通过前面的url直接访问.作者 ...

  7. 【IDEA】单元测试:项目中引入JUnit测试框架+Mock简单了解

    一.Junit 使用和说明: 参考:单元测试第三弹--使用JUnit进行单元测试-HollisChuang's Blog http://www.hollischuang.com/archives/17 ...

  8. [转载]iOS 10 UserNotifications 框架解析

    活久见的重构 - iOS 10 UserNotifications 框架解析 TL;DR iOS 10 中以前杂乱的和通知相关的 API 都被统一了,现在开发者可以使用独立的 UserNotifica ...

  9. iOS 10 UserNotifications 框架解析

    摘自:https://onevcat.com/2016/08/notification/ iOS 10 中以前杂乱的和通知相关的 API 都被统一了,现在开发者可以使用独立的 UserNotifica ...

随机推荐

  1. SWIG 多语言接口变换 【转】

    一.             SWIG 是Simple Wrapper and Interface Generator的缩写,是一个帮助使用C或者C++编写的软件创建其他编语言的API的工具.例如,我 ...

  2. SQL Script for read information from a csv file in FTP Server

    DECLARE w_file_path VARCHAR2(4000) := 'XXIF_INPUT'; --all_directories.directory_name w_file_name VAR ...

  3. selenium的PageObject设计模式

    PageObject设计模式1. Web自动化测试框架(WebTestFramework)是基于Selenium框架且采用PageObject设计模式进行二次开发形成的框架. 2. web测试时,建议 ...

  4. 关于Docker&kubernetes的一些问题

    本文是我自己在学习docker以及kubernetes的过程中遇到的一些问题,以及同事在听过培训之后一些问题,事后我自己去网上找些资料以及问一些资深大牛,我在此做一个归纳总结,将这些问题的解答做一个分 ...

  5. 倍福TwinCAT(贝福Beckhoff)基础教程5.1 TwinCAT-2 运行可执行文件

    个人认为这条命令做的参数比较混乱,PATHSTR是指可执行文件路径+最终文件名,DIRNAME是指可执行文件路径,最后COMNDLINE可有可无,是指带参数运行启动的文件   测试可以正常运行     ...

  6. VM虚拟机 Windows虚拟机中linux鼠标不能动怎么办

    有一次vmware安装red hat linux后,进入x-windows界面,鼠标不能用,百思不得其解,因为自己的安装linux的过程中设置绝对是没有问题的啊,鼠标设置肯定是usb带滑轮,这个肯定没 ...

  7. MySQL的查询,子查询,联结查询,联合查询

    MySQL的查询,子查询,联结查询,联合查询 一.mysql查询的五种子句where(条件查询).having(筛选).group by(分组).order by(排序).limit(限制结果数) 二 ...

  8. SurfaceView实现拍照预览

    一.布局代码 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:andro ...

  9. cordova与ios native code交互的原理

    非常早曾经写了一篇博客,总结cordova插件怎么调用到原生代码:cordova调用过程,只是写得太水.基本没有提到原理.近期加深了一点理解,又一次补充说明一下 js调用native 以下是我们产品中 ...

  10. linux ln 命令使用参数详解(ln -s 软链接)(转)

    这是linux中一个非常重要命令,请大家一定要熟悉.它的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s,具体用法是:ln -s 源文件 目标文件. 当 我们需要在不同的 ...