2011-10-27 41 views
0

這是隱藏的谷歌與其內部系統共享的東西(Gmail也使用Android圖標),還是隻是在正常的Jabber流量內發送的數據,其他客戶端忽略?android如何知道我的哪些聯繫人正在使用android&應該得到一個android圖標?

編輯:

我指的是 「怎樣的Android/Gmail的知道什麼時候這些圖標關聯:」

Android Avarar

而不是默認的:

Standard avatar

+0

我不能確定你的意思,你能擴大你的問題,也許舉個例子?如果您的意思是聯繫人照片:如果您沒有指定自定義聯繫人圖標,則Android(或大多數聯繫人應用)默認顯示一個Android圖標。 – poke

+0

添加了視覺效果。不意味着模糊。 –

回答

4

XMPP specification定義了一個resource identifier客戶可以使用我識別自己。通過Android連接的客戶端通常具有資源標識符,該標識符以ANDROID開頭,因此很容易識別連接的Android客戶端。

這取決於您的客戶端,如果您能夠看到資源標識符本身。例如,我使用Trillian連接到Google Talk和其他XMPP系統,並在聯繫人列表中顯示客戶端的資源標識符。如果多個客戶端連接到同一個帳戶,這也允許您查看哪些客戶端連接(如顯示每個使用的標識符)。

+0

額外信息解釋多個帳戶是一個很好的觸摸。謝謝。 –

+0

請假設你的資源是完全不透明的袋子。如果您將語義分配給您的資源,則在您希望使用XEP-0115(http://xmpp.org/extensions/xep-0115.html)的地方會有大約18個月的時間,它太晚了。 –

+0

@JoeHildebrand謹慎解釋你的意思? – poke

0

@poke問我一些關於我的評論。

人們傾向於設備標識的第一種方式是將設備名稱編碼到該設備使用的JID的資源部分,如[email protected]/MYCLIENT[email protected]/MYCLIENT_[random string],然後在資源上進行字符串匹配。這似乎會工作一段時間,直到您需要爲另一個設備編寫另一個客戶端,此時,您可能已將該客戶端的身份以及該客戶端的功能編碼到資源中字符串和東西開始變得艱難。

更好的解決方案是使用XEP-0115。仔細閱讀How-it-works部分非常。第一次閱讀時,大多數人都覺得這是一個令人困惑的想法。摘要:

<presence from='[email protected]/orchard'> 
    <c xmlns='http://jabber.org/protocol/caps' 
    hash='sha-1' 
    node='http://code.google.com/p/exodus' 
    ver='QgayPKawpkPSDYmwT/WM94uAlu0='/> 
</presence> 

當聯繫人發送出席,她增加了一個功能標籤,其中包括一個節點名,這僅僅是一個URI你補這說明你的客戶。這個URI可以用來選擇一個圖標,或者我們會找到另一種方法。

接下來,你問發件人是什麼噁心版本字符串表示:

<iq from='[email protected]/chamber' 
    id='disco1' 
    to='[email protected]/orchard' 
    type='get'> 
    <query xmlns='http://jabber.org/protocol/disco#info' 
     node='http://code.google.com/p/exodus#QgayPKawpkPSDYmwT/WM94uAlu0='/> 
</iq> 

然後你CACHE結果:

<iq from='[email protected]/orchard' 
    id='disco1' 
    to='[email protected]/chamber' 
    type='result'> 
    <query xmlns='http://jabber.org/protocol/disco#info' 
     node='http://code.google.com/p/exodus#QgayPKawpkPSDYmwT/WM94uAlu0='> 
    <identity category='client' name='Exodus 0.9.1' type='pc'/> 
    <feature var='http://jabber.org/protocol/caps'/> 
    <feature var='http://jabber.org/protocol/disco#info'/> 
    <feature var='http://jabber.org/protocol/disco#items'/> 
    <feature var='http://jabber.org/protocol/muc'/> 
    </query> 
</iq> 

做一些標準化,你可以SHA1哈希後結果,並確保哈希匹配icky ver字符串。現在,任何給你散列的人都知道他們的能力。如果您需要指定非標準功能,只需製作自己的URI來描述它們,然後將功能添加到您的大寫字母。

最後,如果您不想在向混合中添加新客戶端時嘗試修改所有客戶端,則可以在大括號中包含一個擴展名,該擴展名僅指定客戶端圖標的URL。 XEP-0232(被推遲,但不能從,如果你想使用它阻止你,如果有人得了興奮可以復活)指出:

<iq from='[email protected]/chamber' 
    to='[email protected]/orchard' 
    id='disco1' 
    type='result'> 
    <query xmlns='http://jabber.org/protocol/disco#info' 
     node='http://code.google.com/p/exodus#RnWHG/MCjSwxZCk+p2kuN7i9kzo='> 
    <x xmlns='jabber:x:data' type='result'> 
     <field var='FORM_TYPE' type='hidden'> 
     <value>urn:xmpp:dataforms:softwareinfo</value> 
     </field> 
     <field var='icon'> 
     <media xmlns='urn:xmpp:media-element' 
       height='80' 
       width='290'> 
      <uri type='image/jpeg'>http://www.shakespeare.lit/clients/exodus.jpg</uri> 
      <uri type='image/jpeg'>cid:[email protected]</uri> 
     </media> 
     </field> 
    </x> 
    </query> 
</iq> 
相關問題