Awareness API現已提供語義時間支援

谷歌開發者_發表於2017-06-29

640?wx_fmt=gif


640?wx_fmt=png


去年我們在 I/O 上釋出了 Awareness API,這是一個簡單但強大的 API,它讓開發者可以使用位置、天氣、時間和使用者活動等訊號來構建與情境相關的應用體驗。


Awareness API 提供兩種在您的應用中使用情境訊號的方式,可通過 Google Play 服務獲取。Snapshot API 讓您的應用可以請求有關使用者當前情境的資訊,而 Fence API 讓您的應用可以響應使用者情境變化並在情境符合某組特定條件時作出反應。例如,“每當使用者行走和插入耳機時通知我”。


目前,您可以在 Awareness API 上指定一個時界,但只能使用時間的絕對/標準表示形式。根據開發者反饋,我們意識到此 API 在構建時界方面的靈活性不足以支援人們在思考和談論時間時所使用的更高階的抽象表達。“本週”、“下一個假期”、“日落之後”都是很常見、很口語化的時間表達方式。這就是我們從今天開始向這些 API 新增語義時間支援的原因。


例如,如果您正在構建一個健身應用並需要一種方式在每天早晨提示使用者開始其例行活動,或者如果您正在構建一個需要在黃昏後開啟夜間模式的閱讀應用;您將需要查詢一個 3p API 以獲取使用者位置的日出/日落資訊,然後使用這些標準時間值編寫一個 Awareness 時界。藉助我們的最新更新,您可以使用我們的 TIME_INSTANT_SUNRISE 和 TIME_INSTANT_SUNSET 常量,並讓平臺為您管理所有複雜任務。


下面我們來看一個示例。假設您正在構建一個健身應用,其在週二和週四的日出時間提示使用者開始他們的晨練。您可以使用以下程式碼行設定此觸發。


// A sun-state-based fence that is TRUE only on Tuesday and Thursday during Sunrise AwarenessFence.and( TimeFence.aroundTimeInstant(TimeFence.TIME_INSTANT_SUNRISE, -10 * ONE_MINUTE_MILLIS, 5 * ONE_MINUTE_MILLIS), AwarenessFence.or( TimeFence.inIntervalOfDay(TimeFence.DAY_OF_WEEK_TUESDAY, 0, ONE_DAY_MILLIS), TimeFence.inIntervalOfDay(TimeFence.DAY_OF_WEEK_THURSDAY, 0, ONE_DAY_MILLIS)));


我們推出的一個頗受歡迎的語義時間功能是公共假期。該功能內的每個國家和區域都有其不同的假期。假設您構建的是一個本地遠足和探險應用,想要向使用者顯示他們在恰逢週五或週一的假期裡可以享受的活動。您可以使用“Days”(天數)和“Holiday”(假期)標誌的組合來為世界各地的所有使用者識別此狀態。只需 3 行程式碼您就可以執行此操作,並使其適用於世界上的任何地方。


// A local-time fence that is TRUE only on public holidays in the // device locale that fall on Fridays or Mondays. AwarenessFence.and( TimeFence.inTimeInterval(TimeFence.TIME_INTERVAL_HOLIDAY), AwarenessFence.or( TimeFence.inIntervalOfDay(TimeFence.DAY_OF_WEEK_FRIDAY, 9 * ONE_HOUR_MILLIS, 11 * ONE_HOUR_MILLIS), TimeFence.inIntervalOfDay(TimeFence.DAY_OF_WEEK_MONDAY, 9 * ONE_HOUR_MILLIS, 11 * ONE_HOUR_MILLIS)));


在這兩個示例中,Awareness 基於裝置語言區域設定執行將時間和假期進行本地化的繁重任務。


我們期待見到您將使用這個強大的 API 解決哪些問題。請加入我們的郵寄名單以獲取有關此 API 和 Google 的其他 Context API 的更新。


瞭解更多詳情,檢視文內所有連結(文件),請點選文末“閱讀原文”。


640?wx_fmt=gif

點選「閱讀原文」,檢視文件連結640?wx_fmt=gif

相關文章