// Stepstead — iOS Pedometer plugin (CMPedometer) implementasyonu. #import "pedometer.h" #import #import // Objective-C tarafı: CMPedometer'ı tutar, adım sayısını günceller. @interface StepsteadPedometer : NSObject @property(nonatomic, strong) CMPedometer *pedometer; @property(nonatomic, assign) int stepCount; @property(nonatomic, strong) NSDate *sessionStart; @property(nonatomic, assign) BOOL running; @end @implementation StepsteadPedometer @end static StepsteadPedometer *_ped = nil; Pedometer *Pedometer::instance = nullptr; void Pedometer::_bind_methods() { ClassDB::bind_method(D_METHOD("is_available"), &Pedometer::is_available); ClassDB::bind_method(D_METHOD("start"), &Pedometer::start); ClassDB::bind_method(D_METHOD("stop"), &Pedometer::stop); ClassDB::bind_method(D_METHOD("get_step_count"), &Pedometer::get_step_count); } bool Pedometer::is_available() { // Not: iOS Simulator'da daima false döner — gerçek cihaz gerekir. return [CMPedometer isStepCountingAvailable] ? true : false; } void Pedometer::start() { if (![CMPedometer isStepCountingAvailable]) { return; } if (_ped == nil) { _ped = [[StepsteadPedometer alloc] init]; _ped.pedometer = [[CMPedometer alloc] init]; _ped.stepCount = 0; } if (_ped.running) { return; } _ped.running = YES; _ped.sessionStart = [NSDate date]; _ped.stepCount = 0; // Uygulama açıkken canlı güncelleme. numberOfSteps = sessionStart'tan beri. [_ped.pedometer startPedometerUpdatesFromDate:_ped.sessionStart withHandler:^(CMPedometerData *_Nullable data, NSError *_Nullable error) { if (data != nil && error == nil) { _ped.stepCount = [data.numberOfSteps intValue]; } }]; } void Pedometer::stop() { if (_ped != nil && _ped.running) { [_ped.pedometer stopPedometerUpdates]; _ped.running = NO; } } int Pedometer::get_step_count() { return _ped != nil ? _ped.stepCount : 0; } Pedometer *Pedometer::get_singleton() { return instance; } Pedometer::Pedometer() { ERR_FAIL_COND(instance != nullptr); instance = this; } Pedometer::~Pedometer() { if (_ped != nil) { [_ped.pedometer stopPedometerUpdates]; _ped = nil; } instance = nullptr; }