招待状を送信すると、この関数が呼び出されますが 、招待状を受け入れるためにどのコード行を使用すればよいかわかりません*。受信メッセージ機能とも呼ばれるマルチユーザーおよびマルチグループの招待状を作成しようとしています。
- (void)xmppMUC:(XMPPMUC *) sender roomJID:(XMPPJID *) roomJID didReceiveInvitation:(XMPPMessage *)message
{
}
招待状を送信すると、この関数が呼び出されますが 、招待状を受け入れるためにどのコード行を使用すればよいかわかりません*。受信メッセージ機能とも呼ばれるマルチユーザーおよびマルチグループの招待状を作成しようとしています。
- (void)xmppMUC:(XMPPMUC *) sender roomJID:(XMPPJID *) roomJID didReceiveInvitation:(XMPPMessage *)message
{
}
これで、グループの招待を受け入れることができます。以下のように XMPPMUC プロトコルを有効にするだけです。
XMPPMUC * xmppMUC = [[XMPPMUC alloc] initWithDispatchQueue:dispatch_get_main_queue()];
[xmppMUC activate:_xmppStream];
[xmppMUC addDelegate:self delegateQueue:dispatch_get_main_queue()];
MUC への招待を受け入れるには:
- (void)xmppMUC:(XMPPMUC *)sender didReceiveRoomInvitation:(XMPPMessage *)message
{
NSXMLElement * x = [message elementForName:@"x" xmlns:XMPPMUCUserNamespace];
NSXMLElement * invite = [x elementForName:@"invite"];
if (!isEmpty(invite))
{
NSString * conferenceRoomJID = [[message attributeForName:@"from"] stringValue];
[self joinMultiUserChatRoom:conferenceRoomJID];
}
}
- (void) joinMultiUserChatRoom:(NSString *) newRoomName
{
XMPPJID *roomJID = [XMPPJID jidWithString:newRoomName];
XMPPRoomMemoryStorage *roomMemoryStorage = [[XMPPRoomMemoryStorage alloc] init];
xmppRoom = [[XMPPRoom alloc]
initWithRoomStorage:roomMemoryStorage
jid:roomJID
dispatchQueue:dispatch_get_main_queue()];
[xmppRoom activate:[self xmppStream]];
[xmppRoom addDelegate:self delegateQueue:dispatch_get_main_queue()];
[xmppRoom joinRoomUsingNickname:@"YOUR NICKNAME" history:nil];
}
私の場合、両方の答えを使用し、自己のように定義する必要があります
@interface XMPPDelegate : NSObject <XMPPMUCDelegate>
以下のように XMPPMUC プロトコルを有効にします。
XMPPMUC * xmppMUC = [[XMPPMUC alloc]
initWithDispatchQueue:dispatch_get_main_queue()];
[xmppMUC activate:_xmppStream];
[xmppMUC addDelegate:self delegateQueue:dispatch_get_main_queue()];
参加メッセージを受信:
- (void)xmppMUC:(XMPPMUC *)sender roomJID:(XMPPJID *) roomJID didReceiveInvitation:(XMPPMessage *)message
{
DDLogDebug(@"%@", message);
XMPPRoomMemoryStorage *roomMemoryStorage = [[XMPPRoomMemoryStorage alloc] init];
XMPPRoom *xmppRoom = [[XMPPRoom alloc] initWithRoomStorage:roomMemoryStorage jid:roomJID dispatchQueue:dispatch_get_main_queue()];
[xmppRoom activate:xmppStream];
[xmppRoom addDelegate:self delegateQueue:dispatch_get_main_queue()];
[xmppRoom joinRoomUsingNickname: xmppStream.myJID.user history:nil password:password];
XMPPPresence *presence = [XMPPPresence presence];
[[self xmppStream] sendElement:presence];
[xmppRoster addUser:roomJID withNickname:roomJID.full];
[self goOnline];
}