Skip to content

Commit 231ccc0

Browse files
guangyaoguangyao
authored andcommitted
add custom message
1 parent 07d2be3 commit 231ccc0

File tree

8 files changed

+78
-9
lines changed

8 files changed

+78
-9
lines changed

ios/RCTAuroraIMUI.xcodeproj/project.pbxproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@
142142
4E9CE01C1F9DDB1E005FC8A7 /* IMUICardMessageCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E9CE01B1F9DDB1E005FC8A7 /* IMUICardMessageCell.swift */; };
143143
4EC4F96D1F46F0B1000C5CA6 /* MenuPopOverView.h in Headers */ = {isa = PBXBuildFile; fileRef = 4EC4F96B1F46F0B1000C5CA6 /* MenuPopOverView.h */; settings = {ATTRIBUTES = (Public, ); }; };
144144
4EC4F96E1F46F0B1000C5CA6 /* MenuPopOverView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4EC4F96C1F46F0B1000C5CA6 /* MenuPopOverView.m */; };
145+
4EDCA75C2089809A00B6DB55 /* IMUICustomMessageContentCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EDCA75B2089809A00B6DB55 /* IMUICustomMessageContentCell.swift */; };
145146
623EA9A21EE55D0800EC43AE /* RCTAuroraIMUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 623EA9991EE55D0800EC43AE /* RCTAuroraIMUI.framework */; };
146147
623EA9A71EE55D0800EC43AE /* RCTAuroraIMUITests.m in Sources */ = {isa = PBXBuildFile; fileRef = 623EA9A61EE55D0800EC43AE /* RCTAuroraIMUITests.m */; };
147148
623EA9A91EE55D0800EC43AE /* RCTAuroraIMUI.h in Headers */ = {isa = PBXBuildFile; fileRef = 623EA99B1EE55D0800EC43AE /* RCTAuroraIMUI.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -325,6 +326,7 @@
325326
4E9CE01B1F9DDB1E005FC8A7 /* IMUICardMessageCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IMUICardMessageCell.swift; sourceTree = "<group>"; };
326327
4EC4F96B1F46F0B1000C5CA6 /* MenuPopOverView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MenuPopOverView.h; sourceTree = "<group>"; };
327328
4EC4F96C1F46F0B1000C5CA6 /* MenuPopOverView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MenuPopOverView.m; sourceTree = "<group>"; };
329+
4EDCA75B2089809A00B6DB55 /* IMUICustomMessageContentCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IMUICustomMessageContentCell.swift; sourceTree = "<group>"; };
328330
6239E6641EDDB1F700B9AC9C /* libAuroraIMUI.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libAuroraIMUI.a; sourceTree = BUILT_PRODUCTS_DIR; };
329331
623EA9701EE55CB200EC43AE /* imuiDemo-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "imuiDemo-Bridging-Header.h"; sourceTree = "<group>"; };
330332
623EA9721EE55CB200EC43AE /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
@@ -676,6 +678,7 @@
676678
4E34C3381F3D45CA00AF4B73 /* IMUITransferMessageCell.swift */,
677679
4E34C33C1F3DA73900AF4B73 /* IMUIRedPacketOpenMessageCell.swift */,
678680
4E31CB2C1F5E8ED6007C3096 /* IMUIUnKnownMessageCell.swift */,
681+
4EDCA75B2089809A00B6DB55 /* IMUICustomMessageContentCell.swift */,
679682
);
680683
path = Views;
681684
sourceTree = "<group>";
@@ -975,6 +978,7 @@
975978
4E34C33D1F3DA73900AF4B73 /* IMUIRedPacketOpenMessageCell.swift in Sources */,
976979
4E77A3AD1F30840000098CAF /* UIViewExtension.swift in Sources */,
977980
624B82911EE5710E006C3C03 /* MyUser.swift in Sources */,
981+
4EDCA75C2089809A00B6DB55 /* IMUICustomMessageContentCell.swift in Sources */,
978982
4E77A3BD1F30840000098CAF /* IMUIMessageStatusViewProtocal.swift in Sources */,
979983
4E31CB2D1F5E8ED6007C3096 /* IMUIUnKnownMessageCell.swift in Sources */,
980984
4E5274D21F3C5CE2005FB9B9 /* IMUIRedPacketMessageCell.swift in Sources */,

ios/RCTAuroraIMUI.xcodeproj/xcuserdata/dowin.xcuserdatad/xcschemes/xcschememanagement.plist

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@
77
<key>AuroraIMUI.xcscheme</key>
88
<dict>
99
<key>orderHint</key>
10-
<integer>10</integer>
10+
<integer>6</integer>
1111
</dict>
1212
<key>RCTAuroraIMUI.xcscheme</key>
1313
<dict>
1414
<key>orderHint</key>
15-
<integer>11</integer>
15+
<integer>7</integer>
1616
</dict>
1717
</dict>
1818
<key>SuppressBuildableAutocreation</key>

ios/RCTAuroraIMUI/IMUIMessageCollectionView/Models/IMUIMessageModel.swift

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -195,15 +195,28 @@ open class IMUIMessageModel: NSObject, IMUIMessageModelProtocol {
195195
bubbleContentSize = CGSize(width: UIScreen.main.bounds.width, height: 40)
196196
isShowAvatar = false
197197
break
198-
198+
case .custom:
199+
var tmpWidth:Float = Float(screenW * 0.4);
200+
var tmpHeight:Float = Float(screenW * 0.4);
201+
let strWidth = self.customDict.object(forKey: "Width") as! NSString
202+
let strHeight = self.customDict.object(forKey: "Height") as! NSString
203+
if strWidth.floatValue > 0 {
204+
tmpWidth = strWidth.floatValue
205+
}
206+
if strHeight.floatValue > 0 {
207+
tmpHeight = strHeight.floatValue
208+
}
209+
bubbleContentSize = CGSize(width: CGFloat(tmpWidth), height: CGFloat(tmpHeight))
210+
break
199211
default:
212+
bubbleContentSize = CGSize(width: CGFloat(200), height: CGFloat(130))
200213
break
201214
}
202215
return bubbleContentSize
203216
}
204217
func heightWithFont(font : UIFont, fixedWidth : CGFloat, text : String) -> CGSize {
205218

206-
guard text.characters.count > 0 && fixedWidth > 0 else {
219+
guard text.count > 0 && fixedWidth > 0 else {
207220

208221
return CGSize.zero
209222
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
//
2+
// IMUICustomMessageContentCell.swift
3+
// RCTAuroraIMUI
4+
//
5+
// Created by Dowin on 2018/4/20.
6+
// Copyright © 2018年 HXHG. All rights reserved.
7+
//
8+
9+
import UIKit
10+
import WebKit
11+
12+
class IMUICustomMessageContentCell: IMUIBaseMessageCell {
13+
14+
var customView : WKWebView?
15+
16+
override init(frame: CGRect) {
17+
super.init(frame: frame)
18+
let jsStr = "var meta = document.createElement('meta'); meta.setAttribute('name', 'viewport'); meta.setAttribute('content', 'width=device-width'); document.getElementsByTagName('head')[0].appendChild(meta);"
19+
let script = WKUserScript(source: jsStr, injectionTime: .atDocumentEnd, forMainFrameOnly: true)
20+
let contentController = WKUserContentController()
21+
contentController.addUserScript(script)
22+
23+
let config = WKWebViewConfiguration()
24+
config.userContentController = contentController
25+
self.customView = WKWebView(frame: CGRect.zero, configuration: config)
26+
self.bubbleView.addSubview(self.customView!)
27+
self.customView?.isUserInteractionEnabled = false
28+
}
29+
30+
required public init?(coder aDecoder: NSCoder) {
31+
fatalError("init(coder:) has not been implemented")
32+
}
33+
34+
override func presentCell(with message: IMUIMessageModelProtocol, viewCache: IMUIReuseViewCache , delegate: IMUIMessageMessageCollectionViewDelegate?) {
35+
super.presentCell(with: message, viewCache: viewCache, delegate: delegate)
36+
customView!.frame = bubbleView.bounds
37+
let tmpDict = message.customDict
38+
let strContent = tmpDict.object(forKey: "content") as! String
39+
print("dongci:\(strContent)")
40+
customView!.loadHTMLString(strContent, baseURL: Bundle.main.bundleURL)
41+
}
42+
}
43+

ios/RCTAuroraIMUI/IMUIMessageCollectionView/Views/IMUIMessageCollectionView.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ open class IMUIMessageCollectionView: UIView {
8686
self.messageCollectionView.register(IMUITransferMessageCell.self, forCellWithReuseIdentifier: IMUITransferMessageCell.self.description())
8787
self.messageCollectionView.register(IMUIRedPacketOpenMessageCell.self, forCellWithReuseIdentifier: IMUIRedPacketOpenMessageCell.self.description())
8888
self.messageCollectionView.register(IMUIUnKnownMessageCell.self, forCellWithReuseIdentifier: IMUIUnKnownMessageCell.self.description())
89+
self.messageCollectionView.register(IMUICustomMessageContentCell.self, forCellWithReuseIdentifier: IMUICustomMessageContentCell.self.description())
8990
self.messageCollectionView.register(IMUIBaseMessageHeadCell.self, forSupplementaryViewOfKind: UICollectionElementKindSectionHeader, withReuseIdentifier: "headView")
9091
self.messageCollectionView.register(IMUICardMessageCell.self, forCellWithReuseIdentifier: IMUICardMessageCell.self.description())
9192

@@ -257,6 +258,9 @@ extension IMUIMessageCollectionView: UICollectionViewDelegate, UICollectionViewD
257258
case .unknown:
258259
cellIdentify = IMUIUnKnownMessageCell.self.description()
259260
break
261+
case .custom:
262+
cellIdentify = IMUICustomMessageContentCell.self.description()
263+
break
260264

261265
default:
262266
break

ios/RCTAuroraIMUI/IMUIMessageCollectionView/Views/IMUITransferMessageCell.swift

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ class IMUITransferMessageCell: IMUIBaseMessageCell {
4848

4949
let tmpDict = message.customDict
5050
let strContent = tmpDict.object(forKey: "comments") as! String
51-
if strContent.characters.count > 0 {
51+
if strContent.count > 0 {
5252
contentLable.text = strContent
5353
}else{
5454
contentLable.text = "飞马转账"
@@ -76,8 +76,7 @@ class IMUITransferMessageCell: IMUIBaseMessageCell {
7676
}
7777

7878
func heightWithFont(font : UIFont, fixedWidth : CGFloat, text : String) -> CGSize {
79-
80-
guard text.characters.count > 0 && fixedWidth > 0 else {
79+
guard text.count > 0 && fixedWidth > 0 else {
8180

8281
return CGSize.zero
8382
}

ios/RCTAuroraIMUI/IMUIMessageCollectionView/Views/IMUIVideoMessageCell.swift

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,5 @@ class IMUIVideoMessageCell: IMUIBaseMessageCell {
7878
}
7979
}
8080
}
81-
8281
}
83-
8482
}

ios/RCTAuroraIMUI/MyMessageModel.swift

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ open class RCTMessageModel: IMUIMessageModel {
3434
static let kMsgTypeRedpacketOpen = "redpacketOpen"
3535
static let kMsgTypeCard = "card"
3636
static let kMsgTypeUnKnow = "unknown"
37+
static let kMsgTypeCustom = "custom"
3738

3839

3940
static let kMsgKeyMsgId = "msgId"
@@ -233,6 +234,9 @@ open class RCTMessageModel: IMUIMessageModel {
233234
}else if typeString == RCTMessageModel.kMsgTypeCard{
234235
msgType = .card
235236
customDict = messageDic.object(forKey: RCTMessageModel.kMsgKeyExtend) as! NSMutableDictionary
237+
}else if typeString == RCTMessageModel.kMsgTypeCustom{
238+
msgType = .custom
239+
customDict = messageDic.object(forKey: RCTMessageModel.kMsgKeyExtend) as! NSMutableDictionary
236240
}else{
237241
msgType = .unknown
238242
}
@@ -371,6 +375,10 @@ open class RCTMessageModel: IMUIMessageModel {
371375
case .unknown:
372376
messageDic.setValue(RCTMessageModel.kMsgTypeUnKnow, forKey: RCTMessageModel.kMsgKeyMsgType)
373377
break
378+
case .custom:
379+
messageDic.setValue(RCTMessageModel.kMsgTypeCustom, forKey: RCTMessageModel.kMsgKeyMsgType)
380+
messageDic.setValue(self.customDict, forKey: RCTMessageModel.kMsgKeyExtend)
381+
break
374382

375383
default:
376384
break

0 commit comments

Comments
 (0)