75 lines
2.9 KiB
Markdown
75 lines
2.9 KiB
Markdown
# Stepstead — iOS Pedometer Plugin (CMPedometer)
|
||
|
||
Godot 4 iOS plugin. `Pedometer` singleton'ı, `autoload/pedometer.gd` ile aynı
|
||
sözleşmeyi sağlar: `is_available / start / stop / get_step_count`.
|
||
|
||
**Kaynak dosyalar:**
|
||
- `pedometer.h`, `pedometer.mm` — singleton + CMPedometer mantığı
|
||
- `pedometer_module.h`, `pedometer_module.mm` — init/deinit (singleton kaydı)
|
||
- `pedometer.gdip` — plugin config (CoreMotion.framework + NSMotionUsageDescription)
|
||
|
||
> ⚠️ CMPedometer **iOS Simulator'da çalışmaz** (`is_available()` = false).
|
||
> Gerçek cihaz gerekir → **iPhone 13 ile test.**
|
||
|
||
---
|
||
|
||
## Derleme — godot-ios-plugins harness (Mac, önerilen)
|
||
|
||
**Gereksinim:** Mac + Xcode + command line tools + SCons (`brew install scons`).
|
||
|
||
```bash
|
||
# 1. Resmi iOS plugin harness'ını klonla
|
||
git clone https://github.com/godotengine/godot-ios-plugins.git
|
||
cd godot-ios-plugins
|
||
|
||
# 2. Godot 4.6 başlık dosyalarını üret (godot kaynağını çeker)
|
||
./scripts/generate_headers.sh 4.6.0.stable # repo README'sindeki sürüm formatı
|
||
|
||
# 3. Bu plugin'i plugins/ altına kopyala
|
||
cp -r /path/Stepstead/native/pedometer-ios plugins/pedometer
|
||
|
||
# 4. Derle (arm64, release) — çıktı bin/pedometer.*.a
|
||
scons target=template_release arch=arm64 plugin=pedometer version=4.6
|
||
scons target=template_debug arch=arm64 plugin=pedometer version=4.6
|
||
```
|
||
|
||
> SCons komutunun tam imzası harness sürümüne göre değişebilir; repo
|
||
> README'sini esas al. Çatı `plugins/pedometer/` altındaki tüm `.mm`
|
||
> dosyalarını otomatik derler.
|
||
|
||
---
|
||
|
||
## Godot projesine ekleme
|
||
|
||
1. Çıktıları projeye koy:
|
||
```
|
||
res://ios/plugins/pedometer/pedometer.a
|
||
res://ios/plugins/pedometer/pedometer.gdip
|
||
```
|
||
(`.gdip` zaten bu klasörde — `.a` ile birlikte kopyala.)
|
||
2. Godot: **Project > Export > iOS** preset'inde **Plugins** sekmesinde
|
||
`Pedometer` işaretli olmalı.
|
||
3. `.gdip` `NSMotionUsageDescription`'ı otomatik Info.plist'e ekler.
|
||
(Apple izni: ilk `start()` çağrısında sistem motion izni sorar.)
|
||
|
||
---
|
||
|
||
## iPhone 13'e yükleme (gerçek test)
|
||
|
||
1. Godot'ta iOS export → Xcode projesi üretir.
|
||
2. Xcode'da aç → **Signing & Capabilities**'da Apple ID (ücretsiz hesap olur,
|
||
7 günlük provisioning) ile imzala.
|
||
3. iPhone 13'ü kabloyla bağla → Xcode'da hedef cihaz seç → **Run**.
|
||
4. Oyunda login → `Pedometer.start()` (world.gd otomatik çağırır) →
|
||
sistem "Motion & Fitness" izni sorar → izin ver.
|
||
5. Telefonu cebe at, yürü → adım bakiyesi 30 sn'de bir `/world/sync-steps`
|
||
ile artar (sunucu anti-cheat tavanı 250/dk uygular).
|
||
|
||
---
|
||
|
||
## İleride (enhancement)
|
||
|
||
`startPedometerUpdatesFromDate:` uygulama açıkken sayar. Arka planda/kapalıyken
|
||
atılan adımları toparlamak için `queryPedometerDataFromDate:toDate:withHandler:`
|
||
ile son sync zamanından şu ana kadarki geçmişi çekmek gerekir (iOS 7 günlük
|
||
adım geçmişi tutar). MVP'de yok — `get_step_count` sadece oturum sayımı.
|