2017-02-27 74 views
0

我正嘗試使用Swift和React訪問當前設備上的電池信息。帶有React Native的iOS電池數據

我有BatteryManager.swift其中包含

import Foundation 
import UIKit 

@objc(BatteryManager) 
class BatteryManager: NSObject { 

    @objc(getBatteryLevel) 
    func getBatteryLevel() -> Float { 
    return UIDevice.current.batteryLevel; 
    } 

    @objc(getBatteryState) 
    func getBatteryState() -> UIDeviceBatteryState { 
    return UIDevice.current.batteryState 
    } 
} 

我也有一個BatteryManager.m文件

#import <Foundation/Foundation.h> 
#import <React/RCTBridgeModule.h> 

@interface RCT_EXTERN_MODULE(BatteryManager, NSObject); 

RCT_EXTERN_METHOD(getBatteryLevel) 

RCT_EXTERN_METHOD(getBatteryState) 

@end 

我有我的BatteryManager-Bridging-Header.h文件

#import <React/RCTBridgeModule.h> 

然後我清理並生成我的項目(不確定是否需要)並重新運行react-native run-ios,以便我重新啓動我的React Native服務器和我的iOS模擬器。

然後我通過 導入NativeModules`從'react-native'導入{NativeModules};

我接着寫console.log(NativeModules.BatteryManager) - 我看到我的方法getBatteryLevelgetBatteryStatus雖然他們都產生undefined

我試圖運行在setTimeout中的console.log但繼續得到undefined

值誰能幫我弄清楚,爲什麼?

回答

0

您是否嘗試過使用react-native-battery?看起來它是一個能夠完成你想要的任務的模塊。或者,如果您想嘗試並適應您的解決方案(儘管對我來說似乎多餘),您可以參考that project's GitHub repository中的Swift邏輯。

+0

感謝您的回答。這個任務不一定只是給電池數據提供電源,任務是嘗試寫一些簡單的Swift,然後利用React中的代碼,這就是爲什麼我選擇編寫一些簡單的電池相關功能。也不是'react-native-battery'代碼Objective-C? (我可能是錯的) – Dan

+0

@Munkie你可能是對的。我根本不是Swift或Objective-C專家,所以在這裏無法真正幫助你。祝你好運。 – TheJizel