2012-10-18 60 views
4

在我的應用程序,當我發送到使用此代碼的任何朋友的請求..XMPP存在訂閱

try {    
       roster.createEntry(idExtension, nickname, null); 
       roster.setSubscriptionMode(Roster.SubscriptionMode.manual); 
       Presence subscribe = new Presence(Presence.Type.subscribe); 
       subscribe.setTo(idExtension);    
       connection.sendPacket(subscribe); 


       return true; 
      } catch (XMPPException e) { 
       System.err.println("Error in adding friend"); 
       return false; 
      } 

那麼訂閱說,在雙方的朋友名冊「NONE」。

但它應該是「TO」和「FROM」。

但如果出於同樣的過程中,我使用此代碼 -

try {    
       roster.createEntry(idExtension, nickname, null); 
       roster.setSubscriptionMode(Roster.SubscriptionMode.manual); 
       Presence subscribed = new Presence(Presence.Type.subscribed); 
       subscribed.setTo(idExtension);    
       connection.sendPacket(subscribed); 


       return true; 
      } catch (XMPPException e) { 
       System.err.println("Error in adding friend"); 
       return false; 
      } 

然後,它給了我正確的結果,我應該在前面的情況下得到的。

請告訴我爲什麼我在SUBSCRIBE模式下得不到相同的結果。

謝謝

+0

嗨高拉夫,成功的文件傳輸?如果是的話,請幫助我也這樣做。我堅持這個文件傳輸。 – juned

+0

@juned沒有兄弟,我把這件事放在一邊。現在我已經轉向其他功能。 請幫我在這 - http://stackoverflow.com/questions/13338515/logout-to-add-a-friend-in-xmpp-smack#comment18202063_13338515 –

+0

是啊當然,其實我找到你在Harryjoy的blog.so我以爲你已經完成了文件傳輸。反正沒問題:) – juned

回答

3

我想你沒有得到存在類型的含義。

訂閱 - 發件人希望訂閱收件人的 存在。

訂閱 - 發件人已允許收件人 接收他們的存在。

所以,當你發送的第一個你請求用戶讓你訂閱了他的存在和活動,直到他已經不允許你這樣做的訂閱類型是沒有的。

在第二種情況下,您允許用戶訂閱您的存在,即您允許他聽取您的存在,從而獲得訂閱類型。

+0

在我現在發送訂閱請求的第一種情況下,我正在使用SUBSCRIBE,然後通知用戶。在該通知的允許按鈕上,我將狀態更改爲SUBSCRIBED,但在開放式消息訂閱列表中,我只看到了TO/FROM。但是我想要兩個地位。 如何才能實現相同。 –

+0

您必須從兩端執行此過程。 SP總共有4人出席,其中2人將訂閱類型爲Subscribe和其他2人。 –

+0

我可以和你聊天嗎10分鐘 –