Expo大作戰(三十)--expo sdk api之Permissions(許可權管理模組),Pedometer(計步器api)

鳥窩發表於2018-03-19

簡要:本系列文章講會對expo進行全面的介紹,本人從2017年6月份接觸expo以來,對expo的研究斷斷續續,一路走來將近10個月,廢話不多說,接下來你看到內容,講全部來與官網

我猜去全部機翻+個人修改補充+demo測試的形式,對expo進行一次大補血!歡迎加入expo興趣學習交流群:597732981

【之前我寫過一些列關於expo和rn入門配置的東i西,大家可以點選這裡檢視:從零學習rn開發

相關文章:

Expo大作戰(一)--什麼是expo,如何安裝expo clinet和xde,xde如何使用

Expo大作戰(二)--expo的生命週期,expo社群交流方式,expo學習必備資源,開發使用expo時關注的一些問題

Expo大作戰(三)--針對已經開發過react native專案開發人員有針對性的介紹了expo,expo的侷限性,開發時專案選型注意點等

Expo大作戰(四)--快速用expo構建一個app,expo中的關鍵術語

Expo大作戰(五)--expo中app.json 檔案的配置資訊

Expo大作戰(六)--expo開發模式,expo中exp命令列工具,expo中如何檢視日誌log,expo中的除錯方式

Expo大作戰(七)--expo如何使用Genymotion模擬器

Expo大作戰(八)--expo中的publish以及expo中的link,對link這塊東西沒有詳細看,大家可以來和我交流

更多>>

寫在二十三章以後的話,之前的翻譯,不管如何,好與不好,終究是告一段落,也把expo基礎理論的東西又深入的理解了一遍,後續expo大作戰系列將主要介紹expo sdk的api。

許可權(Permissions)

當新增可訪問使用者裝置上潛在敏感資訊的功能(例如其位置)時,或可能向其傳送可能不需要的推送通知時,您需要首先詢問使用者的許可。 除非你已經徵求他們的許可,否則不需要(Unless you’ve already asked their permission, then no need)。 所以我們有許可權模組。

如果您正在將應用程式部署到Apple iTunes Store,則應考慮嚮應用程式新增其他後設資料,以便自定義系統許可權對話方塊並解釋您的應用程式需要許可權的原因。 請參閱App Store部署指南中的更多資訊。

Expo.Permissions.getAsync(type)

確定您的應用是否已被授予對提供的許可權型別的訪問許可權。

引數

type(string) - 許可權的名稱。

返回

返回使用關於許可權的資訊解決的Promise,包括狀態,到期和範圍(如果它適用於許可權型別)。(Returns a Promise that is resolved with the information about the permission, including status, expiration and scope (if it applies to the permission type).)

複製程式碼
async function alertIfRemoteNotificationsDisabledAsync() {
  const { Permissions } = Expo;
  const { status } = await Permissions.getAsync(Permissions.NOTIFICATIONS);
  if (status !== 'granted') {
    alert('Hey! You might want to enable notifications for my app, they are good.');
  }
}複製程式碼
複製程式碼

Expo.Permissions.askAsync(type)

提示使用者獲得許可。 如果他們已經授予訪問許可權,則回應將成功。

引數

type(string) - 許可權的名稱。

返回

返回使用關於許可權的資訊解決的Promise,包括狀態,到期和範圍(如果它適用於許可權型別)。

複製程式碼
async function getLocationAsync() {
  const { Location, Permissions } = Expo;
  const { status } = await Permissions.askAsync(Permissions.LOCATION);
  if (status === 'granted') {
    return Location.getCurrentPositionAsync({enableHighAccuracy: true});
  } else {
    throw new Error('Location permission not granted');
  }
}複製程式碼
複製程式碼

Expo.Permissions.NOTIFICATIONS

本地和推送通知的許可權型別。

注意:在iOS上,這不會消除未確定 拒絕,因此只會返回已授予或未確定。 這是由於底層本機API的實現方式所致。

Expo.Permissions.LOCATION
位置訪問許可權型別。

Expo.Permissions.CAMERA
照片和視訊拍攝的許可型別。

Expo.Permissions.AUDIO_RECORDING
音訊錄製的許可型別。

Expo.Permissions.CONTACTS
閱讀聯絡人的許可權型別。

Expo.Permissions.CAMERA_ROLL
用於讀取或寫入相機的許可型別。

計步器(Pedometer)

使用Core Motion(iOS)或Google Fit(Android)獲取使用者的步數。

Expo.Pedometer.isAvailableAsync()


確定計步器是否可用。

返回

返回一個可解析為布林值的承諾,指示計步器是否在此裝置上可用。

Expo.Pedometer.getStepCountAsync(start, end)

獲取兩個日期之間的步數。

引數

start(datetime) - 指示測量步驟的範圍開始的日期。
end(end) - 指示測量步驟的範圍結束的日期。

返回

返回一個使用steps鍵解析為Object的promise,它是一個Number,表示在給定日期之間所採用的步數。


Expo.Pedometer.watchStepCount(callback)


訂閱計步器更新。

引數

回撥函式(callback)當新的步數資料可用時呼叫的回撥函式。 該回撥提供了一個單個引數,該引數是具有步驟鍵的物件。

返回

一個EventSubscription物件,當您想要取消訂閱偵聽器時,您可以呼叫remove()。

下一張繼續介紹,這一篇主要介紹了:expo sdk api之Permissions(許可權管理模組)

,
Pedometer(計步器api),歡迎大家關注我的微信公眾號,這篇文章是否被大家認可,我的衡量標準就是公眾號粉絲增長人數。歡迎大家轉載,但必須保留本人部落格連結!


相關文章