2009-06-15 21 views
1

是否有一種有效的方法可以使用WURFL API基於一組所需的功能以編程方式生成支持的設備列表?通過WURFL功能生成支持的設備列表

例如,我有兩個版本的應用程序;一種運行於諾基亞Series60版本2手機(Symbian 7/8)上,另一種運行於諾基亞Series60版本3手機(Symbian 9)上。我需要將WURFL上的所有手機都顯示在「支持的手機」頁面上,並檢查嘗試下載的用戶的UA,以便我可以將正確版本的應用程序傳遞給他們。

從概念上講,我認爲我找的是這樣的:

 
return all devices that have capabilities := 
    device_os == Symbian OS 
    && nokia_series == 60 
    && (nokia_edition == 2 || nokia_edition == 3) 

我要做到這一點在Java中。

回答

1

我建議使用new Java WURFL API加載並拖動功能數據庫。這種方式非常靈活,你應該能夠很快地實現你的僞代碼。

+0

感謝您的注意。我們已經研究了新的API,雖然它提供了一些更好的方法,但舊API仍然看起來像是黑客,但速度並不快。現在我們正在做,並緩存結果,所以它是確定的。 – beggs 2009-07-03 06:55:19

0

我不知道此任務的API。我不得不處理這個自己,結束了編碼一個公共網站來處理:http://wurfl.ditherandbicker.com/

由於基WURFL XML文件是專爲便攜性,設備的全部能力矩陣必須由一個變量個數讀取派生的「後備設備」。許多其他基於WURFL的項目的行爲方式也是一樣的。根據我的經驗,如果希望通過搜索獲得體面的速度,您確實需要將默認的嵌套數據結構轉換爲平面數據結構。當然,那時你失去了便攜性的好處。

1

所有其他答案都討論瞭如何使用Java WURFL API。但是,爲了加速運行時搜索,我建議在內存中存儲一​​個hashmap或字典,將用戶代理字符串(或原始字符串的精簡版本)映射到其相應的設備信息。數據總量不應該那麼大 - 僅僅是兆字節。此外,WURFL數據相當靜態,因此可以對整個數據集進行離線預處理以構建哈希映射。我通常會定期預處理和更新散列表,序列化對象並在運行時加載它。