Skip to content

Commit 960c011

Browse files
authored
Merge pull request #394 from zapcannon87/develop
feat: omit peer id
2 parents 4425158 + 5213705 commit 960c011

File tree

10 files changed

+167
-130
lines changed

10 files changed

+167
-130
lines changed

LeanCloud.xcodeproj/project.pbxproj

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -585,7 +585,7 @@
585585
isa = PBXProject;
586586
attributes = {
587587
LastSwiftUpdateCheck = 1120;
588-
LastUpgradeCheck = 1120;
588+
LastUpgradeCheck = 1200;
589589
ORGANIZATIONNAME = LeanCloud;
590590
TargetAttributes = {
591591
8342FCBA1C7B13A700C3CF15 = {
@@ -842,6 +842,7 @@
842842
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
843843
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
844844
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
845+
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
845846
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
846847
CLANG_WARN_STRICT_PROTOTYPES = YES;
847848
CLANG_WARN_SUSPICIOUS_MOVE = YES;
@@ -902,6 +903,7 @@
902903
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
903904
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
904905
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
906+
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
905907
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
906908
CLANG_WARN_STRICT_PROTOTYPES = YES;
907909
CLANG_WARN_SUSPICIOUS_MOVE = YES;

LeanCloud.xcodeproj/xcshareddata/xcschemes/CLI.xcscheme

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<Scheme
3-
LastUpgradeVersion = "1120"
3+
LastUpgradeVersion = "1200"
44
version = "1.3">
55
<BuildAction
66
parallelizeBuildables = "YES"

LeanCloud.xcodeproj/xcshareddata/xcschemes/LeanCloud.xcscheme

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<Scheme
3-
LastUpgradeVersion = "1120"
3+
LastUpgradeVersion = "1200"
44
version = "1.3">
55
<BuildAction
66
parallelizeBuildables = "YES"

LeanCloud.xcodeproj/xcshareddata/xcschemes/LeanCloudTests.xcscheme

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<Scheme
3-
LastUpgradeVersion = "1120"
3+
LastUpgradeVersion = "1200"
44
version = "1.3">
55
<BuildAction
66
parallelizeBuildables = "YES"

LeanCloud.xcodeproj/xcshareddata/xcschemes/RuntimeTests-iOS.xcscheme

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<Scheme
3-
LastUpgradeVersion = "1120"
3+
LastUpgradeVersion = "1200"
44
version = "1.3">
55
<BuildAction
66
parallelizeBuildables = "YES"

LeanCloudTests/IMMessageTestCase.swift

Lines changed: 93 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -489,96 +489,103 @@ class IMMessageTestCase: RTMBaseTestCase {
489489
}
490490

491491
func testSendMessageToChatRoom() {
492-
guard
493-
let clientA = newOpenedClient(),
494-
let clientB = newOpenedClient()
495-
else
496-
{
492+
guard let client1 = newOpenedClient(clientIDSuffix: "1"),
493+
let client2 = newOpenedClient(clientIDSuffix: "2", options: []),
494+
let client3 = newOpenedClient(clientIDSuffix: "3", options: []) else {
497495
XCTFail()
498496
return
499497
}
500498

501-
let delegatorA = IMClientTestCase.Delegator()
502-
clientA.delegate = delegatorA
503-
let delegatorB = IMClientTestCase.Delegator()
504-
clientB.delegate = delegatorB
505-
506-
var chatRoomA: IMChatRoom? = nil
507-
var chatRoomB: IMChatRoom? = nil
499+
let delegator1 = IMClientTestCase.Delegator()
500+
client1.delegate = delegator1
501+
let delegator2 = IMClientTestCase.Delegator()
502+
client2.delegate = delegator2
503+
let delegator3 = IMClientTestCase.Delegator()
504+
client3.delegate = delegator3
505+
var chatRoom1: IMChatRoom?
506+
var chatRoom2: IMChatRoom?
507+
var chatRoom3: IMChatRoom?
508508

509-
let prepareExp = expectation(description: "create chat room")
510-
prepareExp.expectedFulfillmentCount = 3
511-
try? clientA.createChatRoom(completion: { (result) in
512-
XCTAssertTrue(result.isSuccess)
513-
XCTAssertNil(result.error)
514-
chatRoomA = result.value
515-
prepareExp.fulfill()
516-
if let ID = chatRoomA?.ID {
517-
try? clientB.conversationQuery.getConversation(by: ID, completion: { (result) in
518-
XCTAssertTrue(result.isSuccess)
519-
XCTAssertNil(result.error)
520-
chatRoomB = result.value as? IMChatRoom
521-
prepareExp.fulfill()
522-
try? chatRoomB?.join(completion: { (result) in
509+
expecting(count: 5) { (exp) in
510+
try? client1.createChatRoom(completion: { (result) in
511+
XCTAssertTrue(result.isSuccess)
512+
XCTAssertNil(result.error)
513+
chatRoom1 = result.value
514+
exp.fulfill()
515+
if let ID = chatRoom1?.ID {
516+
try? client2.conversationQuery.getConversation(by: ID) { result in
523517
XCTAssertTrue(result.isSuccess)
524518
XCTAssertNil(result.error)
525-
prepareExp.fulfill()
526-
})
527-
})
528-
}
529-
})
530-
wait(for: [prepareExp], timeout: timeout)
519+
chatRoom2 = result.value as? IMChatRoom
520+
exp.fulfill()
521+
try? chatRoom2?.join(completion: { (result) in
522+
XCTAssertTrue(result.isSuccess)
523+
XCTAssertNil(result.error)
524+
exp.fulfill()
525+
})
526+
}
527+
try? client3.conversationQuery.getConversation(by: ID) { result in
528+
XCTAssertTrue(result.isSuccess)
529+
XCTAssertNil(result.error)
530+
chatRoom3 = result.value as? IMChatRoom
531+
exp.fulfill()
532+
try? chatRoom3?.join(completion: { (result) in
533+
XCTAssertTrue(result.isSuccess)
534+
XCTAssertNil(result.error)
535+
exp.fulfill()
536+
})
537+
}
538+
}
539+
})
540+
}
531541

532-
let sendExp = expectation(description: "send message")
533-
sendExp.expectedFulfillmentCount = 12
534-
delegatorA.messageEvent = { client, conv, event in
535-
if conv === chatRoomA {
542+
expecting(count: 6) { (exp) in
543+
delegator1.messageEvent = { client, conv, event in
536544
switch event {
537-
case .received(message: let message):
538-
XCTAssertEqual(message.content?.string, "test")
539-
sendExp.fulfill()
545+
case .received(message: _):
546+
exp.fulfill()
540547
default:
541548
break
542549
}
543550
}
544-
}
545-
delegatorB.messageEvent = { client, conv, event in
546-
if conv === chatRoomB {
551+
delegator2.messageEvent = { client, conv, event in
547552
switch event {
548-
case .received(message: let message):
549-
XCTAssertEqual(message.content?.string, "test")
550-
sendExp.fulfill()
553+
case .received(message: _):
554+
exp.fulfill()
551555
default:
552556
break
553557
}
554558
}
555-
}
556-
for messagePriority in
557-
[IMChatRoom.MessagePriority.high,
558-
IMChatRoom.MessagePriority.normal,
559-
IMChatRoom.MessagePriority.low]
560-
{
561-
let messageA = IMMessage()
562-
try? messageA.set(content: .string("test"))
563-
((try? chatRoomA?.send(message: messageA, priority: messagePriority, completion: { (result) in
564-
XCTAssertTrue(result.isSuccess)
565-
XCTAssertNil(result.error)
566-
sendExp.fulfill()
567-
})) as ()??)
568-
let messageB = IMMessage()
569-
try? messageB.set(content: .string("test"))
570-
((try? chatRoomB?.send(message: messageB, priority: messagePriority, completion: { (result) in
559+
delegator3.messageEvent = { client, conv, event in
560+
switch event {
561+
case .received(message: _):
562+
exp.fulfill()
563+
default:
564+
break
565+
}
566+
}
567+
try? chatRoom1?.send(message: IMTextMessage(text: "1"), priority: .high, completion: { (result) in
571568
XCTAssertTrue(result.isSuccess)
572569
XCTAssertNil(result.error)
573-
sendExp.fulfill()
574-
})) as ()??)
570+
exp.fulfill()
571+
try? chatRoom2?.send(message: IMTextMessage(text: "2"), priority: .high, completion: { (result) in
572+
XCTAssertTrue(result.isSuccess)
573+
XCTAssertNil(result.error)
574+
exp.fulfill()
575+
})
576+
})
575577
}
576-
wait(for: [sendExp], timeout: timeout)
577578

578-
XCTAssertNil(chatRoomA?.lastMessage)
579-
XCTAssertNil(chatRoomB?.lastMessage)
580-
XCTAssertTrue((chatRoomA?.members ?? []).isEmpty)
581-
XCTAssertTrue((chatRoomB?.members ?? []).isEmpty)
579+
delegator1.reset()
580+
delegator2.reset()
581+
delegator3.reset()
582+
583+
XCTAssertNil(chatRoom1?.lastMessage)
584+
XCTAssertNil(chatRoom2?.lastMessage)
585+
XCTAssertNil(chatRoom3?.lastMessage)
586+
XCTAssertTrue((chatRoom1?.members ?? []).isEmpty)
587+
XCTAssertTrue((chatRoom2?.members ?? []).isEmpty)
588+
XCTAssertTrue((chatRoom3?.members ?? []).isEmpty)
582589
}
583590

584591
func testReceiveMessageFromServiceConversation() {
@@ -678,10 +685,10 @@ class IMMessageTestCase: RTMBaseTestCase {
678685
func testTextMessageSendingAndReceiving() {
679686
let message = IMTextMessage()
680687
message.text = "test"
681-
let success = sendingAndReceiving(sentMessage: message) { (rMessage) in
688+
let success = sendingAndReceiving(sentMessage: message, receivedMessageChecker: { (rMessage) in
682689
XCTAssertNotNil(rMessage?.text)
683690
XCTAssertEqual(rMessage?.text, message.text)
684-
}
691+
})
685692
XCTAssertTrue(success)
686693
}
687694

@@ -692,7 +699,7 @@ class IMMessageTestCase: RTMBaseTestCase {
692699
filePath: bundleResourceURL(name: "test", ext: format).path,
693700
format: format
694701
)
695-
XCTAssertTrue(sendingAndReceiving(sentMessage: outMessage) { (inMessage) in
702+
XCTAssertTrue(sendingAndReceiving(sentMessage: outMessage, receivedMessageChecker: { (inMessage) in
696703
XCTAssertNotNil(inMessage?.file?.objectId?.value)
697704
XCTAssertEqual(inMessage?.format, format)
698705
XCTAssertNotNil(inMessage?.size)
@@ -705,7 +712,7 @@ class IMMessageTestCase: RTMBaseTestCase {
705712
XCTAssertEqual(inMessage?.height, outMessage.height)
706713
XCTAssertEqual(inMessage?.width, outMessage.width)
707714
XCTAssertEqual(inMessage?.url, outMessage.url)
708-
})
715+
}))
709716
}
710717
}
711718

@@ -763,7 +770,7 @@ class IMMessageTestCase: RTMBaseTestCase {
763770
file.keepFileName = true
764771
file.name = name.lcString
765772
message.file = file
766-
let success = sendingAndReceiving(sentMessage: message) { (rMessage) in
773+
let success = sendingAndReceiving(sentMessage: message, receivedMessageChecker: { (rMessage) in
767774
XCTAssertNotNil(rMessage?.file?.objectId?.value)
768775
XCTAssertEqual(rMessage?.name, name)
769776
XCTAssertEqual(rMessage?.format, format)
@@ -773,7 +780,7 @@ class IMMessageTestCase: RTMBaseTestCase {
773780
XCTAssertEqual(rMessage?.format, message.format)
774781
XCTAssertEqual(rMessage?.size, message.size)
775782
XCTAssertEqual(rMessage?.url, message.url)
776-
}
783+
})
777784
XCTAssertEqual(message.name, name)
778785
XCTAssertEqual(message.url?.absoluteString.hasSuffix(name), true)
779786
XCTAssertTrue(success)
@@ -782,12 +789,12 @@ class IMMessageTestCase: RTMBaseTestCase {
782789
func testLocationMessageSendingAndReceiving() {
783790
let message = IMLocationMessage()
784791
message.location = LCGeoPoint(latitude: 180.0, longitude: 90.0)
785-
let success = sendingAndReceiving(sentMessage: message) { (rMessage) in
792+
let success = sendingAndReceiving(sentMessage: message, receivedMessageChecker: { (rMessage) in
786793
XCTAssertEqual(rMessage?.latitude, 180.0)
787794
XCTAssertEqual(rMessage?.longitude, 90.0)
788795
XCTAssertEqual(rMessage?.latitude, message.latitude)
789796
XCTAssertEqual(rMessage?.longitude, message.longitude)
790-
}
797+
})
791798
XCTAssertTrue(success)
792799
}
793800

@@ -1463,15 +1470,21 @@ extension IMMessageTestCase {
14631470

14641471
func newOpenedClient(
14651472
clientID: String? = nil,
1466-
options: IMClient.Options = [.receiveUnreadMessageCountAfterSessionDidOpen])
1467-
-> IMClient?
1473+
clientIDSuffix: String? = nil,
1474+
options: IMClient.Options = [.receiveUnreadMessageCountAfterSessionDidOpen]) -> IMClient?
14681475
{
1469-
var client: IMClient? = try? IMClient(ID: clientID ?? uuid, options:options)
1476+
var ID = clientID ?? uuid
1477+
if let suffix = clientIDSuffix {
1478+
ID += "-\(suffix)"
1479+
}
1480+
var client: IMClient? = try? IMClient(ID: ID, options:options)
14701481
let exp = expectation(description: "open")
14711482
client?.open { (result) in
14721483
XCTAssertTrue(result.isSuccess)
14731484
XCTAssertNil(result.error)
1474-
if result.isFailure { client = nil }
1485+
if result.isFailure {
1486+
client = nil
1487+
}
14751488
exp.fulfill()
14761489
}
14771490
wait(for: [exp], timeout: timeout)

LeanCloudTests/RTMBaseTestCase.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,6 @@ class RTMBaseTestCase: BaseTestCase {
1313

1414
static let useTestableRTMURL = false
1515
static let testableRTMURL = RTMBaseTestCase.useTestableRTMURL
16-
? URL(string: "wss://cn-n1-core-k8s-cell-12.leancloud.cn")!
16+
? URL(string: "wss://cn-n1-prod-k8s-cell-12.leancloud.cn")!
1717
: nil
1818
}

Sources/RTM/IMClient.swift

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -147,24 +147,26 @@ public class IMClient {
147147
}
148148
}
149149

150-
/// ref: `https://github.com/leancloud/avoscloud-push/blob/develop/push-server/doc/protocol.md`
150+
/// ref: https://github.com/leancloud/avoscloud-push/tree/master/doc/protocols
151151
struct SessionConfigs: OptionSet {
152152
let rawValue: Int64
153153

154-
static let patchMessage = SessionConfigs(rawValue: 1 << 0)
155-
static let temporaryConversationMessage = SessionConfigs(rawValue: 1 << 1)
156-
static let autoBindDeviceidAndInstallation = SessionConfigs(rawValue: 1 << 2)
157-
static let transientMessageACK = SessionConfigs(rawValue: 1 << 3)
158-
static let notification = SessionConfigs(rawValue: 1 << 4)
159-
static let partialFailedMessage = SessionConfigs(rawValue: 1 << 5)
160-
static let groupChatRCP = SessionConfigs(rawValue: 1 << 6)
154+
static let patchMessage = SessionConfigs(rawValue: 1 << 0)
155+
static let temporaryConversationMessage = SessionConfigs(rawValue: 1 << 1)
156+
static let autoBindDeviceIDAndInstallation = SessionConfigs(rawValue: 1 << 2)
157+
static let transientMessageACK = SessionConfigs(rawValue: 1 << 3)
158+
static let keepNotification = SessionConfigs(rawValue: 1 << 4)
159+
static let partialFailedMessage = SessionConfigs(rawValue: 1 << 5)
160+
static let groupChatReceipt = SessionConfigs(rawValue: 1 << 6)
161+
static let omitPeerID = SessionConfigs(rawValue: 1 << 7)
161162

162163
static let support: SessionConfigs = [
163164
.patchMessage,
164165
.temporaryConversationMessage,
165166
.transientMessageACK,
166-
.notification,
167-
.partialFailedMessage
167+
.keepNotification,
168+
.partialFailedMessage,
169+
.omitPeerID,
168170
]
169171
}
170172

0 commit comments

Comments
 (0)