Ana içeriğe geç

mobile_devices

Bu tablo kullanıcıya ait mobil kurulumları ve push token ilişkisini taşır.

Bir kullanıcının birden fazla telefonu olabilir. Push token, cihaz platformu, uygulama sürümü ve son görülme bilgileri kullanıcı tablosunda tutulursa hem tekrar oluşur hem de çok cihazlı senaryo bozulur. Bu nedenle her mobil kurulum ayrı bir kayıt olarak izlenir; aynı kullanıcı hem iPhone hem Android cihazla sisteme bağlanabilir. Kısaca: kullanıcının hangi mobil kurulumlarla sisteme eriştiği bu tabloda tutulur.

Push performans kuralı: kullanıcı statüsü 204 (Suspended) olduğunda bu kullanıcıya push gönderimi yapılmaz. Uygulama katmanı push gönderiminden önce users.status_id kontrol eder; 204 ise ilgili kullanıcının tüm cihaz kurulumları push hedef listesinden çıkarılır. Kullanıcı tekrar 202 (Active) olduğunda push gönderimi yeniden açılır.

Push teslim başarısızlık kuralı: push sağlayıcısı "token geçersiz / cihaz push kabul etmiyor" dönerse ilgili mobile_devices kaydı pasife alınır (is_active: false) ve push hedef listesinden çıkarılır. Aynı kayıt uzun süre pasif kalırsa (operasyon politikası) silinebilir. Önerilen sıra: önce pasifleştir, geri kazanılamayan tokenlarda temizlik job'ı ile sil.

Bu tablo kullanıcı hesabının kendisini veya yetki ilişkilerini taşımaz; o bilgiler sırasıyla users, authorities ve authority_permissions tablolarındadır. Burada yalnızca mobil istemcinin kurulumu, teknik kimliği ve erişim durumu yer alır. Kısaca: kimlik ve yetki tanımı burada değildir.

Kolonlar

KolonTipNullKısıtlarAnlamı
idinthayırPK, AUTO INCREMENTMobil cihaz anahtarı
user_idinthayırFK → users.idSahibi olan kullanıcı
device_identifiervarchar(255)hayırUNIQUE (user_id ile birlikte)Uygulama kurulum kimliği
push_tokenvarchar(255)hayır-Push bildirimi token değeri
platformmobile_device.platformhayırENUM: ios, androidMobil işletim sistemi ailesi
manufacturervarchar(50)evet-Cihaz üreticisi
modelvarchar(50)evet-Cihaz modeli
os_versionvarchar(50)evet-İşletim sistemi sürümü
app_versionvarchar(50)evet-Uygulama sürümü
is_activebooleanhayırDEFAULT: trueKurulum aktif mi (Suspended veya push teslim hatasında push hedefinden düşürülür)
last_login_timetimestampevet-Son başarılı giriş zamanı
last_seen_timetimestampevet-Son aktif görülme zamanı
create_timetimestamphayır-Oluşturma zamanı
update_timetimestamphayır-Güncelleme zamanı

Unique Constraint: (user_id, device_identifier)

Push Token Yaşam Döngüsü (Öneri)

  • Uygulama her açılışta user_id + device_identifier + push_token bilgisi ile kayıt güncellemeli.
  • Aynı kullanıcı ve aynı kurulum kimliği varsa yeni satır açmak yerine mevcut kayıt güncellenmeli.
  • Push sağlayıcısı "token geçersiz / kayıt yok" döndürdüğünde ilgili cihaz kaydı pasife alınmalı (is_active: false).
  • Pasif cihaz kayıtları belirlenen süre sonunda (ör. 30 gün) temizlik süreci ile silinmeli.
  • Push gönderim listesi oluşturulurken yalnızca aktif kullanıcı + aktif cihaz kayıtları filtreye alınmalı.

Örnek Kayıtlar

{
"id": 1,
"user_id": 1,
"device_identifier": "ios-installation-001",
"push_token": "expo_token_user1_ios",
"platform": "ios",
"manufacturer": "Apple",
"model": "iPhone 14",
"os_version": "17.4",
"app_version": "1.0.3",
"is_active": true,
"last_login_time": "2026-04-03T09:00:00Z",
"last_seen_time": "2026-04-03T10:30:00Z",
"create_time": "2026-04-01T08:00:00Z",
"update_time": "2026-04-03T10:30:00Z"
}

Özet: Aynı kullanıcının iOS kurulumunu temsil eder. Son görülme zamanı güncel olduğu için aktif kullanılan ana cihaz gibi davranır.