ActiveSync Service Provider實現wince聯絡人同步
1 什麼是ActiveSync Service Provider(ASP)
參考文章,引用2處有一個完整的例子
引用1 Developing ActiveSync Service Providers: The First Look
引用2 Developing ActiveSync Service Providers: Desktop Part Implementation
引用3(中文)
2 為什麼要'重現'聯絡人同步
實際上,mobile和wince上都有現成的聯絡人同步元件.如果你可以接受POOM複雜的介面,接受POOM中聯絡人的固定屬性以及POOM儲存聯絡人的實現方式,那好,加上POOM同步元件就可以了.
POOM聯絡人在wince上是存在ObjectStore中的Contact資料庫(CEDATABASE中).在wince5上,ObjectStore只能在RAM中.目前我還沒找到方法將聯絡人存到其他地方,除非自己在適當的時候,一個一個讀出來,存到檔案,再在適當的時候,一個一個讀出來,再存回去(這種方式也會帶來同步的問題,因為同步是基於OID的,而再恢復聯絡人的時候,我們無法控制恢復聯絡人的OID).在wince6上,ObjectStore是基於HIVE的,若實現HIVE則可以輕易儲存好聯絡人,但儲存聯絡人會導致一個很怪異的問題,就是系統下次重啟時,會將initdb.ini中的資料再次匯入ObjectStore,導致ObjectStore中的資料出現大量重複.
3 如何實現聯絡人同步
wince上聯絡人,任務等同步都是在pegobj.dll中實現.編譯引用2處下載的例子,修改DevASPSimpleFldr.cpp函式 CASPSimpleFolder::GetName(),返回_T("Contact"),編譯好的檔案新增到裝置登錄檔
[HKEY_LOCAL_MACHINEWindows CE ServicesSynchronizationObjectsContact]
"Store"="DevASPSimple.dll"
即可用來同步聯絡人,當然由於例子的限制,只能同步一個聯絡人.
兩個可能需要考慮的地方
1) Packet的解析:
同步讀寫資料時,會呼叫IReplObjHandler的SetPacket,GetPacket介面.資料格式為(B 為位元組)
資料頭 8B 其中前兩個位元組為 屬性的數目,其他的無用
屬性列表
CEPROPID 4B
若CEPROPID 第10位(0x400)為1,說明該屬性已被刪除,屬性內容為空
否則
CEVT_I2,CEVT_UI2 2B
CEVT_I4,CEVT_UI4,CEVT_BOOL 4B
CEVT_FILETIME 8B
CEVT_LPWSTR 0結尾
CEVT_BLOB 長度n 4B+ 內容(nB)
另外CEPROPID為0x4005001F,屬性視為已被刪除(在pegob中對該屬性做了特殊處理,我們應該可以簡單忽略)
2) ASP是基於ObjectStore的,任意ObjectStore的變動,Server都會通知ASP,ASP判斷是不是它關心的Object,判斷會影響到多少個Item,然後再設定相應的屬性.如果我們的聯絡人不存在ObjectStore中,修改聯絡人後,還需要修改特定的ObjectStore物件(如特定名稱的根目錄下檔案),由該物件來充當信使.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/116625/viewspace-998757/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- iOSContactsUI(聯絡人)iOSUI
- CRM系統中的聯絡人是什麼?如何進行聯絡人管理?
- Android訪問和載入本地聯絡人的程式碼實現Android
- 網站聯絡人更改操作網站
- Laravel 2.3 Service ProviderLaravelIDE
- win10 如何匯入人脈聯絡人_win10人脈怎麼匯入聯絡人Win10
- web service實現原理與非同步呼叫Web非同步
- iPhone緊急聯絡人設定教程 iPhone怎麼設定緊急聯絡人?iPhone
- WinCE資料通訊之Web Service篇Web
- 同步與阻塞的區別與聯絡
- 蘋果iphone XS匯入聯絡人的方法 iphone XS怎麼批次匯入聯絡人?蘋果iPhone
- 小米手機設定緊急聯絡人方法 小米能設定緊急聯絡人嗎?
- HarmonyOS-基礎之聯絡人案例
- Laravel Service Provider 概念詳解LaravelIDE
- 鴻蒙(Harmony) NEXT - AlphabetIndexer實現聯絡人字母索引鴻蒙AlphabetIndex索引
- OPPO手機緊急聯絡人設定使用教程 OPPO手機怎麼設定緊急聯絡人
- iOS獲取通訊錄聯絡人資訊iOS
- 初識 iOS 9 中新的聯絡人框架iOS框架
- MIUI7怎麼匯出匯入手機聯絡人?MIUI7匯入匯出手機聯絡人教程UI
- 聯絡人管理工具:Cisdem ContactsMate for MacMac
- 跨程式共享資料,讀取聯絡人資訊
- tableView右側聯絡人/城市的索引設定View索引
- 奇酷手機怎麼合併和拆分聯絡人 奇酷手機怎麼合併和拆分聯絡人教程
- 【ARM-WINCE】WinCE5.0/6.0下,通過command line實現自動化編譯編譯
- 用於聯絡人管理的三個開源工具開源工具
- Contacts Journal CRM for Mac聯絡人管理工具Mac
- Contacts Journal CRM for Mac(聯絡人管理工具)Mac
- android 從SIM卡獲取聯絡人資訊Android
- Word與Outlook聯絡人的郵件合併(轉)
- 新百月生實體平臺vq1521185105聯絡人
- 如何用Nearby Service讓你的遊戲實現近距離聯機遊戲
- SAP Spartacus 的 TMS 和 Event Service 實現的關聯關係
- Mac聯絡人管理工具——Contacts Journal CRM for MacMac
- 大資料在疾病間建立起驚人聯絡大資料
- Android KK臺,聯絡人列表#集團放置A~Z之前Android
- 透過地址簿向聯絡人傳送病毒郵件!
- 如何在 Laravel 5.1 中建立服務 Service ProviderLaravelIDE
- ActiveSync 協議選項協議