2017-02-27 73 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