2012-01-27 69 views
0

我正在使用Java中的Google App Engine發送XMPP消息。檢測用戶登錄/註銷xmpp谷歌應用引擎

我想知道是否有方法檢查用戶是否登錄到系統或註銷。所以,當用戶登錄時,我想向他發送一個歡迎聊天消息,當他註銷時,我想通知我的服務器代碼相同。

我已經嘗試了API,但沒有運氣到目前爲止。

回答

0

假設你指的是通過XMPP查詢用戶的存在,請記住,這將如果僅僅工作您的App Engine帳戶授權該用戶。如果你已經有這麼多,查詢存在(用戶登錄/註銷)很簡單(source)。

如果Google Talk用戶已訂閱應用(已接受邀請或已邀請應用聊天),則該應用可通過查找/_ah/xmpp/presence/available的POST來發現用戶的可用性。如果用戶訂購和使用,你可以向他們發送您的應用程序的存在和地位:

    // In the handler for _ah/xmpp/presence/available 
    XMPPService xmppService = XMPPServiceFactory.getXMPPService(); 
    Presence presence = xmppService.parsePresence(req); 
    
    // Split the XMPP address (e.g., [email protected]) 
    // from the resource (e.g., gmail.CD6EBC4A) 
    String from = presence.getFromJid().getId().split("/")[0]; 
    
    // Mirror the contact's presence back to them 
    xmppService.sendPresence(from, PresenceType.AVAILABLE, presence.getPresenceShow(), presence.getStatus()); 
    

    爲了進一步澄清,您的應用程序通過以下POST URL路徑接收自動存在通知

  • POST到/_ah/xmpp/presence/available/表示用戶是可用並提供用戶的聊天狀態。
  • POST到/_ah/xmpp/presence/unavailable/表示用戶爲不可用
  • POST到/_ah/xmpp/presence/probe/請求用戶的當前狀態。

舉個例子,當用戶莎莉日誌中,你會得到一個POST請求/_ah/xmpp/presence/available/您的服務器,然後必須處理。然後當sally註銷時,您將收到一個單獨的POST請求/_ah/xmpp/presence/unavailable/

+0

我正在嘗試這個。 GTalk說,當用戶註銷時,我是否會收到狀態通知? – Jayesh 2012-01-27 13:57:59

+0

@Joy我已經更新了我的答案,現在有意義嗎? – 2012-01-27 14:07:16

+1

如果用戶的狀態在所有IM客戶端_上發生變化,您將收到狀態通知。因此,如果用戶通過gmail和他們的android手機登錄,並且他們關閉了他們的gmail窗口,那麼您將不會(必然會出現與功能相關的一些警告)獲得狀態通知。 – 2012-01-27 14:08:11

相關問題