2016-04-16 20 views
6

Her iki aygıt kullanıcısı tarafından kabul edildiğinde iki aygıt arasında bir saat zamanlayıcı oturumu sürdürmek için gereken iOS uygulama üzerinde çalışıyorum?İki farklı cihaz arasında saat oturumu nasıl yapılır?

Ancak bu, her iki cihazda zamanlamada bir kusur olmadan nasıl başarılabileceğinden emin değilim?

Zaten şu fikirler üzerinde bakmak var: her iki cihazda o zamanlayıcı aynı anda başlayacak böylece

1) Webservices yardımıyla iki cihazda durumunu korumak veya bildirimi itin. Ancak ağ düzgün çalışmıyorsa, bu yaklaşım başarısız oluyor ve her iki cihazda zamanlayıcıda hata var.

Buna ek olarak, ben de ben bile cihaz tarih ve saati değiştirdikten sonra uygulama saati değişmez önleyebilir nasıl bilmek istiyorum.

Bu konuda herhangi bir yardım mutluluk duyacaktır.

Şimdiden teşekkürler.

Düzenleme:

BZZ yaklaşımı hayata geçirdikten sonra, o gayet iyi ama hala sorunla karşı karşıya am tek şey başka bir cihaz B'ye ağ damgası çıkan göndermek için cihaz A'dan çağıran webservice alınan süresini hesaplamak ve korumak için nasıl

Bu davada ne yapılabilir?

cevap

2

Bazı düşünceler: Kendi zamanının

  • rapor takibi, sistem saatinin bağımsız olması. Bir şey görüntülemeniz gerektiğinde, zamanınızı kullanıcı duvar saati saatine dönüştürmek için yalnızca sistem saatini kullanın.

  • bir cihazda (ikinci) gibi bir zaman-birim, diğer cihaz örneğin ikinci eşit olmalıdır bunun süresi

  • ağ gecikme temel bir sorundur) her iki cihaz üzerinde eşit olduğu güven. Her iki cihaz arasında daima bir sapma olabileceğini düşünün. Belki gecikme gösteren bir yol ile gelip, ya mutlak zaman İşte

alakalı olmadığı bir yol ile gelip olabilecek bir fikirdir: DEVICE1 bir senkronizasyon-pakete her 5 saniyede gönderdiğinde Device2, bu paketi 6 saniyede ne yaparsa yapmadan önce bu pakete sahip olmalıdır. Yani eğer paket 5 saniye içinde henüz cihaz2'de değilse, bir sonraki ne gerekiyorsa yapmaya devam etmeden önce paketin gelmesini bekleyebilir. Paket 3 saniyede geldiğinde, cihaz2 bunu tutmalı ve ikinci saniyede işlem yapmalıdır. Bunu iki yönlü olarak yapın ve her iki uygulama da 5 saniyelik zaman dilimi içinde senkronize edilir. Gereksinimlerinize ve ağınıza bağlı olarak, 'beklemenin' ne anlama geldiğini ve senkronizasyon paketinin ne sıklıkla gönderileceğine karar vermelisiniz.

+0

Haklısınız, aynı düşünceye sahibim, ama sorum şu, bu yaklaşımı nasıl başarmış olabileceğimi, en iyisi de en az nezareti olan? –

5

Ağ saati almak ve her iki cihazda yerel ve ağ zaman arasında ofset zamanı hesaplamak için ios-ntp kullanabilirsiniz. Bir aygıtta zamanlayıcıyı başlattığınızda, ofseti yerel zaman damgasından çıkarır ve sonuçta oluşan ağ zaman damgasını başka bir aygıta gönderirsiniz. Başka bir cihazda, yerel zaman dilimi için yerel ofseti eklersiniz ve zamanlayıcının zaman damgasını yerel saatte başlatırsınız.

Sen cihazın saati değişiklikleri izlemek ve ağ süresini güncelleyerek ofset yeniden hesaplamak için UIApplicationDelegate.applicationSignificantTimeChange(_ application: UIApplication) kullanabilirsiniz.

+0

Yerel saatin kullanıcı tarafından değiştirilemediğinden nasıl emin olunur? Benim durumumda kullanıcı cihaz saatini değiştirirse, uygulamadaki saat de etkilenir mi? Bunun için ne gibi bir çözüm olabilir? GMT'yi sunucu tarafında alarak ve bunun için bir saniye zamanlayıcısını sürdürerek uygulama için ayrı bir saat tutmalı mı? –

1

Dünya saatine yalnızca gönderim yaptığınız web servisiyle başlayabilirsiniz. Bu, sadece başlangıç ​​ve bitiş zamanı için bayrağı ayarlayacağınızdan, bu yöntemi kullanarak, iki ro daha fazla aygıt arasındaki süreyi kolayca senkronize edebilirsiniz.

İlgili konular