1

ログに記録されたステータスを変更するために、次のコードを使用しました。

    XMPPPresence *presence = [XMPPPresence presenceWithType:@"away"];
    [[self xmppStream] sendElement:presence];

しかし、私はの参照を取得していません[self xmppStream]。そこで、次のコードに変更しました。

    XMPPPresence *presence = [XMPPPresence presence];
    NSXMLElement *status = [NSXMLElement elementWithName:@"status"];
    [status setStringValue:@"away"];
    [presence addChild:status];
    NSError *error = nil;

    xmppStream = [[XMPPStream alloc] init];
    [xmppStream disconnect];
    NSString *myJID = [NSString stringWithFormat:@"%@", appDelegate.jid];
    XMPPJID *JID;        
    JID = [XMPPJID jidWithString:myJID];
    NSLog(@"%@",JID);
    [xmppStream setMyJID:JID];
    xmppStream.hostName=@"talk.google.com";

    [xmppStream connect:&error];        
    [xmppStream sendElement:presence];

まだ変更されたステータスを取得していません。あなたのアイデアを共有してください。前もって感謝します。

4

2 に答える 2

1

xmppStreamDidAuthenticateデリゲート をリッスンして、接続してスタンザを送信するまで待つ必要があります。

また、プレゼンスをブロードキャストするときに、わざわざJIDとの間で設定する必要はありません。

于 2012-12-29T07:45:15.143 に答える
1

goOnline後に呼び出されるメソッドを介してログインした直後に、ステータスを変更できますxmppStreamDidAuthenticate

- (void)goOnline
{
    // Initialize XMPPPresence variable
    XMPPPresence *presence = [XMPPPresence presence];

    // Initialize XML element <show/> for specifying your status
    NSXMLElement *show = [NSXMLElement elementWithName:@"show"];

    // Initialize XML element <status/> for describing your status
    NSXMLElement *status = [NSXMLElement elementWithName:@"status"];

    // If you want your user status to be shown as "Available"
    [show setStringValue:@"chat"];
    [status setStringValue:@"Available"];

    // If you want your user status to be shown as "Busy"
    [show setStringValue:@"dnd"];
    [status setStringValue:@"Busy"];

    // If you want your user status to be shown as "Away"
    [show setStringValue:@"away"];
    [status setStringValue:@"Away"];

    // If you want your user status to be shown as "Off-day"
    [show setStringValue:@"xa"];
    [status setStringValue:@"Off-day"];

    // Add the XML elements to XMPPPresence
    [presence addChild:show];
    [presence addChild:status];

    // Update new presence to server
    [xmppStream sendElement:presence];
}

上記の私のコードの詳細と説明については、XMPPPresenceをAway / Busy/Invisibleに変更するにアクセスしてください。

于 2014-07-16T13:12:58.077 に答える