Soru İOS Erişilebilirliği nasıl kullanılır?


Ağı kullanan bir iPhone uygulaması geliştiriyorum. İPhone, HTTP isteği ile sunucumla iletişim kurar ve WiFi ve 3G üzerinde çalışmalıdır.
Ben kullanıyorum NSURLConnection initWithRequest sunucuma async istekleri göndermek ve yanıtları almak (ancak yakında çalışmaya başlayacağım) ASIHTTPRequest kütüphane)

Bu tür uygulamalarla (internet bağlantısı gerektiren uygulamalar), Ulaşılabilirliği kullanmalıyım (anlamalı mıyım?).

Web'de arama yaptıktan ve Apple'ın Reachability örnek koduna baktıktan sonra hala bazı temel şeyleri anlamıyorum:

Erişilebilirliğin temel amaçları nelerdir?

Apple'ın örneğinde, ana bilgisayar, WiFi ve 3G ile ağ sorunlarını tespit eder ve kullanıcıyı uygun bir mesajla sunarlar.
Bu kullanıcıya bir mesaj göstermek için Reachability'nin temel amacı mı? Ya da diğer daha pratik senaryolar için kullanmam gerekiyor mu? Örneğin eğer NSURLConnaction istek başarısız oldu Yeniden gönderilebilirliği bir şekilde yeniden göndermek için kullanmam gerekiyor mu?

Erişilebilirliğin doğru kullanımı nedir?

Sadece kullanımı yaygın mı bir Uygulama başlatıldığında, ardından ağ değişikliklerini dinler misiniz? Veya her ağ isteğinden önce kendime ulaşılabilirlik durumunu kontrol etmeliyim?
Kullanmak için yeterli mi reachabilityWithHostName ya da ihtiyacım var mı reachabilityForLocalWiFi ve reachabilityForInternetConnection?

Bir şey dahaApple'ın ağ kullanan uygulamaları reddedebileceğini ve Erişilebilirlik özelliğini kullanmadığını anladım.
"Nedir?"şart"Yapmam gereken yöntemleri yapmalı mıyım?"
Kullanıcıya şu anda internet olmadığını bildirmek yeterli olacak mı?


32
2018-06-24 11:29


Menşei




Cevaplar:


Reachability bir ağ yardımcı programı sınıfı, bağlantı durumu hakkında çeşitli bilgiler almak için kullanılır

Erişilebilirliğin temel amaçları nelerdir?

  • Ağ durumunu sorgulamak için erişilebilirlik kullanılır
  • ve bağlantı değiştiğinde haberdar olmak için dinleyicilerinizi kaydettirmek

Bu kullanıcıya bir mesaj göstermek için Reachability'nin temel amacı mı?

Elbette, ana kullanımı ya internet bağlantısı olup olmadığını test etmek ya da bağlantının değişip değişmediğine dair bilgi almaktır.

Örneğin, NSURLConnaction isteği başarısız olduysa kullanmam gerekiyor   Bir şekilde isteği yeniden göndermek için erişilebilirlik?

Evet, bunu kullanabilirsiniz, örneğin normalde yaptığım projede yaptığım tüm istekleri uzaktaki bir sunucuya kaydetmek, 10 dosya indirmek istediğimi söyleyeyim,

Herhangi bir dosya internet bağlantısı olmadığı için indirme işlemini başarısız olursa, bunları bir dizi başarısız indirmeye kaydediyorum.

Erişilebilirlik bana internet bağlantısının geri yüklendiğini bildirdiğinde, bu diziden geçiyorum ve indirme işlemini tekrar başlatıyorum

Erişilebilirliğin doğru kullanımı nedir?

Modellerinize ve ihtiyaçlarınıza bağlı.

Uygulama başlatıldığında yalnızca bir örnek kullanmak yaygındır ve sonra dinleyin   ağ değişikliklerine mi?

Evet, yaptığım şey, projelerimde, yalnızca bir indirme yöneticisi sınıfının 1 örneğine sahibim ve bu sınıf, yalnızca Erişilebilirlik'in yalnızca canlı örneğine sahip

Veya her ağdan önce erişilebilirlik durumunu kendim kontrol etmeliyim   istek?

Birden fazla Reaktiflik sınıfı örneği olmadan bunu, normalde yaptığım şey, indirme yöneticimin içinde, bağlantı varsa veya erişilemiyorsa, Reaktiflik kullanmamı söyleyen bir yönteme sahip olmaktır.

ReachabilityWithHostName kullanmak için yeterli mi yoksa ayrıca ihtiyacım var mı   reachabilityForLocalWiFi ve reachabilityForInternetConnection?

Bu konuda emin değilim, ama normalde yaptığım şey, tüm yollarla bağlantıyı test etmek, 3g veya wifi arasında ayrım yapmam, ancak bu bilginin (wifi veya 3g) yararlı olabileceği bazı uygulamalar var.


45
2018-06-24 11:43



Cevabınız için teşekkürler, lütfen soruya eklediğim "bir şey daha" kontrol edebilirsiniz - Eyal
Bunun tamamen habersiz, appstore üzerinde 5+ uygulama var, hepsi Reaktivite kullanıyorlar, yukarıda cevabımda anlattığım gibi ulaşılabilirlik kullanıyordum, bu yüzden nelerin uygulanması gerektiğini bilmiyorum, normalde neye ihtiyacım var? - Omar Abdelhafith
Erişilebilirliğin temel amacından birinin, "bağlantılarınız değiştiğinde bilgi almak için dinleyicilerinizi kaydettirmek" olduğunu söylemiştiniz, ancak her seferinde geri arama yapmıyorsunuz (yönlendiricileri ve denetimi değiştirmeyi deneyin). - Khushbu Shah


Erişilebilirlik Apple'ın yaptığı bir örnek projedir. İnsanlar bunu SystemConfiguration çerçevesinde bir API olarak kullanır. Gördüğünüz gibi, bir ana bilgisayarın erişilebilir olup olmadığını kontrol etmek için yöntemler vardır.

Reachabilty projesini kullanma biçimim, veri isteğim sunucunun kullanılabilir olması durumunda bir boolean döndüren bir sınıf yöntemiyle bir sınıf oluşturduğumdur. Eğer öyleyse, yöntem geri döner YES ve değilse, geri döner NO (Tabii ki).

Şimdi, bağlantılardan yararlandığım uygulamada, Apple belgelendirme durumları olarak bir bağlantı başlatmanın mümkün olup olmadığını kontrol etmelisiniz. Basit bir şeyim var if ve daha sonra, isteğin şu anda tamamlanamayacağı uygun bir uyarı mesajı gösterir.

İsteğin ilk kez gerçekleştirilememesi durumunda otomatik olarak tekrar denemeniz için herhangi bir gereksinim yoktur. Bunun temel amacı, uygulamanızı kilitlemekten uzak tutmak ve aynı zamanda kullanıcıya yapamayacağına dair bir mesaj vermektir.

Bildirimleri kendim kullanmıyorum, ancak bağlantının yapılıp yapılamayacağını izlemeyle ilgilenmiyorum. Bu, başvuru taleplerinizle karar vermeniz gereken bir şeydir.

Reachablitiy sınıfındaki tüm yöntemleri kullanmaya mecbur değilsiniz, bunlardan birini kullanmak yeterlidir. Farklı yöntemlerin neler sunduğunun ve üstbilgi dosyasında kullanıldıkları belgelenmiştir.

Dahil etmeyi unutmayın SystemConfiguration çerçeve.


12
2018-06-24 11:43



Yanıtınız için, ev sahibi her ağ isteğinden önce mevcut olup olmadığını kontrol ettiğinizde, bu her istek için bir ek yük getirecek mi? - Eyal
Evet, ama bu minimum olmalı. Bunu yaparken farkedilir bir yük fark etmedim. Eklediğin sorulara zaten cevap verdim. Bir şey hala belirsiz olup olmadığını sormaya çekinmeyin :) - Andreas
Bu yüzden, doğru sonuçları anladığımı, aynı sonucu aldığımı, ancak bildirimleriyle birlikte, bazı global boolean "HostIsAvailable" i koruyabileceğimi söyleyin, bu Boolite, Erişilebilirlik bildirimlerini aldığımda güncellenecektir, ardından her ağ isteğinden önce kontrol edeceğim eğer EVET ise, değilse kullanıcıya bir uyarı mesajı göstereceğim. - Eyal
Evet, bu olası bir çözüm. Uygulama temsilcisini bu bildirimlerin alıcısı olarak kaydedecek ve bildirimlerden biri alındığında değişken (ler) i güncelleyeceksiniz. Sonra görüş kontrol cihazlarınızda bunu yapabilirsiniz MyAppDelegate* myAppDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate] değişkenlerinize erişmek için. - Andreas


Erişilebilirlik, internete erişilebilir olup olmadığını en iyi şekilde tahmin eder. WiFi üzerinden erişiminizin olup olmadığını veya yalnızca Mobil Veriler üzerinden erişiminizin olup olmadığını size söyler. Doğru olduğuna dair bir garanti yoktur. WiFi bağlantınızın olduğunu söylerse, bu bağlantı bir saniye sonra kaybolabilir. Bir URL'ye erişmenin işe yarayıp yaramadığını bulmanın tek yolu, bu erişimi yapmak ve ne olduğunu görmek. Erişilebilirlik söylediği ve tersi olduğunda erişimin çalışacağı durumlar vardır.

Aşağıdakiler için Erişilebilirlik özelliğini kullanıyorum: İnternet bağlantısı olmadığından indirme işlemi başarısız olduktan sonra, Yeniden Kullanılabilirlik bir değişiklik tespit ettiğinde yeniden denemeye başlayacağım (gerçekte birkaç saniye sonra; Kablosuz Erişilebilirlik WiFi'nin geri geldiğini bildirdikten sonra URL erişimi genellikle başarısız oluyor). Mobil Verilere izin verilmediğinde indirme işlemi başarısız olduktan sonra, Mobil Verilerin kullanılabilir olup olmadığını kontrol edin ve ardından kullanıcıdan Mobil Verilerin kullanımına izin vermesini isteyin.


0
2018-05-24 19:04