国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

通過Push信息來自動(dòng)啟動(dòng)JAVA移動(dòng)應(yīng)用程序

2019-11-17 05:57:37
字體:
供稿:網(wǎng)友

添加MIDP 2.0的Push注冊(cè)特征到你的設(shè)備應(yīng)用程序中 摘  要
有些時(shí)候,對(duì)于一個(gè)企業(yè)級(jí)移動(dòng)應(yīng)用程序,從服務(wù)器將信息推向移動(dòng)設(shè)備,并且自動(dòng)激活一個(gè)已安裝的移動(dòng)應(yīng)用程序使其進(jìn)行必要的處理是非常重要的。由短信服務(wù)(SMS)作為推信息的協(xié)議,使用push注冊(cè)機(jī)制可以讓使用Mobile Information Device PRofile 2.0的java微小版本應(yīng)用程序擁有這一特征。

版權(quán)聲明:任何獲得Matrix授權(quán)的網(wǎng)站,轉(zhuǎn)載時(shí)請(qǐng)務(wù)必保留以下作者信息和鏈接
作者:Srijeeb Roy ;magic003(作者的blog:http://blog.matrix.org.cn/page/magic003)
原文:http://www.matrix.org.cn/resource/article/44/44449_Push+JAVA+Mobile.Html
要害字:Push;JAVA;mobile

移動(dòng)技術(shù)日漸流行。Java微小版本,或者叫Java ME(Sun的J2ME平臺(tái)的新名字),是最流行的開發(fā)移動(dòng)應(yīng)用程序的技術(shù)之一。使用Java ME,我們可以在使用JVM或KVM的手持設(shè)備上運(yùn)行多種無線應(yīng)用程序。

Connected Limited Device Configuration (CLDC)被包含在Java ME中,它是面向那些只擁有有限資源,使用KVM的設(shè)備。同樣,Mobile Information Device Profile(MIDP)也被包含在Java ME中,這是一個(gè)為了在手機(jī)上運(yùn)行應(yīng)用程序的基于CLDC的profile。運(yùn)行在移動(dòng)設(shè)備中的應(yīng)用程序模塊叫做MIDlet,是一個(gè)MIDP應(yīng)用程序。一個(gè)MIDlet主要是一組有序運(yùn)行的類,并且它們由運(yùn)行在移動(dòng)設(shè)備中的應(yīng)用程序治理軟件(AMS)所控制。

MIDP的最新版本(2.0)引入了很多新的特征來幫助開發(fā)者建立健壯的企業(yè)級(jí)應(yīng)用程序。其中一個(gè)比較重要的特征就是push注冊(cè)機(jī)制。在Java ME應(yīng)用程序中,我們有時(shí)候需要從服務(wù)器推數(shù)據(jù),并在設(shè)備上自動(dòng)啟動(dòng)一個(gè)移動(dòng)應(yīng)用程序,而不需要由用戶明確的啟動(dòng)設(shè)備。設(shè)想一種情形,當(dāng)一個(gè)針對(duì)他/她的名字的工作條款被建立時(shí),用戶必須能自動(dòng)得到通知,并且必須盡快地對(duì)此工作條款做出反應(yīng)。Java ME的push注冊(cè)機(jī)制能夠很輕易地將信息推向一個(gè)Java ME應(yīng)用程序,并自動(dòng)啟動(dòng)該程序。在這篇文章中,我將向你展示如何將push注冊(cè)機(jī)制特征添加到你的移動(dòng)應(yīng)用程序中。

Push注冊(cè)機(jī)制的行為可以被描述為如下三個(gè)步驟:

1.MIDlet在移動(dòng)設(shè)備中注冊(cè)一個(gè)連同協(xié)議名稱的端口,假如任何信息到達(dá)指定的端口,并且使用相同的協(xié)議,那么AMS就將它轉(zhuǎn)交給MIDlet。注冊(cè)使用Java ME應(yīng)用程序描述符(JAD)文件靜態(tài)的完成。程序也能使用應(yīng)用程序內(nèi)置的API執(zhí)行動(dòng)態(tài)注冊(cè)。

2. 從服務(wù)器,信息被發(fā)送到特定的移動(dòng)設(shè)備,使用MIDlet應(yīng)用程序注冊(cè)監(jiān)聽的協(xié)議和端口。

3. 在信息被傳遞到移動(dòng)設(shè)備后,AMS調(diào)用注冊(cè)了監(jiān)聽此端口和協(xié)議的MIDlet應(yīng)用程序。一旦信息被轉(zhuǎn)交到MIDlet,那么處理信息就是此應(yīng)用程序的責(zé)任了。典型的,根據(jù)信息的信息的內(nèi)容,一個(gè)應(yīng)用程序會(huì)選擇打開一個(gè)屏幕,并答應(yīng)用戶與服務(wù)器進(jìn)行一些事務(wù)。

在這篇文章的例子中,為了從服務(wù)器推信息,我們將使用一個(gè)GSM(移動(dòng)通信全球系統(tǒng))調(diào)制解調(diào)器。圖1較高層次地描述了我們將在此文中實(shí)現(xiàn)的場(chǎng)景。


圖1. 從服務(wù)器push SMS消息到移動(dòng)設(shè)備的高層場(chǎng)景

在jad文件中,每一個(gè)push注冊(cè)條目都包含如下信息:MIDlet-Push-<n>: <ConnectionURL>, <MIDletClassName>, <AllowedSender>。

MIDlet-Push-<n>:push注冊(cè)屬性名稱。MIDlet套件中可以包含多條push注冊(cè)。<n>的數(shù)值從1開始,并且對(duì)于附加的條目必須使用連續(xù)的序數(shù)。第一個(gè)發(fā)現(xiàn)的缺失條目將中止列表。任何剩余的條目都會(huì)被忽略。
ConnectionURL:被Connector.open()使用的連接字符串。
MIDletClassName:負(fù)責(zé)連接的MIDlet。指定的MIDlet必須使用MIDlet-<n>記錄在描述文件或jar文件的manifest中登記過。
AllowedSender:一個(gè)指定的過濾器,        它將限制哪些發(fā)送者能夠能正當(dāng)啟動(dòng)請(qǐng)求的MIDlet。

MIDP 2.0 規(guī)范定義了數(shù)據(jù)報(bào)和socket帶內(nèi)連接的語法。當(dāng)其他規(guī)范為其他連接類型定義push 語義時(shí),它們必須既定義過濾器域期望的語法,又定義連接URL字符串的期望格式。

在jad文件中,一個(gè)push注冊(cè)的典型例子,使用socket連接,類似于如下:
MIDlet-Push-1: socket://:77, com.sample.Sampleapplication, *.
這個(gè)示例描述符條目在77端口處保存一個(gè)流套接字,并且答應(yīng)所有的發(fā)送者。

從服務(wù)器推信息到移動(dòng)設(shè)別會(huì)帶來一些問題:假如我們想發(fā)送信息到一個(gè)在指定端口注冊(cè)了監(jiān)聽流套接字的特定設(shè)備,我們必須知道那個(gè)移動(dòng)電話的無線網(wǎng)絡(luò)ip。因?yàn)樵跓o線網(wǎng)絡(luò)中,很多手機(jī)不使用始終連接環(huán)境(有時(shí)候,提供商不支持設(shè)備中網(wǎng)絡(luò)中的靜態(tài)IP),發(fā)送信息到設(shè)備是有問題的。假如我們不知道設(shè)備的無線IP,我們將不能使用套接字連接從服務(wù)器發(fā)送信息到設(shè)備。

短信服務(wù)(SMS)在這種情況下派上了用場(chǎng)。使用SMS,我們指定目標(biāo)設(shè)備的電話號(hào)碼;因此在這種情況下,我們不需要知道設(shè)備的IP地址。但是,使用SMS作為觸發(fā)器同樣會(huì)帶來一些問題:因?yàn)镸IDP2.0規(guī)范只定義了針對(duì)數(shù)據(jù)報(bào)和套接字帶內(nèi)連接的語法,而沒有針對(duì)SMS連接的,所以不保證所有支持MIDP2.0的設(shè)備都能使用SMS作為觸發(fā)器來進(jìn)行push注冊(cè)。但無線消息API(WMA1.1)-一個(gè)在MIDP上能支持SMS的的可選包-現(xiàn)在得到很多移動(dòng)設(shè)備的支持,所以有更大的可能性,SMS作為push注冊(cè)機(jī)制的觸發(fā)器將得到很多設(shè)備的支持。對(duì)于這篇文章,我使用Nokia 6600移動(dòng)電話,它是支持SMS作為push注冊(cè)機(jī)制的觸發(fā)器的。

另外,從服務(wù)器發(fā)送一條SMS消息到設(shè)備不是簡(jiǎn)單直接的,因?yàn)橛泻芏嗤緩酱嬖?。SMS服務(wù)提供商提供API(或者暴露服務(wù)URL),通過這些API你能從你的服務(wù)器端應(yīng)用程序發(fā)送消息到你指定的移動(dòng)電話上。但這種方法依靠于SMS服務(wù)提供商和它非凡的計(jì)劃。可選的方式是使用一個(gè)GSM調(diào)制解調(diào)器,這樣你需要使GSM調(diào)制解調(diào)器與你的服務(wù)器端應(yīng)用程序進(jìn)行交互。在這篇文章中,我將使用一個(gè)開源的產(chǎn)品,SMSLib for Java V1.0(原名jSMSEngine),它能使GSM調(diào)制解調(diào)器與你的Java服務(wù)器端程序進(jìn)行交互。

另一個(gè)在此需要注重的要點(diǎn)是一條簡(jiǎn)單的SMS消息將不會(huì)激活MIDlet。我們必須發(fā)送SMS消息到MIDlet注冊(cè)監(jiān)聽的特定的端口。因此被用來發(fā)送SMS消息的軟件(或SMS服務(wù)提供商)必須能夠?qū)⑺l(fā)送到設(shè)備指定的端口。SMSLib for Java v1.0 支持這一功能。

當(dāng)我們使用GSM調(diào)制解調(diào)器方案,我們必須了解GSM調(diào)制解調(diào)器將在內(nèi)部使用SIM(訂戶識(shí)別模塊)卡來發(fā)送SMS消息。SIM卡依靠于某個(gè)移動(dòng)服務(wù)提供商。因此每條SMS短信將帶來與從常規(guī)GSM移動(dòng)電話發(fā)送消息同樣的花費(fèi)。正相反,對(duì)于一個(gè)企業(yè)級(jí)應(yīng)用(依靠于服務(wù)計(jì)劃),通過提供商的SMS網(wǎng)關(guān)發(fā)送批量SMS消息會(huì)被證實(shí)更節(jié)省開銷。但是,假如應(yīng)用程序不需要發(fā)送大量SMS消息來出發(fā)MIDlet,那么GSM調(diào)制解調(diào)器方案會(huì)是有效的開銷,并能從移動(dòng)服務(wù)提供商那里取消非凡的批量SMS服務(wù)依靠。

雖然我建議為了近期的產(chǎn)品使用購買一個(gè)單獨(dú)的GSM調(diào)制解調(diào)器,但是測(cè)試此行為不要求夠買。通常地,很多GSM移動(dòng)電話模型帶有一個(gè)內(nèi)置的GSM調(diào)制解調(diào)器。那些移動(dòng)模型中的任何一個(gè)都能夠作為GSM調(diào)制解調(diào)器,來代替單獨(dú)的調(diào)制解調(diào)器。在這篇文章中,我使用另外一個(gè)Nokia 6600移動(dòng)電話,而不是一個(gè)單獨(dú)的GSM調(diào)制解調(diào)器,因?yàn)镹okia 6600有一個(gè)內(nèi)置的GSM調(diào)制解調(diào)器。

現(xiàn)在,讓我們開發(fā)一個(gè)實(shí)例程序,是我們能夠從一個(gè)Java服務(wù)器端應(yīng)用程序發(fā)送一條SMS消息到一個(gè)移動(dòng)電話的指定端口,并自動(dòng)啟動(dòng)移動(dòng)設(shè)備中的一個(gè)MIDlet。

使用push注冊(cè)特征開發(fā)客戶端MIDlet

為了開發(fā)客戶端,我們使用Sun Java Wireless Toolkit(原名為J2ME Wireless Toolkit)。我使用版本2.2。這個(gè)產(chǎn)品是免費(fèi)的,可以從Sun的網(wǎng)站下載。為了安裝和運(yùn)行此工具包,你必須在你的機(jī)器上裝有J2SE 1.4.2_02或更新的版本。

我使用windows 2000 Professional 操作系統(tǒng)。

安裝Sun的工具包后,按照如下描述的步驟:

1.從開始菜單打開KToolBar:選擇程序,然后J2ME Wireless Toolkit 2.2,然后KToolbar。將會(huì)打開一個(gè)應(yīng)用程序窗口,如圖2所以。




發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 盐池县| 饶河县| 竹山县| 屏南县| 平遥县| 翼城县| 肥乡县| 泸州市| 苗栗县| 镇赉县| 常山县| 鹰潭市| 岳普湖县| 钦州市| 翁源县| 普宁市| 长垣县| 克什克腾旗| 历史| 佛冈县| 黄大仙区| 巴南区| 沙河市| 泽州县| 登封市| 白水县| 石林| 安岳县| 迭部县| 东乡| 凤凰县| 喜德县| 鄂托克前旗| 莲花县| 和顺县| 双鸭山市| 阜新| 莱州市| 海伦市| 颍上县| 新巴尔虎右旗|