IMessage Extension 之 Application

IMessage For Application

记录这次的简书主要是关于 Application 这一个模块的

创建工程的选项

但是不是要单独使用而是和我的项目一起使用所以要在项目中添加一个 target :

file -> new -> target

创建 target 和直接创建工程长得不一样哈!

写好工程名字之后会有一个 alert 点击Activate:

点击"Activate"

有一个需要注意的地方就是Bundle Identifier, 前面部分必须和你的主工程的一样后边的你就随意吧

注意 BundleIdentifier 的写法

之后写东西的话就和正常的开发一样了, 在MessagesViewController默认的这个控制器中编写, 或者自己创建一个都可以的, 但是要注意需要继承MSMessagesAppViewController这个类

接下来说一下图标的问题

  • 图标最好准备一个1024*768的图片, 这样好裁剪

  • 其次呢, 我推荐一个软件, IconKit, 这个软件包含了所有的图标剪裁:

    IconKit 的裁剪

  • 然后呢, 会生成所有图标的.stickersiconset这个后缀的文件夹, 其中都是符合要求的图标只需要全部选中拖入工程, 我建议是拖入, 我试过直接替换文件夹结果出问题了, 我自那以后就是拖入省的出现问题

对于这个工程, Extension 是可以使用你原工程的类, 但是需要在Build Phases 中引入你需要的.m文件(目前我就在用这个方式, 因为需要的不多, 所以没有去找更简单的方式, 如果有人知道更简单的方式请留言告诉我哟谢谢)

Build Phases
Build Phases
// Cocoapods 的也可以这么引入

target '原工程 App 的名字' do
        pod ...
        pod ...
        pod ...
end

target 'IMessage App 的名字' do
        pod ...
end

还需要配置一下 Project 的东西, 如图:

Project

基本的配置其实并没有完毕, 因为我们在写项目的时候很有可能需要原工程(宿主)的数据, 宿主也可能需要 IMessage 的数据, 所以我们需要进行数据共享, 这样就需要你的项目的证书支持了, 首先去Development, 创建appID, 描述文件什么的, 其中需要注意的就是 appID, 原工程和 IMessage 都需要一份证书的, 都需要勾选AppGroups

AppGroups 在第一位
AppGroups 创建好在这里查看

刚开始选中的时候会让你创建一个 groups, 你去创建就好, 回头要重新进入勾选一下

注意:这个 groups 的名字必须是group.xxx 这个格式的, 例如: group.CloudSecretary

然后就去创建你的工程描述文件吧, 下载好打开, 进 行下一步配置, 回到工程:

AppGroups 创建好在这里查看

这样我们的配置就到此告一段落了, 共享数据通讯有几个特有的方法:

--- 使用 NSUserDefaults

在宿主App里保存值

NSUserDefaults *userDefault = [[NSUserDefaults alloc]initWithSuiteName:@"group.xxxxx"];
[userDefault setObject:userToken forKey:@"IMessage_User_Token"];

在拓展App里取值

NSUserDefaults *userDefault = [[NSUserDefaults alloc]initWithSuiteName:@"group.xxxxx"];
NSString *userToken = [userDefault objectForKey:@"IMessage_User_Token"];

--- 使用 数据库(数据较多的时候建议使用)
// 假设存放的是下面的位置
[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)[0] stringByAppendingPathComponent:@"IMessage.sqlite"]

// 需要用 NSFileManager 来获取路径
[[[[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.testAppExtension"] absoluteString] stringByAppendingPathComponent:@"IMessage.sqlite"]

到目前为止, 我们的准备工作就都做完了, 剩下的编程就很简单了, API 也没有多少, 最主要的我说几个吧:
MSConversation :这个类包含了我们的消息体MSMessage,以及发送message的方法。

//发送一个 MSMessage 消息体
- (void)insertMessage:(MSMessage *)message completionHandler:(nullable void (^)(NSError * _Nullable))completionHandler;

//发送Sticker(贴纸,表情)
- (void)insertSticker:(MSSticker *)sticker completionHandler:(nullable void (^)(NSError * _Nullable))completionHandler;

//发送纯文本消息
- (void)insertText:(NSString *)text completionHandler:(nullable void (^)(NSError * _Nullable))completionHandler;

//发送文件
- (void)insertAttachment:(NSURL *)URL withAlternateFilename:(nullable NSString *)filename completionHandler:(nullable void (^)(NSError * _Nullable))completionHandler;
MSMessage:消息体,包含了我们消息的内容的排版MSMessageLayout。

MSMessageLayout:对于消息体的排版,系统已经为我们抽象出了一个这个类,只暴露了.h文件。

MSMessageTemplateLayout:继承与MSMessageLayout,包含了消息的内容,有一下这些属性:
image;
imageTitle;
imageSubtitle;
caption;
subcaption;
trailingCaption;
trailingSubcaption;

具体的消息体表现请看我盗的图:
AppGroups 创建好在这里查看
MessagesViewController 的生命周期很简单根据自己的需求去使用就好了, 有关于点击事件, 获取到的消息体只能携带一个 URL, 所以我们只能通过 URL 来传递消息了, 如果有时候你获取到的 URL 为 NULL 请不要着急, 多试试点击, 多多编译工程, 我就因为这个获取不到而耽误了3个多小时, 仅仅是因为 Xcode 抽风
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容