iOS 基于云旺im自定義表情

云旺im自定義表情有2種佩脊,一種是固定的验庙,也就是你項目在開發(fā)時就配置好的資源,上線后不可修改过牙,第2種是動態(tài)的甥厦,可以自定義分組,以及添加表情到指定分組

思路:

在沙盒目錄下 ?創(chuàng)建emo文件夾 用來存儲圖片以及一些配置文件

NSFileManager *fileManager = [NSFileManager defaultManager];

? ? //? ? 創(chuàng)建總目錄

? ? NSString * docsdir = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

? ? NSString * emodir? = [docsdir stringByAppendingPathComponent:@"emo"];

? ? [fileManager createDirectoryAtPath:emodir withIntermediateDirectories:YES attributes:nil error:nil];

在沙盒目錄下 創(chuàng)建emotemp文件夾寇钉,用來存儲后面生成的emo文件

NSString * emodirtemp = [docsdir stringByAppendingPathComponent:@"emotemp"];

? ? [fileManager createDirectoryAtPath:emodirtemp withIntermediateDirectories:YES attributes:nil error:nil];

在emo文件目錄下根據(jù)分組名刀疙,創(chuàng)建屬于某分組的文件夾

NSString *groupdir = [emodir stringByAppendingPathComponent:groupName];

? ? [fileManager createDirectoryAtPath:groupdir withIntermediateDirectories:YES attributes:nil error:nil];

// 每個目錄下有一個文件夾和一個xml文件

? ? NSString *groupdirc= [groupdir stringByAppendingPathComponent:groupName];

? ? [fileManager createDirectoryAtPath:groupdirc withIntermediateDirectories:YES attributes:nil error:nil];

? ? [self newXMLWithDocPath:groupdir Name:groupName];

生成第一個xml配置文件,這里使用了GDataXML

- (void)newXMLWithDocPath:(NSString *)path Name:(NSString *)xmlName{

? ? //? ? 創(chuàng)建xml文件

? ? GDataXMLElement *rootElement = [GDataXMLNode elementWithName:@"xparam"];

? ? GDataXMLElement *element = [GDataXMLNode elementWithName:@"dir" stringValue:xmlName];

? ? // 把標(biāo)簽與屬性添加到根標(biāo)簽中

? ? [rootElement addChild:element];

? ? GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithRootElement:rootElement];

? ? NSData *xmlData = [doc XMLData];

? ? NSString *xmlpathName = [NSString stringWithFormat:@"config.xml"];

? ? NSString *filePath = [path stringByAppendingPathComponent:xmlpathName];

? ? [xmlData writeToFile:filePath atomically:YES];

}

分組名下面扫倡,有3張圖片谦秧,一張是表情分組組icon,其余2張是 ?云旺默認(rèn)最少需要2張

// 目錄里面有一張圖片

? ? NSData *data? = UIImageJPEGRepresentation([UIImage imageNamed:@"001"],.000000005);

? ? NSString *imgFileName = [NSString stringWithFormat:@"/EmotionGroupIcon@2x.png"];

? ? [fileManager createFileAtPath:[groupdirc stringByAppendingString:imgFileName] contents:data attributes:nil];

? ? //? ? 以及一個xml文件

? ? NSData *data2? = UIImageJPEGRepresentation([UIImage imageNamed:@"001"],.000000005);

? ? NSString *imgFileName2 = [NSString stringWithFormat:@"/1.png"];

? ? [fileManager createFileAtPath:[groupdirc stringByAppendingString:imgFileName2] contents:data2 attributes:nil];

? ? NSData *data3? = UIImageJPEGRepresentation([UIImage imageNamed:@"002"],.000000005);

? ? NSString *imgFileName3 = [NSString stringWithFormat:@"/2.png"];

? ? [fileManager createFileAtPath:[groupdirc stringByAppendingString:imgFileName3] contents:data3 attributes:nil];

創(chuàng)建最里面的xml

[self newXMLWithDocPath:groupdirc]

- (void)newXMLWithDocPath:(NSString *)path{

? ? //? ? 創(chuàng)建xml文件

? ? GDataXMLElement *rootElement = [GDataXMLNode elementWithName:@"xparam"];

? ? GDataXMLElement *element = [GDataXMLNode elementWithName:@"Item"];


? ? GDataXMLElement *ShortCut = [GDataXMLNode elementWithName:@"ShortCut" stringValue:@""];

? ? GDataXMLElement *Meaning = [GDataXMLNode elementWithName:@"Meaning" stringValue:@"gi"];

? ? GDataXMLElement *OriginalFile = [GDataXMLNode elementWithName:@"OriginalFile" stringValue:@"1.png"];

? ? GDataXMLElement *FixedFile = [GDataXMLNode elementWithName:@"FixedFile" stringValue:@"1.png"];

? ? GDataXMLElement *GroupName = [GDataXMLNode elementWithName:@"GroupName" stringValue:@"name"];

? ? GDataXMLElement *IsSys = [GDataXMLNode elementWithName:@"IsSys" stringValue:@"0"];


? ? GDataXMLElement *ShortCut2 = [GDataXMLNode elementWithName:@"ShortCut" stringValue:@""];

? ? GDataXMLElement *Meaning2 = [GDataXMLNode elementWithName:@"Meaning" stringValue:@"nan"];

? ? GDataXMLElement *OriginalFile2 = [GDataXMLNode elementWithName:@"OriginalFile" stringValue:@"2.png"];

? ? GDataXMLElement *FixedFile2 = [GDataXMLNode elementWithName:@"FixedFile" stringValue:@"2.png"];

? ? GDataXMLElement *GroupName2 = [GDataXMLNode elementWithName:@"GroupName" stringValue:@"name"];

? ? GDataXMLElement *IsSys2 = [GDataXMLNode elementWithName:@"IsSys" stringValue:@"0"];


? ? [element addChild:ShortCut];

? ? [element addChild:Meaning];

? ? [element addChild:OriginalFile];

? ? [element addChild:FixedFile];

? ? [element addChild:GroupName];

? ? [element addChild:IsSys];


? ? GDataXMLElement *element2 = [GDataXMLNode elementWithName:@"Item"];


? ? [element2 addChild:ShortCut2];

? ? [element2 addChild:Meaning2];

? ? [element2 addChild:OriginalFile2];

? ? [element2 addChild:FixedFile2];

? ? [element2 addChild:GroupName2];

? ? [element2 addChild:IsSys2];


? ? // 把標(biāo)簽與屬性添加到根標(biāo)簽中

? ? [rootElement addChild:element];

? ? [rootElement addChild:element2];

? ? GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithRootElement:rootElement];

? ? NSData *xmlData = [doc XMLData];

? ? NSString *xmlpathName = @"EmotionConfig.xml";

? ? NSString *filePath = [path stringByAppendingPathComponent:xmlpathName];

? ? [xmlData writeToFile:filePath atomically:YES];

}

將存放xml和圖片文件夾壓縮成emo文件

NSArray *pathArray = @[groupdirc,[NSString stringWithFormat:@"%@/config.xml",groupdir]]

[self zipWithArray:pathArray withZipPath:groupdir pathName:[NSString stringWithFormat:@"%@/%@.emo",emodirtemp,groupName]];

- (BOOL)isDirectory:(NSString *)filePath { BOOL isDirectory = NO; [[NSFileManager defaultManager] fileExistsAtPath:filePath isDirectory:&isDirectory]; return isDirectory; }

- (void)zipWithArray:(NSArray *)pathArray withZipPath:(NSString *)sourcePath pathName:(NSString *)pathName{

NSFileManager *fileManager = [NSFileManager defaultManager];

ZipArchive * zipArchive = [ZipArchive new];

[zipArchive CreateZipFile2:pathName];

for (NSString *path in pathArray) {

if ([self isDirectory:path])

{ // 是文件夾

NSArray *subPaths = [fileManager subpathsAtPath:sourcePath];// 關(guān)鍵是subpathsAtPath方法

for(NSString *subPath in subPaths)

{ NSString *fullPath = [sourcePath stringByAppendingPathComponent:subPath];

BOOL isDir;

if([fileManager fileExistsAtPath:fullPath isDirectory:&isDir] && !isDir)// 只處理文件 { [zipArchive addFileToZip:fullPath newname:subPath]; } } } }

[zipArchive CloseZipFile2]; }


現(xiàn)在你已經(jīng)成功的生成了emo文件镊辕,根據(jù)官網(wǎng)文檔上所說的 ?添加到項目中就好了

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市蚁袭,隨后出現(xiàn)的幾起案子征懈,更是在濱河造成了極大的恐慌,老刑警劉巖揩悄,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件卖哎,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機亏娜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進(jìn)店門焕窝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人维贺,你說我怎么就攤上這事它掂。” “怎么了溯泣?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵虐秋,是天一觀的道長。 經(jīng)常有香客問我垃沦,道長客给,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任肢簿,我火速辦了婚禮靶剑,結(jié)果婚禮上媒区,老公的妹妹穿的比我還像新娘薇组。我一直安慰自己租悄,他們只是感情好矗漾,可當(dāng)我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布递惋。 她就那樣靜靜地躺著铜靶,像睡著了一般溺忧。 火紅的嫁衣襯著肌膚如雪突梦。 梳的紋絲不亂的頭發(fā)上咱圆,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天笛辟,我揣著相機與錄音,去河邊找鬼序苏。 笑死手幢,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的忱详。 我是一名探鬼主播围来,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼匈睁!你這毒婦竟也來了监透?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤航唆,失蹤者是張志新(化名)和其女友劉穎胀蛮,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體糯钙,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡粪狼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年退腥,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片再榄。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡狡刘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出困鸥,到底是詐尸還是另有隱情嗅蔬,我是刑警寧澤,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布窝革,位于F島的核電站购城,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏虐译。R本人自食惡果不足惜瘪板,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望漆诽。 院中可真熱鬧侮攀,春花似錦、人聲如沸厢拭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽供鸠。三九已至畦贸,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間楞捂,已是汗流浹背薄坏。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留寨闹,地道東北人胶坠。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像繁堡,于是被迫代替她去往敵國和親沈善。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容