地理圍欄,打造智慧生活新邊界

HarmonyOS_SDK發表於2024-09-03

隨著智慧手機和其他移動裝置的普及,使用者對基於位置獲取個性化服務的需求大幅增加,例如使用者進入商圈範圍並停留操作一段時間後,智慧觸發向使用者推送該商圈吃、喝、玩、樂的優惠活動訊息;又如當使用者到達非常駐地的機場時觸發圍欄,向使用者推送詢問是否需要預定機場附近的酒店的訊息,從而第一時間洞悉使用者潛在需求並提供相關服務。

目前市面上大多數第三方訊息推送服務商,通常無法將推送範圍精確到某個商圈或較小的區域。而HarmonyOS SDK位置服務(Location Kit)的地理圍欄技術可以很好地彌補這一不足。

地理圍欄就是用一個虛擬的柵欄圍出一個虛擬地理邊界,當手機進入、離開或在這個圍起來的特定地理區域內活動時,手機可以自動接收通知和警告訊息。將地理圍欄和訊息推送相結合,即可實現對特定區域人群的精準訊息推送。
image

比如,當目標受眾走進某個商圈附近時,一款生活服務類App將會向他們推送"商圈內多家餐廳正在打折,點選檢視優惠詳情"的訊息,這樣可以及時向使用者推送與他們當前位置和需求相關的資訊,,增加使用者的購買意願。地理圍欄技術可以幫助App更精確地定位目標使用者,提高推送的精準度和效果。

地理圍欄技術也提供了更精確的目標定位能力。比如,在安全監管方面,可以設定圍欄以設定特定區域內的活動,提升安全監控和應急響應。在行業場景中,針對物流運輸行業,可用於跟蹤貨物在運輸過程中的位置,提醒或者通知相關人員貨物的抵達或者離開;隨著智慧城市和物聯網技術的興起,地理圍欄技術也被廣泛應用於城市管理、智慧交通、環境監測等領域。

image

功能優勢

系統級圍欄,圍欄功耗低

App休眠仍能直接喚醒,圍欄檢測程序常駐,避免受後臺應用影響

圍欄範圍:支援半徑200米到10公里範圍

自定義圍欄檢測

圍欄數量不受限制,且可以直接選擇商圈圍欄

開發步驟

1.使用地理圍欄功能,需要有許可權ohos.permission.APPROXIMATELY_LOCATION,位置許可權申請的方法和步驟見申請位置許可權開發指導

2.匯入geoLocationManager模組、wantAgent模組和BusinessError模組

import { geoLocationManager } from '@kit.LocationKit';
import { wantAgent } from '@kit.AbilityKit';
import { BusinessError } from '@kit.BasicServicesKit'

3.建立WantAgentInfo資訊。

場景一:建立拉起Ability的WantAgentInfo資訊。

let wantAgentObj:_wantAgent|null = null; // 用於儲存建立成功的wantAgent物件,後續使用其完成觸發的動作。

// 透過WantAgentInfo的operationType設定動作型別
let wantAgentInfo:wantAgent.WantAgentInfo = {
    wants: [
        {
            deviceId: '',
            bundleName: 'com.example.myapplication',
            abilityName: 'EntryAbility',
            action: '',
            entities: [],
            uri: '',
            parameters: {}
        }
    ],
    operationType: wantAgent.OperationType.START_ABILITY,
    requestCode: 0,
    wantAgentFlags:[wantAgent.WantAgentFlags.CONSTANT_FLAG]
};

場景二:建立釋出公共事件的WantAgentInfo資訊。

let wantAgentObj:_wantAgent|null = null; // 用於儲存建立成功的WantAgent物件,後續使用其完成觸發的動作。

// 透過WantAgentInfo的operationType設定動作型別
let wantAgentInfo:wantAgent.WantAgentInfo = {
    wants: [
        {
            action: 'event_name', // 設定事件名
            parameters: {},
        }
    ],
    operationType: wantAgent.OperationType.SEND_COMMON_EVENT,
    requestCode: 0,
    wantAgentFlags: [wantAgent.WantAgentFlags.CONSTANT_FLAG],
}

4.呼叫getWantAgent()方法進行建立WantAgent。

並且在獲取到WantAgent物件之後呼叫地理圍欄介面新增圍欄,當裝置進入或者退出該圍欄時,系統會自動觸發WantAgent的動作。

// 建立WantAgent
wantAgent.getWantAgent(wantAgentInfo, (err, data) => {
    if (err) {
      console.error('getWantAgent err=' + JSON.stringify(err));
      return;
    }
    console.info('getWantAgent success');
    wantAgentObj = data;
    let requestInfo:geoLocationManager.GeofenceRequest = {'scenario': 0x301, "geofence": {"latitude": 31.12, "longitude": 121.11, "radius": 100, "expiration": 10000}};
    try {
        geoLocationManager.on('gnssFenceStatusChange', requestInfo, wantAgentObj);
    } catch (err) {
        console.error("errCode:" + JSON.stringify(err));
    }
});

注意:目前僅支援圓形圍欄,並且依賴GNSS晶片的地理圍欄功能,僅在室外開闊區域才能準確識別使用者進出圍欄事件。

綜上所述,地理圍欄技術在智慧化和定位服務領域具有重要應用。對於開發者來說不僅是提升服務精準度和使用者體驗的利器,還可以最佳化資源管理,並創造新的商業價值和解決方案。

瞭解更多詳情>>

訪問位置服務聯盟官網

獲取位置服務開發指導文件

相關文章