>我正在尝试使用 Swift 和 React 访问当前设备上的电池信息。
我有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)
- 我确实看到我的方法getBatteryLevel
和getBatteryStatus
尽管它们都产生了undefined
。
我尝试运行控制台.logsetTimeout
但继续获得undefined
谁能帮我弄清楚为什么?
你试过用react-native-battery
吗?它似乎是一个完成您想要的模块。或者,如果你想尝试调整你的解决方案,你可以从该项目的 GitHub 存储库引用 Swift 逻辑(尽管这对我来说似乎是多余的)。