4

iPhoneでXMPPフレームワークを使用してチャットアプリケーションを作成しています。メッセージの送受信のプロセスを知りたいのですが。誰かが私にこれに対する解決策を与えることができますか?

前もって感謝します。

4

5 に答える 5

10

XMPPFrameworkをダウンロードして解凍します。中にはいくつかのフォルダがあります。「Xcode」フォルダを開き、「iPhoneXMPP」フォルダを開き、「iPhoneXMPP.xcodeproj」をクリックして実行します。最初にログイン資格情報を要求します。ログインに成功すると、バディリストが表示されます。Gmailでは問題なく動作します。着信メッセージごとに呼び出されるコールバックメソッドが1つあります。

- (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message
{
    user = [xmppRosterStorage userForJID:[message from] xmppStream:sender     managedObjectContext:[self managedObjectContext_roster]];

    if ([message isChatMessageWithBody])
    {
        NSString *body = [[message elementForName:@"body"] stringValue];
    NSString *from = [[message attributeForName:@"from"] stringValue];
        NSMutableDictionary *m = [[NSMutableDictionary alloc] init];
        [m setObject:body forKey:@"msg"];
        [m setObject:from forKey:@"sender"];

        if ([[UIApplication sharedApplication] applicationState] == UIApplicationStateActive)
        {          
             NSLog(@"Applications are in active state");
             //send the above dictionary where ever you want
        }
        else
        {
            NSLog(@"Applications are in Inactive state");
            UILocalNotification *localNotification = [[UILocalNotification alloc] init];
            localNotification.alertAction = @"Ok";
            localNotification.applicationIconBadgeNumber=count;
            localNotification.alertBody =[NSString stringWithFormat:@"From:"%@\n\n%@",from,body];
            [[UIApplication sharedApplication] presentLocalNotificationNow:localNotification];
             //send the above dictionary where ever you want
        }
    }
}

メッセージを送信するには、必要に応じて独自のメソッドを作成する必要があります。

-(void)sendMessage
{
    NSString *messageStr =messageField.text;

    if([messageStr length] > 0)
    {              
        NSLog(@"Message sending fron Gmail");
        NSXMLElement *body = [NSXMLElement elementWithName:@"body"];
        [body setStringValue:messageStr];
        NSXMLElement *message = [NSXMLElement elementWithName:@"message"];
        [message addAttributeWithName:@"type" stringValue:@"chat"];
        [message addAttributeWithName:@"to" stringValue:@"destination address"];
        [message addChild:body];
        NSLog(@"message1%@",message);

        [[self appDelegate].xmppSream sendElement:message];
    }    
}
于 2012-10-10T13:00:49.250 に答える
2

以下のグループ/ルームでメッセージを送信するためのスニペットです

XMPPMessage *message = [XMPPMessage message];
[message addBody:@"123"];
[self.currentRoom sendMessage:message1]; 

Where self.currentRoom is XMPPRoom
于 2014-10-06T13:41:56.547 に答える
1

からメッセージを送信する場合は、Room/Groupこのコードを使用してメッセージを送信します。

[xmppRoom sendMessage:@"Hi All"];

を介してメッセージを送信する必要はありませんxmppStream。この1行のコードは私にとって完璧に機能します。

于 2014-05-14T13:47:33.473 に答える
0

クイックグーグル検索は、C /C++またはObjCのいずれかの多くのXMPPライブラリを明らかにします。個人的には試していませんが、おそらくhttp://code.google.com/p/xmppframework/が出発点として適しています。

于 2011-02-28T07:33:15.583 に答える
0

これは、Swift3のXMPPFrameworkを介してメッセージを送信するためのソリューションです。

let user = XMPPJID(string: "user@jabjab.de")
let msg = XMPPMessage(type: "chat", to: user)
msg?.addBody("Message to send")
self.xmppStream.send(msg)
于 2017-07-19T10:14:55.910 に答える