天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

WM有約II(六):分級(jí)限制

等級(jí)制度

  在上一集里,我們把發(fā)送查詢(xún)短信息的人分為"聯(lián)系人"和"陌生人"兩大類(lèi),應(yīng)用程序會(huì)自動(dòng)回復(fù)"聯(lián)系人",忽略"陌生人",在這一集里,我們將會(huì)引入另外兩種類(lèi)型:"白名單"和"黑名單"。如果你看過(guò)上一集,你應(yīng)該知道"聯(lián)系人"和"陌生人"是互斥的,它們之間的區(qū)別是手機(jī)號(hào)碼是否存在聯(lián)系人里。"白名單"和"黑名單"是在"聯(lián)系人"上發(fā)展出來(lái)的兩個(gè)細(xì)分類(lèi)型,它們也是互斥的,"白名單"允許執(zhí)行所有查詢(xún),而"黑名單"則禁止執(zhí)行所有查詢(xún)。至于"陌生人",我們將會(huì)給它一個(gè)"注冊(cè)"的機(jī)會(huì),讓它可以請(qǐng)求把自己加到聯(lián)系人里。這四個(gè)等級(jí)將會(huì)通過(guò)AccessLevel枚舉來(lái)表達(dá):

代碼 1

  在這一集里,我們將會(huì)在這個(gè)"等級(jí)制度"的基礎(chǔ)上實(shí)現(xiàn)如下效果:

訪問(wèn)級(jí)別

允許執(zhí)行的操作

Whitelist

PingStatus、PingSchedule

Contact

PingStatus

Stranger

SignUp

Blacklist

N/A

如何界定訪問(wèn)級(jí)別?

  首先,發(fā)送方要么在聯(lián)系人里,要么不在,如果不在,那么他/她的訪問(wèn)級(jí)別就是Stranger,如果在,我們還要看看他/她是否在白名單或者黑名單里,如果也在,那么他/她的訪問(wèn)級(jí)別就是Whitelist或者Blacklist,否則就是Contact。就實(shí)現(xiàn)方式而言,我們應(yīng)該優(yōu)先考慮檢查白名單和黑名單,因?yàn)閺募系慕嵌葋?lái)看,它們均是聯(lián)系人的子集,如果發(fā)送方在任一名單里,我們就可以立即返回他/她的訪問(wèn)級(jí)別,而不必遍歷所有聯(lián)系人,于是,我們可以這樣獲取發(fā)送方的訪問(wèn)級(jí)別:

代碼 4

  那么,查詢(xún)操作的訪問(wèn)級(jí)別又如何獲取呢?我們知道,應(yīng)用程序(目前)只支持三種查詢(xún)操作,每種操作所需的最低訪問(wèn)級(jí)別如下表所示:

查詢(xún)操作

所需的最低訪問(wèn)級(jí)別

PingStatus

Contact

PingSchedule

Whitelist

SignUp

Stranger*

請(qǐng)把我加為好友……

  下面,我們將會(huì)實(shí)現(xiàn)SignUp操作。首先,我們要定義這個(gè)操作的短信息,很明顯,它包含的數(shù)據(jù)將用于創(chuàng)建Outlook聯(lián)系人,最低限度應(yīng)該提供姓名和手機(jī)號(hào)碼:

{Trombone:SignUp(Leehom,Wang,13813572468)}

  用戶(hù)界面也需要做出相應(yīng)調(diào)整:

圖 11

  這個(gè)用戶(hù)界面僅向用戶(hù)收集姓名,那么,我們?nèi)绾潍@取本機(jī)的號(hào)碼?你可以通過(guò)P/Invoke調(diào)用SmsGetPhoneNumber函數(shù),也可以像我這樣,使用OpenNETCF的Smart Device Framework。下載、安裝Smart Device Framework 2.3,添加對(duì)OpenNETCF.Phone.dll的引用,接著就是修改Ping按鈕的代碼了(原本的代碼參見(jiàn)《WM有約II(四):你明天有空嗎?》的代碼14):

代碼 7

  好了,運(yùn)行一下看看效果:

圖 12

  再來(lái)看看Cellular Emulator,很好,注冊(cè)短信息順利發(fā)出了:

圖 13

  接下來(lái)就是注冊(cè)短信息的處理了,因?yàn)樗会槍?duì)陌生人,而且無(wú)需自動(dòng)回復(fù),所以我們不必遵守SmsProcessorBase類(lèi)的套路,直接讓SignUpProcessor類(lèi)實(shí)現(xiàn)ISmsProcessor接口就可以了。在實(shí)現(xiàn)SignUpProcessor.Process方法之前,我們需要一個(gè)輔助方法來(lái)提取注冊(cè)短信息里的數(shù)據(jù):

代碼 8

  因?yàn)樽?cè)短信息的處理需要用戶(hù)的參與,用戶(hù)有權(quán)決定把發(fā)送方添加到聯(lián)系人還是忽略他/她,所以應(yīng)用程序應(yīng)該把截獲的注冊(cè)短信息添加到某個(gè)隊(duì)列里,以便用戶(hù)過(guò)后查詢(xún)和處理,避免用戶(hù)在應(yīng)用程序截獲注冊(cè)短信息時(shí)不得不馬上處理的尷尬情景。為此,我們需要一個(gè)RegistrationQueue來(lái)暫存待處理的注冊(cè)請(qǐng)求,由于每個(gè)注冊(cè)請(qǐng)求都包含了接收時(shí)間、姓名和手機(jī)號(hào)碼,于是我們用一個(gè)Registration類(lèi)來(lái)存放這些數(shù)據(jù):

代碼 9

  由于這些數(shù)據(jù)有可能跨越多個(gè)應(yīng)用程序會(huì)話(huà),于是我們需要把它們持久化到文件里,這里我還是選擇使用XML:

代碼 10

  因?yàn)镽egistrationQueue的實(shí)現(xiàn)和InterceptionHistory(參見(jiàn)《WM有約II(五):區(qū)別對(duì)待不同的手機(jī)號(hào)碼》)相似,所以我就不在這里一一細(xì)說(shuō)了。

  回到SignUpProcessor.Process方法,在截獲注冊(cè)短信息時(shí),我們需要判斷發(fā)送方是否陌生人,若是,把相關(guān)數(shù)據(jù)添加到RegistrationQueue,否則,忽略該注冊(cè)短信息。另外,我們還需要在InterceptionHistory里等級(jí)本次截獲:

代碼 11

  最后,我們需要為此配備一個(gè)用戶(hù)界面:

圖 14

  當(dāng)應(yīng)用程序啟動(dòng)時(shí),我們要把RegistrationQueue綁定到上面的DataGrid:

代碼 12

  當(dāng)DataGrid上選中的行發(fā)生改變時(shí),下面的兩個(gè)TextBox的內(nèi)容要更新為當(dāng)前選中行的姓名:

代碼 13

  當(dāng)用戶(hù)單擊Add按鈕時(shí),應(yīng)用程序?qū)?huì)用當(dāng)前選中的注冊(cè)信息來(lái)創(chuàng)建Outlook聯(lián)系人,創(chuàng)建完畢后將會(huì)把注冊(cè)信息從RegistrationQueue里刪除:

代碼 14

  而當(dāng)用戶(hù)單擊Remove按鈕時(shí),應(yīng)用程序?qū)?huì)直接把當(dāng)前選中的注冊(cè)信息從RegistrationQueue里刪除。

好了,又到了測(cè)試的時(shí)候了(在測(cè)試之前,別忘了把SignUpProcessor掛接到InterceptorManager里!),通過(guò)Cellular Emulator發(fā)送如下注冊(cè)短信息:

{Trombone:SignUp(Leehom,Wang,13813572468)}

圖 15

現(xiàn)在,我們把注意力集中到模擬器上:

圖 16

從上圖可以看到,注冊(cè)短信息已被成功截獲,單擊Add按鈕,應(yīng)用程序?qū)?huì)用選中的注冊(cè)信息創(chuàng)建Outlook聯(lián)系人:

圖 17

此時(shí),如果我們通過(guò)Cellular Emulator使用剛才的手機(jī)號(hào)碼發(fā)送如下查詢(xún)短信息:

{Trombone:PingStatus}

將會(huì)收到應(yīng)用程序的自動(dòng)回復(fù):

圖 18

而主界面上的截獲歷史也能正確顯示發(fā)送方的姓名了:

圖 19

你還想要什么?

  有一次,我和一個(gè)六年級(jí)的學(xué)生一起看動(dòng)畫(huà)片,當(dāng)我們看到正義的代表向怪獸發(fā)動(dòng)反擊時(shí),我問(wèn)他:"你現(xiàn)在看到這種情節(jié)還會(huì)覺(jué)得體內(nèi)有一股激動(dòng)在奔流嗎?"他說(shuō)沒(méi)有。曾幾何時(shí),當(dāng)我們碰到可以使用新技術(shù)的機(jī)會(huì)時(shí),我們也會(huì)異常激動(dòng)……

  或許,在很多人的眼里,技術(shù)只不過(guò)是用來(lái)解決問(wèn)題的工具罷了,然而,我更傾向于通過(guò)學(xué)習(xí)/使用技術(shù)尋找樂(lè)趣。下一集,要不我們?cè)囈幌耫b4o吧,然后,再試一下Windows Mobile上的Notification,就是當(dāng)你收到短信息時(shí)屏幕下面彈出的提示框……

NET技術(shù)WM有約II(六):分級(jí)限制,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 99视频导航| 伦理片 a在线线版韩国 | 亚洲精品久久久久AV无码 | 在教室伦流澡到高潮H女攻视频 | 泡妞高手在都市免费观看 | 成 人 色综合 | 2021国产在线视频 | 99热只有精品 | 欧美乱妇狂野欧美在线视频 | 岛国电影网址 | 国产亚洲视频在线 | 国产精品爆乳尤物99精品 | MM131亚洲精品久久安然 | 波多野结衣教师系列6 | 一本道色综合手机久久 | 久久九九精品国产自在现线拍 | 果冻传媒MV免费播放在线观看 | 白银谷在线观看 | 国产免费人成在线视频有码 | 日本无码色哟哟婷婷最新网站 | 日韩视频中文字幕精品偷拍 | 少妇被阴内射XXXB少妇BB | 耻辱诊察室1一4集动漫在线观看 | 狼与美女谐音歌词 | 欧美激情视频在线观看一区二区三区 | 青青草国产精品 | 日本漂亮妈妈7观整有限中 日本片bbbxxx | 日本黄色网站在线观看 | 午夜一区欧美二区高清三区 | 在线观看免费亚洲 | 动漫女主被扒开双腿羞辱 | 国产精品乱码一区二区三 | 中文人妻熟妇精品乱又伧 | 国产精品99久久久久久动态图 | 欧美97色伦影院在线观看 | wankz tv videos国产 | 人人干人人看 | 人妻久久久精品99系列AV | 2012中文字幕在线动漫电影 | 国产精品久久久久激情影院 | 免费99精品国产自在现线 |