移動(dòng)運(yùn)營(yíng)商通知和系統(tǒng)事件_第1頁(yè)
移動(dòng)運(yùn)營(yíng)商通知和系統(tǒng)事件_第2頁(yè)
移動(dòng)運(yùn)營(yíng)商通知和系統(tǒng)事件_第3頁(yè)
移動(dòng)運(yùn)營(yíng)商通知和系統(tǒng)事件_第4頁(yè)
移動(dòng)運(yùn)營(yíng)商通知和系統(tǒng)事件_第5頁(yè)
已閱讀5頁(yè),還剩60頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

移動(dòng)運(yùn)營(yíng)商通知和系統(tǒng)事件摘要本白皮書(shū)提供有關(guān)Windows8的移動(dòng)運(yùn)營(yíng)商通知系統(tǒng)事件的信息。它向移動(dòng)運(yùn)營(yíng)商提供了用于開(kāi)發(fā)移動(dòng)寬帶Metro風(fēng)格應(yīng)用的指南,從而可以有效處理基于SMS或USSD的傳入移動(dòng)運(yùn)營(yíng)商通知和相關(guān)移動(dòng)寬帶系統(tǒng)事件。本書(shū)假定讀者熟悉Windows移動(dòng)寬帶平臺(tái)和Metro風(fēng)格應(yīng)用開(kāi)發(fā)的基本概念。該信息適用于以下操作系統(tǒng):

Windows8 此處討論的參考和資源均會(huì)在本書(shū)末尾部分列出。本白皮書(shū)的當(dāng)前版本在以下Web維護(hù):

移動(dòng)運(yùn)營(yíng)商通知和系統(tǒng)事件免責(zé)聲明:本文檔按“原樣”提供。本文檔中所表達(dá)的信息和觀點(diǎn)(包括URL和其他Internet網(wǎng)站引用)如有更改,恕不另行通知。有些信息涉及預(yù)發(fā)行的產(chǎn)品,它在商業(yè)發(fā)布之前可能會(huì)大幅修改。Microsoft對(duì)在這里提供的信息不做任何明示或暗示的擔(dān)保。使用本文檔所帶來(lái)的風(fēng)險(xiǎn)由你自行承擔(dān)。此處所描述的一些例子是僅為演示的目的而虛構(gòu)。與真實(shí)世界無(wú)實(shí)際關(guān)聯(lián),也不應(yīng)以此作為推斷。本文檔不賦予任何Microsoft產(chǎn)品中的知識(shí)產(chǎn)權(quán)的法律權(quán)利。你可以復(fù)制和使用本文件作為內(nèi)部參考。?2021Microsoft。保留所有權(quán)利。文檔歷史記錄日期更改2021年8月15日更新了“ProfileConnected和ProfileDisconnected”中的信息,增加了有關(guān)“在元數(shù)據(jù)中更改后臺(tái)任務(wù)注冊(cè)”和“驗(yàn)證是否已成功應(yīng)用設(shè)置元數(shù)據(jù)”的信息,并且在“未將收到的短信檢測(cè)為運(yùn)營(yíng)商通知”中增加了信息2021年6月8日闡明了ProfileConnected消息類(lèi)型的傳遞時(shí)間2021年5月31日2021年2月28日首次發(fā)表目錄簡(jiǎn)介客戶(hù)在Windows8上對(duì)運(yùn)營(yíng)商品牌的主要體驗(yàn)為Metro風(fēng)格移動(dòng)寬帶設(shè)備應(yīng)用。此應(yīng)用不應(yīng)該用于提供主要的連接管理功能,而是應(yīng)該提供帳戶(hù)管理體驗(yàn)和服務(wù)體驗(yàn)。為了讓用戶(hù)可以接收其帳戶(hù)狀態(tài)的通知,應(yīng)用需要執(zhí)行某些活動(dòng),即使在用戶(hù)未與其交互時(shí)也是如此。這些活動(dòng)包括對(duì)運(yùn)營(yíng)商SMS或網(wǎng)絡(luò)啟動(dòng)的USSD消息的響應(yīng),通知用戶(hù)他們已接近其數(shù)據(jù)限制,通知用戶(hù)其數(shù)據(jù)計(jì)劃已到期以及通知用戶(hù)其漫游狀態(tài)。Windows8中的后臺(tái)代理工作項(xiàng)Windows8引入了以全屏方式運(yùn)行的Metro風(fēng)格應(yīng)用,其中包括Metro風(fēng)格移動(dòng)寬帶設(shè)備應(yīng)用。最終用戶(hù)僅可以以前臺(tái)方式與應(yīng)用程序進(jìn)行交互。前臺(tái)應(yīng)用被假定為對(duì)用戶(hù)最重要,以便此應(yīng)用接收所有系統(tǒng)資源。如果應(yīng)用不在前臺(tái),則應(yīng)用將掛起且無(wú)法運(yùn)行任何代碼。掛起的應(yīng)用在用戶(hù)通過(guò)將應(yīng)用帶回前臺(tái)以恢復(fù)該應(yīng)用前保持的掛起狀態(tài)。采用這樣的應(yīng)用行為模型,用戶(hù)體驗(yàn)不會(huì)受到由于執(zhí)行不重要的后臺(tái)應(yīng)用而導(dǎo)致的滯后或延遲的影響。此外,減少不必要的后臺(tái)活動(dòng)可優(yōu)化各種機(jī)型上的電池的壽命。恢復(fù)掛起的應(yīng)用所花費(fèi)時(shí)間可以忽略不計(jì),并且?guī)缀醪粫?huì)被大部分用戶(hù)察覺(jué)。Windows8提供可用于保持應(yīng)用磁貼最新和更新(即使在該應(yīng)用掛起時(shí))的Windows推送通知。推送通知針對(duì)系統(tǒng)性能和更長(zhǎng)的設(shè)備電池壽命進(jìn)行了優(yōu)化,因此最好盡可能使用Windows推送通知。如果掛起的應(yīng)用必須運(yùn)行自己的代碼來(lái)執(zhí)行其他類(lèi)型的工作,則Windows8為該應(yīng)用提供創(chuàng)建后臺(tái)任務(wù)的功能。盡管在Metro風(fēng)格應(yīng)用不在前臺(tái)運(yùn)行時(shí)該應(yīng)用無(wú)法運(yùn)行任何代碼,但

Windows8中的系統(tǒng)事件代理將提供一個(gè)機(jī)制讓位于后臺(tái)的應(yīng)用運(yùn)行響應(yīng)事件的代碼。應(yīng)用可以使用系統(tǒng)事件代理注冊(cè)工作項(xiàng)以響應(yīng)特定后臺(tái)代理的事件。當(dāng)觸發(fā)后臺(tái)代理的事件時(shí),Windows會(huì)運(yùn)行應(yīng)用的工作項(xiàng),而不管該應(yīng)用當(dāng)前處于何種狀態(tài)(活動(dòng)或掛起)。通常來(lái)說(shuō),后臺(tái)事件用于簡(jiǎn)單觸發(fā)點(diǎn),并不針對(duì)具有大量處理操作的信號(hào)。

同樣,每個(gè)應(yīng)用的配額也基于后臺(tái)事件允許的處理時(shí)間。后臺(tái)事件由網(wǎng)

絡(luò)運(yùn)營(yíng)商API提供,其中包括MobileOperatorNotification事件和

HotspotAuthentication事件,Windows將這些事件視為關(guān)鍵事件。

與Windows8中的常規(guī)后臺(tái)事件相比,與MobileOperatorNotification和HotspotAuthentication事件關(guān)聯(lián)的后臺(tái)工作項(xiàng)將執(zhí)行事件的每個(gè)實(shí)例,而不考慮處理時(shí)間配額,盡管后臺(tái)工作項(xiàng)的每個(gè)實(shí)例都會(huì)受到處理時(shí)間配額的限制。應(yīng)注意,在后臺(tái)事件處理程序中應(yīng)僅執(zhí)行最少的處理并且將較大處理推遲留給應(yīng)用程序處理。有關(guān)HotspotAuthentication后臺(tái)事件的詳細(xì)信息,請(qǐng)參閱\hWindows8無(wú)線熱點(diǎn)運(yùn)營(yíng)商集成。術(shù)語(yǔ)和定義本書(shū)使用以下術(shù)語(yǔ):后臺(tái)任務(wù)由應(yīng)用實(shí)現(xiàn)的類(lèi)或JavaScript頁(yè)面,即使在應(yīng)用不在前臺(tái)的情況下也可以提供功能。后臺(tái)觸發(fā)器系統(tǒng)定義的事件,應(yīng)用可以將其與后臺(tái)任務(wù)關(guān)聯(lián)。當(dāng)系統(tǒng)觸發(fā)觸發(fā)器時(shí),將啟動(dòng)與該觸發(fā)器關(guān)聯(lián)的應(yīng)用后臺(tái)任務(wù)。前臺(tái)應(yīng)用用戶(hù)正在主動(dòng)與其交互的應(yīng)用。MobileOperatorNotification場(chǎng)景連接到移動(dòng)寬帶和斷開(kāi)與移動(dòng)寬帶的連接網(wǎng)絡(luò)運(yùn)營(yíng)商消息Windows8中的移動(dòng)寬帶平臺(tái)僅為運(yùn)營(yíng)商的Metro風(fēng)格設(shè)備應(yīng)用提供可用的增強(qiáng)功能,以接收和顯示傳入SMS和網(wǎng)絡(luò)啟動(dòng)的USSD運(yùn)營(yíng)商管理消息。這些消息可用于用戶(hù)通知,例如,接近數(shù)據(jù)使用量上限、國(guó)際漫游或余量不足,或者用于觸發(fā)來(lái)自運(yùn)營(yíng)商的應(yīng)用的響應(yīng)。應(yīng)用適當(dāng)?shù)靥幚韨魅胂???赡艿捻憫?yīng)包括以下任意或全部?jī)?nèi)容:立即同步當(dāng)前數(shù)據(jù)使用量更新Metro風(fēng)格應(yīng)用的磁貼檢索并應(yīng)用更新的運(yùn)營(yíng)商設(shè)置XML向用戶(hù)顯示toast通知,例如:用戶(hù)可以點(diǎn)擊或單擊要直接發(fā)送給運(yùn)營(yíng)商的應(yīng)用的通知,如下圖所示。如果運(yùn)營(yíng)商希望在應(yīng)用中顯示消息,則MobileOperatorNotification事件觸發(fā)的后臺(tái)任務(wù)需要讀取消息內(nèi)容并將消息內(nèi)容存儲(chǔ)至應(yīng)用自己的本地?cái)?shù)據(jù)存儲(chǔ)中。移動(dòng)寬帶SMS平臺(tái)不保留過(guò)去接收到的管理SMS通知隊(duì)列。移動(dòng)網(wǎng)絡(luò)運(yùn)營(yíng)商SMS通知傳入SMS消息可用于已請(qǐng)求和授予對(duì)電腦上SMS功能的訪問(wèn)權(quán)限的所有應(yīng)用。但是,某些SMS消息直接來(lái)自運(yùn)營(yíng)商并應(yīng)限制用于該運(yùn)營(yíng)商的應(yīng)用并由該應(yīng)用處理。移動(dòng)寬帶SMS平臺(tái)篩選每個(gè)新接收的以下兩種類(lèi)型之一的SMS:來(lái)自MNO的管理(“無(wú)提示”)SMS通知和常規(guī)SMS消息。從移動(dòng)網(wǎng)絡(luò)運(yùn)營(yíng)商處接收的管理SMS通知僅可由MNOMetro風(fēng)格應(yīng)用訪問(wèn),并在常規(guī)SMS客戶(hù)端應(yīng)用中隱藏。移動(dòng)網(wǎng)絡(luò)運(yùn)營(yíng)商在帳戶(hù)設(shè)置元數(shù)據(jù)中為管理SMS和USSD通知指定自定義篩選規(guī)則。如果未指定消息篩選規(guī)則,則SMS平臺(tái)將所有SMS消息分類(lèi)作為可用于所有應(yīng)用的常規(guī)SMS消息。如果傳入SMS與設(shè)置的篩選規(guī)則相匹配,則觸發(fā)MobileOperatorNotification事件并且后臺(tái)工作項(xiàng)可以相應(yīng)地處理傳入SMS消息。網(wǎng)絡(luò)啟動(dòng)的USSD以本地方式觸發(fā)數(shù)據(jù)使用量和漫游通知在許多市場(chǎng)中,監(jiān)管法律要求移動(dòng)網(wǎng)絡(luò)運(yùn)營(yíng)商通知用戶(hù)當(dāng)達(dá)到其數(shù)據(jù)使用限制時(shí)或該用戶(hù)正在更貴的網(wǎng)絡(luò)中漫游。此消費(fèi)者保護(hù)措施將減少“帳單震撼”或者非常高的使用費(fèi)用的風(fēng)險(xiǎn)。在Windows中,運(yùn)營(yíng)商的移動(dòng)寬帶應(yīng)用可以顯示toast通知和磁貼更新以確保用戶(hù)意識(shí)到數(shù)據(jù)使用量和漫游狀態(tài)。這些通知可通過(guò)SMS或USSD從運(yùn)營(yíng)商的網(wǎng)絡(luò)后端啟動(dòng),這將觸發(fā)MobileOperatorNotification事件,如上例所示。此外,在以下情況中使用本地信息也可觸發(fā)MobileOperatorNotification事件。通過(guò)本地?cái)?shù)據(jù)計(jì)數(shù)器的數(shù)據(jù)使用量通知運(yùn)營(yíng)商通過(guò)設(shè)置元數(shù)據(jù)啟動(dòng)本地?cái)?shù)據(jù)使用量通知。本地?cái)?shù)據(jù)計(jì)數(shù)器評(píng)估自上次更新后更改量超過(guò)用戶(hù)數(shù)據(jù)限制5%的配置文件上的使用量。數(shù)據(jù)使用量和訂閱管理器(DUSM)通知系統(tǒng)事件代理觸發(fā)

MobileOperatorNotification事件。系統(tǒng)事件代理調(diào)用運(yùn)營(yíng)商的應(yīng)用來(lái)處理后臺(tái)事件。應(yīng)用通過(guò)從運(yùn)營(yíng)商的后端基礎(chǔ)結(jié)構(gòu)中檢索最新使用量信息來(lái)處理事件。如果當(dāng)前使用量信息超過(guò)閾值(例如80%),則應(yīng)用將向用戶(hù)顯示一個(gè)toast通知并用當(dāng)前使用量更新DUSM。此外,如果當(dāng)前使用量沒(méi)有超過(guò)閾值,則應(yīng)用無(wú)需顯示toast通知。通過(guò)Windows連接管理器的漫游通知Windows連接管理器在將連接報(bào)告為“漫游”的移動(dòng)寬帶網(wǎng)絡(luò)上注冊(cè)。Windows連接管理器通知系統(tǒng)事件代理觸發(fā)MobileOperator

Notification事件。系統(tǒng)事件代理調(diào)用運(yùn)營(yíng)商的應(yīng)用來(lái)處理后臺(tái)事件。應(yīng)用識(shí)別用戶(hù)在此網(wǎng)絡(luò)上漫游時(shí)是否會(huì)產(chǎn)生額外使用費(fèi)用,并且如果需要會(huì)向用戶(hù)顯示一個(gè)toast通知和磁貼更新。數(shù)據(jù)計(jì)劃到期和使用量重置對(duì)于后付費(fèi)數(shù)據(jù)計(jì)劃,DUSM在特定日期將計(jì)劃數(shù)據(jù)使用量重置為零,例如每月的第一天。進(jìn)行重置時(shí),會(huì)觸發(fā)MobileOperatorNotification事件,且應(yīng)用可以通知用戶(hù)已更新的數(shù)據(jù)使用量。MobileOperatorNotification事件詳細(xì)技術(shù)信息事件負(fù)載MobileOperatorNotification事件負(fù)載包括以下字段:MessageType–觸發(fā)事件的消息的枚舉。Interface–對(duì)應(yīng)于與事件關(guān)聯(lián)的物理接口的GUID。EncodingType–如果MessageType為SMS/USSD,則該字段為消息的編碼方法。MessageDataSize–如果MessageType為SMS/USSD,則該字段為消息的大小,以字節(jié)為單位。Message–如果MessageType為SMS/USSD,則該字段為收到的原始消息。通過(guò)使用事件負(fù)載中的MessageType字段區(qū)分這些方案,MobileOperatorNotification事件可以啟用上述每個(gè)方案。對(duì)MessageTypes進(jìn)行枚舉,如下所示:GSMSMSCDMASMSUSSDDataPlanThresholdReachedDataPlanResetDataPlanDeletedProfileConnectedProfileDisconnectedRegisteredRoamingRegisteredHome與MobileOperatorNotification事件關(guān)聯(lián)的工作項(xiàng)應(yīng)從高效區(qū)分

MessageType的邏輯開(kāi)始并為每個(gè)方案執(zhí)行適當(dāng)?shù)拇a。GSM/CDMASMS和USSD傳入的運(yùn)營(yíng)商消息(包括SMS和USSD)將根據(jù)正確對(duì)應(yīng)的MessageTypes觸發(fā)MobileOperatorNotification事件。只有這些類(lèi)型具有EncodingType、MessageDataSize和Message。DataPlanThresholdReached默認(rèn)情況下,此消息類(lèi)型處于禁用狀態(tài)。必須通過(guò)使用設(shè)置元數(shù)據(jù)指定

DataUsageInMobileOperatorNotificationEnable字段來(lái)啟用此字段,

如下所示。<?xmlversion="1.0"?><CarrierProvisioningxmlns="/networking/CarrierControl/v1"><Global><CarrierId>{2c85b76b-f859-47c4-8122-721fe8b6c25f}</CarrierId><SubscriberId>012345678901234</SubscriberId></Global><MBNProfiles><DefaultProfilexmlns="/networking/CarrierControl/WWAN/v1"><Name>Contoso</Name><AssociatedPlan>SamplePlan</AssociatedPlan><Context><AccessString>C</AccessString><UserLogonCred><UserName>User</UserName><Password>secret</Password></UserLogonCred></Context></DefaultProfile></MBNProfiles><Plans><Planxmlns="/networking/CarrierControl/Plans/v1"Name="SamplePlan"><DescriptionPlanType="Fixed"><DataLimitInMegabytes>500</DataLimitInMegabytes><DataUsageInMobileOperatorNotificationEnabled>true</DataUsageInMobileOperatorNotificationEnabled></Description></Plan></Plans></CarrierProvisioning>有關(guān)其他詳細(xì)信息,請(qǐng)參閱\h提供移動(dòng)寬帶元數(shù)據(jù)。除了以下兩種情況,當(dāng)本地?cái)?shù)據(jù)計(jì)數(shù)器評(píng)估自上次事件發(fā)生后在移動(dòng)寬帶接口上的使用量(發(fā)送和接收的字節(jié))達(dá)到5%的變化時(shí),將使用此MessageType生成事件:當(dāng)連接到家庭網(wǎng)絡(luò)(非漫游)時(shí),如果未指定數(shù)據(jù)計(jì)劃限制,則每使用100MB本地?cái)?shù)據(jù)觸發(fā)此事件一次。當(dāng)連接到漫游網(wǎng)絡(luò)時(shí),數(shù)據(jù)計(jì)劃限制將不適用,并且每使用5MB本地?cái)?shù)據(jù)觸發(fā)此事件一次。Windows8中的本地?cái)?shù)據(jù)計(jì)數(shù)器以1分鐘的頻率進(jìn)行更新;在上面描述的所有情況下,最多每分鐘生成此事件一次。必須注意的是,盡管可將此信息視為良好的初級(jí)指導(dǎo)值,但Windows無(wú)法將未計(jì)費(fèi)流量或共享同一數(shù)據(jù)限制(例如,家庭計(jì)劃或SIM對(duì)換)的其他設(shè)備上的使用量也計(jì)算在內(nèi)。運(yùn)營(yíng)商應(yīng)用僅應(yīng)將本地?cái)?shù)據(jù)計(jì)數(shù)器用于自上次與運(yùn)營(yíng)商所有的計(jì)費(fèi)系統(tǒng)同步后粗略估計(jì)使用量。對(duì)于已使用的數(shù)據(jù)使用量,應(yīng)將計(jì)費(fèi)系統(tǒng)提供的信息視為權(quán)威信息。DataPlanReset在計(jì)劃重置日期當(dāng)日,DUSM將用戶(hù)的當(dāng)前本地?cái)?shù)據(jù)使用量重置為零。DataPlanDeleted ProfileConnected和ProfileDisconnected當(dāng)Windows連接管理器連接到運(yùn)營(yíng)商體驗(yàn)元數(shù)據(jù)提供的網(wǎng)絡(luò)配置文件時(shí),將生成具有這些MessageTypes的MobileOperatorNotification事件。此事件將在每次連接和斷開(kāi)連接時(shí)觸發(fā),其中包括睡眠/恢復(fù)后的初始連接。\hRegisteredRoaming和RegisteredHome當(dāng)Windows連接管理器注冊(cè)到報(bào)告為漫游的網(wǎng)絡(luò)時(shí),將生成具有這些

MessageTypes的MobileOperatorNotification事件。此事件將在每次注冊(cè)時(shí)觸發(fā),其中包括睡眠/恢復(fù)后的初始注冊(cè)。應(yīng)用會(huì)僅在用戶(hù)在漫游網(wǎng)絡(luò)上注冊(cè)時(shí)和在用戶(hù)返回其所屬網(wǎng)絡(luò)時(shí)通知該用戶(hù)。由于此事件在每次注冊(cè)時(shí)觸發(fā),因此該應(yīng)用負(fù)責(zé)在應(yīng)用的會(huì)話數(shù)據(jù)中跟蹤以前注冊(cè)的狀態(tài)。通過(guò)元數(shù)據(jù)注冊(cè)MobileOperatorNotification事件通常情況下,應(yīng)用必須由用戶(hù)至少運(yùn)行一次才可通過(guò)系統(tǒng)事件代理注冊(cè)工作項(xiàng)。但是,由于完成關(guān)鍵移動(dòng)寬帶方案需要使用MobileOperatorNotification事件,因此此事件通過(guò)移動(dòng)寬帶服務(wù)元數(shù)據(jù)與移動(dòng)寬帶應(yīng)用相關(guān)聯(lián)。在服務(wù)元數(shù)據(jù)中,添加以下條目:\Package\SoftwareInformation\SoftwareInfo.xml<DeviceCompanionApplications> <Package> <Applications> <ApplicationId="MyOperatorNotification"/><DeviceNotificationHandlers><DeviceNotificationHandlerEventID="MobileOperatorNotificationHandler"EventAsset="backgroundtask.js"/></DeviceNotificationHandlers></Applications> </Package></DeviceCompanionApplications>如果Metro風(fēng)格應(yīng)用為C#應(yīng)用,則事件資產(chǎn)必須指向?qū)崿F(xiàn)backgroundtask接口的運(yùn)行時(shí)類(lèi)。<DeviceNotificationHandlers><DeviceNotificationHandlerEventID="MobileOperatorNotificationHandler"EventAsset="MNOMessageBackground.OperatorNotification"/>下載元數(shù)據(jù)和應(yīng)用時(shí),設(shè)備設(shè)置管理器通過(guò)系統(tǒng)事件代理注冊(cè)相應(yīng)的工作項(xiàng)之后,應(yīng)用才可運(yùn)行一次。在元數(shù)據(jù)中更改后臺(tái)任務(wù)注冊(cè)如果在更新版本的Metro風(fēng)格應(yīng)用中更改后臺(tái)任務(wù)入口點(diǎn),也需要更改元數(shù)據(jù)中的DeviceNotificationHandler。雖然最終用戶(hù)需要在Windows應(yīng)用商店中手動(dòng)更新Metro風(fēng)格應(yīng)用,但是

會(huì)在Windows8電腦上自動(dòng)更新元數(shù)據(jù)。開(kāi)發(fā)人員應(yīng)避免在元數(shù)據(jù)中更改

DeviceNotificationHandler后臺(tái)任務(wù)注冊(cè)。如果需要進(jìn)行更改,則元數(shù)據(jù)應(yīng)包含對(duì)所有受支持版本的Metro風(fēng)格應(yīng)用中使用的所有不同后臺(tái)任務(wù)入口點(diǎn)的引用,以便為尚未手動(dòng)更新Metro風(fēng)格應(yīng)用的最終用戶(hù)保留功能。在設(shè)置XML中定義篩選規(guī)則Windows使用來(lái)自運(yùn)營(yíng)商的元數(shù)據(jù)信息來(lái)自定義Windows8的各個(gè)方面,其中包括提供數(shù)據(jù)以設(shè)置電腦。設(shè)置XML用于指定自定義篩選規(guī)則以區(qū)分運(yùn)營(yíng)商SMS與USSD通知。有關(guān)討論的元數(shù)據(jù)和設(shè)置的詳細(xì)信息,請(qǐng)參閱\h提供移動(dòng)寬帶元數(shù)據(jù)。Windows接受來(lái)自運(yùn)營(yíng)商的基于XML的設(shè)置文件。設(shè)置XML的示例版本如下所示:<?xmlversion="1.0"encoding="utf-8"?><CarrierProvisioningxmlns="/networking/CarrierControl/v1"><Global><!--AdjusttheCarrierIDtofitmatchtheServiceNumberinservicemetadata.RefertotheMSDNdocumentationaboutCarrierId.--><CarrierId>{11111111-1111-1111-1111-111111111111}</CarrierId><!--AdjusttheSusbscriberID.RefertotheMSDNdocumentationaboutSubscriberID's.--><SubscriberId>1234567890</SubscriberId></Global><MBNProfiles><DefaultProfilexmlns="/networking/CarrierControl/WWAN/v1"><!--Adjusttheprofilename--><Name>Contoso</Name><AssociatedPlan>Limited</AssociatedPlan><!--AdjustthehomeprovidernameforthegivenSIM/Device--><HomeProviderName>Contoso</HomeProviderName><Context><!--AdjusttheaccessstringtoyourAPN.--><AccessString>Contoso.Contoso</AccessString><!--AdjusttheUserLogonCredtofityourUserLogonCred.RefertotheMSDNdocumentationaboutUserLogonCred's.--><UserLogonCred><UserName>user</UserName><Password>password</Password></UserLogonCred></Context></DefaultProfile><Messagesxmlns="/networking/CarrierControl/WWAN/v1"><MessageRuleId="Sample1"Silent="true"><SMSBearerClassZeroOnly="false"Sender=/><!--[^]*matchesallmessagesfromthissender,regardlessofcontent--><Pattern>[^]*</Pattern><!--BecausenoFieldsarespecified,thismessagewillbepassedtotheoperatorappwithoutparsing.--></Message><MessageRuleId="Sample2"Silent="false"><!--Parsingasimpleusagemessage.--><USSDBearer/><Pattern>(\d+\.\d+)(\w+)of(\d+)(\w+)usedasof(\S+)</Pattern><!--Usingthesefielddefinitions,Windowswillautomaticallyupdateusagedatabeforepassingthemessagetotheoperatorapp.--><UnitsG="GB"M="MB"/><Fields><!--Thesefieldsarecurrentlyunordered,butanorderwillberequiredinRC.--><UsageGroup="1"UnitGroup="2"/><UsageTimestampGroup="5"Format="%I:%M%pon%d%b"/><DataLimitGroup="3"UnitGroup="4"/></Fields></Message></Messages></MBNProfiles><Provisioning/></CarrierProvisioning>將文本消息標(biāo)識(shí)為運(yùn)營(yíng)商消息的規(guī)則可在此XML中定義。允許的發(fā)件人:“Sender”特性用于指定允許通知從其發(fā)出的保留發(fā)件人地址。(此數(shù)字必須與SMS消息中接收到的發(fā)件人編號(hào)精確匹配,其中包括國(guó)際格式)。模式:用于標(biāo)識(shí)和可選地從文字消息中提取數(shù)據(jù)字段的正則表達(dá)式。要匹配來(lái)自某個(gè)發(fā)件人的所有消息,請(qǐng)使用模式[^]*更多信息可在\h提供移動(dòng)寬帶元數(shù)據(jù)中找到。開(kāi)發(fā)處理MobileOperatorNotification事件的應(yīng)用最佳做法關(guān)于后臺(tái)事件的處理,應(yīng)遵守以下最佳做法:請(qǐng)勿注冊(cè)你無(wú)法對(duì)其采取操作的后臺(tái)事件。處理這些事件將不必要地占用應(yīng)用程序配額。請(qǐng)勿在接收到后臺(tái)事件時(shí)執(zhí)行大量處理。請(qǐng)考慮將處理推遲到下次應(yīng)用啟動(dòng)時(shí)。請(qǐng)考慮顯示toast通知和更新磁貼以響應(yīng)后臺(tái)事件??梢詥?dòng)Metro風(fēng)格應(yīng)用來(lái)處理后臺(tái)事件負(fù)載。有關(guān)Windows8中后臺(tái)事件模型的詳細(xì)信息,請(qǐng)參閱\h后臺(tái)任務(wù)簡(jiǎn)介。第1步:后臺(tái)任務(wù)合約聲明若要使Windows可以識(shí)別移動(dòng)運(yùn)營(yíng)商的Metro風(fēng)格設(shè)備應(yīng)用提供的后臺(tái)任務(wù)體驗(yàn),該應(yīng)用必須聲明它提供了系統(tǒng)功能的擴(kuò)展。若要在VisualStudio11項(xiàng)目的package.appxmanifest文件中做出聲明,請(qǐng)遵循以下步驟:在MicrosoftVisualStudio2021中,在解決方案資源管理器中雙擊你的項(xiàng)目的package.appxmanifest文件。在“聲明”選項(xiàng)卡中,從“可用聲明”中選擇“后臺(tái)任務(wù)”,然后單擊“添加”。在“屬性”下輸入應(yīng)用信息。對(duì)于使用JavaScript和HTML的Metro風(fēng)格設(shè)備應(yīng)用,在應(yīng)用程序設(shè)置的StartPage字段中輸入在應(yīng)用中處理后臺(tái)任務(wù)的文件名(例如backgroundtask.js)。對(duì)于“支持的任務(wù)類(lèi)型”,請(qǐng)選擇“系統(tǒng)事件”。下圖顯示了采用C#的此過(guò)程:下圖顯示了采用JavaScript的此過(guò)程:假如操作正確,當(dāng)使用Notepad打開(kāi)package.appxmanifest時(shí),會(huì)看到以下代碼:<Applications><ApplicationId=…>......<ExtensionCategory="windows.backgroundTasks"StartPage="backgroundtask.js"><BackgroundTasks><TaskType="systemEvent"/></BackgroundTasks></Extension>......</Application></Applications>第2步:后臺(tái)任務(wù)處理程序如果應(yīng)用提供移動(dòng)運(yùn)營(yíng)商通知聲明,則必須提供用于該后臺(tái)任務(wù)激活的處理程序。該處理程序?qū)囊韵挛恢弥蝎@取移動(dòng)運(yùn)營(yíng)商網(wǎng)絡(luò)帳戶(hù)ID和事件數(shù)據(jù):

(Windows.Networking.NetworkOperators.NetworkOperator

NotificationEventDetails)。由于后臺(tái)任務(wù)支持的唯一UI為T(mén)oast,因此后臺(tái)任務(wù)處理程序可以顯示Toast或?qū)etworkOperatorNotificationEventDetails保存到本地存儲(chǔ)中。以下代碼示例顯示了可在接收到新的管理SMS通知時(shí)運(yùn)行的后臺(tái)任務(wù)。C#:usingWindows.Networking.NetworkOperators;namespaceMNOMessageBackground{publicsealedclassMNOBackgroundTask:IBackgroundTask{publicvoidRun(Windows.ApplicationModel.Background.IBackgroundTaskInstancetaskInstance){ NetworkOperatorNotificationEventDetailsnotifyData=(NetworkOperatorNotificationEventDetails)taskInstance.TriggerDetails;//ThenetworkaccountIDisstoredinnotifyData.NetworkAccountId.switch(notifyData.NotificationType){caseNetworkOperatorEventMessageType.Gsm://0break;caseNetworkOperatorEventMessageType.Cdma://1break;caseNetworkOperatorEventMessageType.Ussd://2break;caseNetworkOperatorEventMessageType.DataPlanThresholdReached://3break;caseNetworkOperatorEventMessageType.DataPlanReset://4break;caseNetworkOperatorEventMessageType.DataPlanDeleted://5break;caseNetworkOperatorEventMessageType.ProfileConnected://6break;caseNetworkOperatorEventMessageType.ProfileDisconnected://7break;caseNetworkOperatorEventMessageType.RegisteredRoaming://8break;caseNetworkOperatorEventMessageType.RegisteredHome:///9break;default:break;} //Addcodetosavethemessagetoapplocalstorage,andoptionallyshowtoastnotificationandtileupdates.}}}JavaScript:(function(){"usestrict";////Thebackgroundtaskinstance'sactivationparametersareavailablevia//Windows.UI.WebUI.WebUIBackgroundTaskInstance.current.//varbackgroundTaskInstance=Windows.UI.WebUI.WebUIBackgroundTaskInstance.current,networkOperatorEventType=Windows.Networking.NetworkOperators.NetworkOperatorEventMessageType,key=null,settings=Windows.Storage.ApplicationData.current.localSettings;try{vardetails=backgroundTaskInstance.triggerDetails;//ThenetworkaccountIDisstoredinworkAccountId.switch(details.notificationType){casenetworkOperatorEventType.gsm:showToast("MobileBroadbandmessage",details.message);break;casenetworkOperatorEventType.cdma:showToast("MobileBroadbandmessage",details.message);break;casenetworkOperatorEventType.ussd:showToast("MobileBroadbandmessage",details.message);break;casenetworkOperatorEventType.dataPlanThresholdReached:showToast("MobileBroadbandmessage","Dataplanthresholdreached");break;casenetworkOperatorEventType.dataPlanReset:showToast("MobileBroadbandmessage","Dataplanreset");break;casenetworkOperatorEventType.dataPlanDeleted:showToast("MobileBroadbandmessage","Dataplandeleted");break;casenetworkOperatorEventTfileConnected:showToast("MobileBroadbandmessage","Profileconnected");break;casenetworkOperatorEventTfileDisconnected:showToast("MobileBroadbandmessage","Profiledisconnected");break;casenetworkOperatorEventType.registeredRoaming:showToast("MobileBroadbandmessage","Registeredroaming");break;casenetworkOperatorEventType.registeredHome:showToast("MobileBroadbandmessage","Registeredhome");break;default:showToast("MobileBroadbandmessage","Unknownmessage");break;}////AJavaScriptbackgroundtaskmustcallclosewhenitisdone.//close();}catch(exception){//Displayerrormessage.close();}顯示toast通知有關(guān)toast通知和磁貼更新體驗(yàn)設(shè)計(jì)指南,請(qǐng)參閱\h移動(dòng)運(yùn)營(yíng)商應(yīng)用的用戶(hù)體驗(yàn)設(shè)計(jì)。為了顯示toast通知,應(yīng)用需要在.appxmanifest的“通知”部分中指定

“ToastCapable”。以下代碼表明已在package.appxmanifest文件中設(shè)置了“ToastCapable”(如果使用記事本查看該文件的話)。<Applications><ApplicationId=…><VisualElementsToastCapable="true"…......</Application></Applications>以下代碼展示如何使用JavaScript在后臺(tái)任務(wù)處理程序中顯示toast通知。JavaScript:functionshowToast(title,body){varnotifications=Windows.UI.Notifications;vartoastXml=vartemp="theparameterwillpasstoappwhenappactivatedfromtapToast";toastXml.selectSingleNode("/toast").setAttribute("launch",temp);vartextNodes=toastXml.getElementsByTagName("text");textNodes[0].appendChild(toastXml.createTextNode(title));textNodes[1].appendChild(toastXml.createTextNode(body));vartoast=newnotifications.ToastNotification(toastXml);toastNotificationManager.createToastNotifier().show(toast);}獲取短信JavaScript:(function(){"usestrict";////Thebackgroundtaskinstance'sactivationparametersareavailablevia//Windows.UI.WebUI.WebUIBackgroundTaskInstance.current.//varbackgroundTaskInstance=Windows.UI.WebUI.WebUIBackgroundTaskInstance.current,try{vardetails=backgroundTaskInstance.triggerDetails;if(details.notificationType===networkOperatorEventType.gsm||details.notificationType===networkOperatorEventType.cdma){ vartextMessage=newWindows.Devices.Sms.SmsTextMessage.fromBinaryMessage(details.smsMessage);//textMessagecanbeusedtogetotherSmsMessageproperties//likesendernumber,timestamp,messagepartcountetc.showToast("From:"+textMessage.from+";TimeStamp:"+textMessage.timestamp,details.message);}使用本地存儲(chǔ)后臺(tái)任務(wù)可以使用本地存儲(chǔ)來(lái)保存從后臺(tái)事件中獲取的消息,以便應(yīng)用可以在稍后使用該信息。以下代碼展示了如何使用本地存儲(chǔ)來(lái)存儲(chǔ)消息。////Savethemessage//varsettings=Windows.Storage.ApplicationData.current.localSettings;varkeyMessage="BA5857FA-DE2C-4A4A-BEF2-49D8B4130A39";////Thebackgroundtaskinstance'sactivationparametersareavailablevia//Windows.UI.WebUI.WebUIBackgroundTaskInstance.current//varbackgroundTaskInstance=Windows.UI.WebUI.WebUIBackgroundTaskInstance.current;vardetails=backgroundTaskInstance.triggerDetails;settings.values[keyMessage]=details.message;以下代碼展示了如何在應(yīng)用中檢索后臺(tái)任務(wù)處理程序存儲(chǔ)的消息。varsettings=Windows.Storage.ApplicationData.current.localSettings;varkeyMessage="BA5857FA-DE2C-4A4A-BEF2-49D8B4130A39";varoperatorMessage=settings.values[keyMessage];第3步:處理激活事件如果后臺(tái)任務(wù)處理程序顯示Toast,則可以通過(guò)點(diǎn)擊Toast來(lái)啟動(dòng)應(yīng)用。如果

toast設(shè)置了參數(shù),則將通過(guò)detail.arguments將其傳遞給應(yīng)用。以下代碼展示了如何使用JavaScript附加事件處理程序和確定應(yīng)用上下文。WinJS.Application.addEventListener("activated",activated;false);functionactivated(eventArgs){if(eventArgs.detail.kind===Windows.ApplicationModel.Activation.ActivationKind.launch){if(!eventArgs.detail.arguments){//InitializelogicfortheStartexperiencehere.}else{//InitializelogicfortheNotificationexperiencehere.}}}有關(guān)詳細(xì)信息,請(qǐng)參閱\h后臺(tái)任務(wù)簡(jiǎn)介。第4步:處理后臺(tái)任務(wù)完成處理程序在后臺(tái)任務(wù)完成時(shí),前臺(tái)應(yīng)用也可以注冊(cè)要通知的完成處理程序。在后臺(tái)任務(wù)的“運(yùn)行”方法中發(fā)生的完成狀態(tài)或任何例外將傳遞到前臺(tái)應(yīng)用中的完成處理程序中。如果應(yīng)用在任務(wù)完成時(shí)已掛起,則下次應(yīng)用恢復(fù)時(shí)將接收到完成通知。如果應(yīng)用已處于“已終止”狀態(tài),則不會(huì)接收到完成通知。如果后臺(tái)任務(wù)需要保留其運(yùn)行成功的信息,則它必須使用狀態(tài)管理器或其他方法保留該信息,例如當(dāng)應(yīng)用恢復(fù)“正在運(yùn)行”狀態(tài)時(shí)可以讀取的文件。盡管移動(dòng)運(yùn)營(yíng)商后臺(tái)事件可由系統(tǒng)為應(yīng)用自動(dòng)注冊(cè),但如果應(yīng)用希望注冊(cè)到后臺(tái)完成或進(jìn)度處理程序,則該應(yīng)用仍需要至少運(yùn)行一次。以下代碼展示了如何將事件處理程序附加到后臺(tái)事件中。有關(guān)后臺(tái)任務(wù)進(jìn)度報(bào)告和完成處理程序的詳細(xì)信息,請(qǐng)參閱后臺(tái)任務(wù)簡(jiǎn)介。注意:在Windows8ConsumerPreview中,事件名稱(chēng)可能為空。作為一種解決方法,將任務(wù)名稱(chēng)與“”進(jìn)行比較。C#:foreach(varcurinBackgroundTaskRegistration.AllTasks){if(cur.Value.Name==“MobileOperatorNotificationHandler”){cur.Value.Progress+=newBackgroundTaskProgressEventHandler(OnProgress);cur.Value.Completed+=newBackgroundTaskCompletedEventHandler(OnCompleted);}}////Handlebackgroundtaskcompletion.//privatevoidOnCompleted(IBackgroundTaskRegistrationsender,BackgroundTaskCompletedEventArgse){vartaskCompletion=taskasIBackgroundTaskRegistration;varcompletionArgs=args.ContextasBackgroundTaskCompletedEventArgs;////Ifthebackgroundtaskthrewanexception,displaytheexceptionin//theerrortextbox.//if(completionArgs.Status!=null){throwcompletionArgs.Status;}}////Handlebackgroundtaskprogress.//privatevoidOnProgress(IBackgroundTaskRegistrationsender,BackgroundTaskProgressEventArgse){vartaskRegistration=taskasIBackgroundTaskRegistration;varprogressArgs=args.ContextasBackgroundTaskProgressEventArgs;//progressArgs.Progresshastheprogresspercentage}JavaScript:variter=Windows.ApplicationModel.Background.BackgroundTaskRegistration.allTasks.first();varhascur=iter.hasCurrent;while(hascur){varcur=iter.current.value;if(===“MobileOperatorNotificationHandler”){cur.addEventListener("progress",newProgressHandler(cur).onProgress);cur.addEventListener("completed",newCompleteHandler(cur).onCompleted);}hascur=iter.moveNext();}////Handlebackgroundtaskprogress.//functionProgressHandler(task){this.onProgress=function(args){try{varprogress="Progress:"+gress+"%";}catch(ex){displayError(ex);}};}////Handlebackgroundtaskcompletion.//functionCompleteHandler(task){this.onCompleted=function(args){try{varkey=task.taskId;}catch(ex){displayError(ex);}};}疑難解答觸發(fā)元數(shù)據(jù)分析以注冊(cè)后臺(tái)任務(wù)開(kāi)發(fā)人員可通過(guò)在桌面的“設(shè)備和打印機(jī)”窗口中按F5鍵(或右鍵單擊并選擇“刷新”),手動(dòng)觸發(fā)Windows8以分析服務(wù)元數(shù)據(jù)并注冊(cè)后臺(tái)任務(wù)。僅當(dāng)部署應(yīng)用時(shí),通過(guò)服務(wù)元數(shù)據(jù)分析進(jìn)行后臺(tái)任務(wù)注冊(cè)才會(huì)成功。驗(yàn)證是否已正確注冊(cè)后臺(tái)任務(wù)開(kāi)發(fā)人員可通過(guò)查看ApplicationandServicesLogs\Microsoft\Windows\

DeviceSetupManager下的事件日志,驗(yàn)證設(shè)備設(shè)置管理器(DSM)是否已正確分析服務(wù)元數(shù)據(jù)。打開(kāi)“事件查看器”。在“開(kāi)始”頁(yè)上,鍵入“事件查看器”并在“搜索”窗格中選擇設(shè)置。單擊“查看事件日志”。在菜單選項(xiàng)卡上,選擇“查看”,然后選擇“顯示分析和調(diào)試日志”。瀏覽到ApplicationsandServicesLogs\Microsoft\Windows\

DeviceSetupManager。\h驗(yàn)證是否已成功應(yīng)用設(shè)置元數(shù)據(jù)設(shè)置文件中的CarrierId和體驗(yàn)元數(shù)據(jù)中的服務(wù)編號(hào)之間不匹配驗(yàn)證系統(tǒng)事件代理是否正在執(zhí)行后臺(tái)任務(wù)開(kāi)發(fā)人員可通過(guò)檢查事件查看器,驗(yàn)證Windows是否正在生成

MobileOperatorNotification事件并且事件代理正在執(zhí)行應(yīng)用的后臺(tái)任務(wù)。

默認(rèn)情況下,對(duì)這些事件的記錄處于禁用狀態(tài),可通過(guò)以下步驟啟用:打開(kāi)“事件查看器”。在“開(kāi)始”頁(yè)上,鍵入“事件查看器”并在“搜索”窗格中選擇設(shè)置。單擊“查看事件日志”。瀏覽到ApplicationsandServicesLogs\Microsoft\Windows\

BackgroundTaskInfrastructure。右鍵單擊“診斷”日志并選擇“啟用日志”。如果未正在執(zhí)行后臺(tái)任務(wù),請(qǐng)首先驗(yàn)證在服務(wù)元數(shù)據(jù)中指定的你的后臺(tái)任務(wù)的名稱(chēng)是否與你的程序包的AppXManifest.xml文件中的名稱(chēng)相匹配。然后,

在部署應(yīng)用并插入移動(dòng)寬帶設(shè)備后,驗(yàn)證是否已觸發(fā)對(duì)服務(wù)元數(shù)據(jù)的分析。驗(yàn)證Windows是否正在接收SMS和USSD開(kāi)發(fā)人員可通過(guò)在事件查看器中檢查SmsRouter事件來(lái)驗(yàn)證Windows是否正在接收SMS和USSD通知。未將收到的短信檢測(cè)為運(yùn)營(yíng)商通知如果未將收到的SMS檢測(cè)為運(yùn)營(yíng)商通知,請(qǐng)?jiān)趲?hù)設(shè)置元數(shù)據(jù)中驗(yàn)證SMS管理通知的自定義篩選規(guī)則。有關(guān)詳細(xì)信息,請(qǐng)參閱\h提供移動(dòng)寬帶元數(shù)據(jù)。尤其是,如果指定發(fā)件人號(hào)碼,請(qǐng)驗(yàn)證指定的號(hào)碼格式匹配通過(guò)SMSAPI收到的消息中的格式。若要驗(yàn)證這已正確匹配,請(qǐng)將模式臨時(shí)更改為“[^]*”,以匹配來(lái)自此發(fā)件人的所有消息。附錄backgroundtask.js示例文件:////AJavaScriptbackgroundtaskrunsaspecifiedJavaScriptfile.//(function(){"usestrict";////Thebackgroundtaskinstance'sactivationparametersareavailableviaWindows.UI.WebUI.WebUIBackgroundTaskInstance.current.//varbackgroundTaskInstance=Windows.UI.WebUI.WebUIBackgroundTaskInstance.current,networkOperatorEventType=Windows.Networking.NetworkOperators.NetworkOperatorEventMessageType,key=null,settings=Windows.Storage.ApplicationData.current.localSettings;try{vardetails=backgroundTaskInstance.triggerDetails;switch(details.notificationType){casenetworkOperatorEventType.gsm:vartextMessage=newWindows.Devices.Sms.SmsTextMessage.fromBinaryMessage(details.smsMessage);showToast("GsmMsgFrom:"+textMessage.from+";TimeStamp:"+textMessage.timestamp,details.message);break;casenetworkOperatorEventType.cdma:showToast("MobileBroadbandmessage",details.message);break;casenetworkOperatorEventType.ussd:showToast("MobileBroadbandmessage",details.message);break;casenetworkOperatorEventType.dataPlanThresholdReached:showToast("MobileBroadbandmessage","Dataplanthresholdreached");break;casenetworkOperatorEventType.dataPlanReset:showToast("MobileBroadbandmessage","Dataplanreset");break;casenetworkOperatorEventType.dataPlanDeleted:showToast("MobileBroadbandmessage","Dataplandeleted");break;casenetworkOperatorEventTfileConnected:showToast("MobileBroadbandmessage","Profileconnected");break;casenetworkOperatorEventTfileDisconnected:showToast("MobileBroadbandmessage","Profiledisconnected");break;casenetworkOperatorEventType.registeredRoaming:showToast("MobileBroadbandmessage","Registeredroaming");break;casenetworkOperatorEventType.registeredHome:showToast("MobileBroadbandmessage","Registeredhome");break;default:showToast("MobileBroadbandmessage","Unknownmessage");break;}taskSucceeded();}catch(exception){taskFailed();}functionshowToast(title,body){varnotifications=Windows.UI.Notifications;vartoastNotificationManager=Windows.UI.Notifications.ToastNotificationManager;vartoastXml=toastNotificationManager.getTemplateContent(notifications.ToastTemplateType.toastText02);////PasstoappthrougheventArguments.arguments.//vartemp="\"Title\""+":"+"\""+title+"\""+","+"\"Message\""+":"+"\""+body+"\"";if(temp.length>251){temp=temp.substring(0,251);}toastXml.selectSingleNode("/toast").setAttribute("launch","'{"+temp+"}'");vartextNodes=toastXml.getElementsByTagName("text");textNodes[0].appendChild(toastXml.createTextNode(title));textNodes[1].appendChild(toastXml.createTextNode(body));vartoast=newnotifications.ToastNotification(toastXml);toastNotificationManager.createToastNotifier().show(toast);}////Thisfunctioniscalledwhenthebackgroundtaskiscompletedsuccessfully.//functiontaskSucceeded(){////Usethesucceededpropertytoindicatethatthisbackgroundtaskcompletedsuccessfully.//backgroundTaskInstance.succeeded=true;backgroundTask.task

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論