Ios'taki Kullanıcı Bildirimleri ile Yere Dayalı Hatırlatma
Table of Contents
iOS tabanlı Hatırlatmalara Giriş
Konum tabanlı hatırlatmalar, ev terk ettiğinde standart bir mobil uygulama haline getirir, bu özellik günlük verimlilik ve bağlılık sağlar. iOS'ta, tanımlanmış bir coğrafi alana girer veya bir kullanıcıdan sipariş edilen bir kullanıcıdan sipariş edilen bir reçeteyi almak için bir eczaneye dönüşür.[Dönetici 3 ) Kullanıcının, bu özellik, bu tür işlevselliğin uygulanması için sağlam ve mahremiyete dayalı bir temel sağlar.
Core Location ve Kullanıcı Bildirimlerini Anlamak
İki birincil iOS çerçevesi dahil edilmiştir:0)Core Konum[Dönetici:2) Kullanıcı Doğrulamaları ve yerel ve uzaktan bildirimlerin yönetimi[Döneticiler için) Yerel olarak kullandığımız tüm coğrafi takipleri, bölge izleme (geofajlar) dahil olmak üzere, kullanıcı mahremiyetine saygı duymaları gerekir.
Bölge izleme:0) en basit yaklaşımdır. Bir dairesel alanı (ortalama ve yarıçap) tanımlarsınız ve Core Location'ı, cihazın sınırı geçtiğinde bildirmek için uygulamanızın kılavuzlarında veya sonlandırılması gerektiğinden haberdar olmalısınız.
Ayarlama
İstek Listesi
Herhangi bir konum izleme başlamadan önce, uygulamanız kullanıcının açık iznini almalıdır. iOS, örneğin: 1.Dönder bölge izlemeniz için, [[Uygun 11+) veya . kodu ilk çağrıyı içerir.
let locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.requestAlwaysAuthorization()
Apple, geliştiricilerin, kullanıcının bağlamına göre izin talebini reddetmelerini teşvik eder.DoANGFLT:0)) İstek her zaman ilk başta yazarlık yapar; bunun yerine, kullanıcının başlangıçta onları Ayarlar uygulamasına yönlendirdiği davayı da açıklar.
Bildirim İsteme Yazarlığı
Simultane olarak, bildirimleri görüntülemek için izin talep etmelisiniz. Bu, [[ŞUYGÜSÜSÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞ
let center = UNUserNotificationCenter.current()
center.requestAuthorization(options: [.alert, .sound, .badge]) { granted, error in
// Handle response
}
Kullanıcı bildirim iznini reddederse, alternatif (örneğin, in-app uyarıları) teklif etmeyi veya bildirimlerin deneyimi nasıl artırdığını açıklamayı düşünün. Her iki izin bağımsızdır - bir kullanıcı konum ancak bildirimleri devre dışı bırakabilir veya tersi.
Geofences ve Bölge İzleme
Bir Geometrik Bölgeyi Tanımlamak
Bir geofence, ESFLT:9 kullanılarak uygulanmaktadır. Bir merkez koordinatını (ya da uzun bir süre) tedarik edersiniz ve metrede bir yarı yarıya metredir.En az yarı iOS güvenilir bir şekilde destek, iyi GPS ile cihazlarda test etmek daha küçük bir radii sağlayabilir. giriş, çıkış veya her ikiniz de bilginizi ister:
let center = CLLocationCoordinate2D(latitude: 37.7749, longitude: -122.4194)
let region = CLCircularRegion(center: center, radius: 150, identifier: "OfficeRegion")
region.notifyOnEntry = true
region.notifyOnExit = true
locationManager.startMonitoring(for: region)
[[Kategoriler bölge başına eşsiz olmalıdır; gelen olayları eşleştirmek için kullanılır. iOS, uygulama başına en fazla 20 tane aynı anda izlenmiş bölge destekler.Eğer daha fazla ihtiyacınız varsa, bölgeleri birleştirmek veya daha fazla granular kontrolü tetiklemek için önemli bir değiştirme yeri kullanmak.
Birden Çok Bölgeyi Takip Et
Çoğu zaman birçok hatırlatmanız olacaktır (örneğin, kullanıcı tarafından oluşturulan geofences). Yerel bir veritabanında mağaza tanımlayıcıları (Core Data, Realm, veya KullanıcıDefaults). Uygulama başladığında, tüm aktif bölgeleri yeniden kayıt edin.
// Remove regions when no longer needed
locationManager.stopMonitoring(for: region)
Bölge izlemenin desteklenmediği durumlarda yakalama yönteminin (örneğin, eski cihazlarda) veya sistem ayarları ile sınırlandırıldığı durumlardan dolayı delege yöntemi izleyin.
Bölge Etkinlikleri
Bir cihaz bir geofence sınırı geçtiğinde, Core Location iki delege yönteminden birini çağırır: 03: 15.) veya [[Dönetici:) Uygulamanız bölge tanımlayıcılarını doğrulamalı ve sonra yerel bir bildirimde bulunmalıdır.
func locationManager(_ manager: CLLocationManager, didEnterRegion region: CLRegion) {
guard region.identifier == "OfficeRegion" else { return }
scheduleNotification(title: "Welcome to Office", body: "Don't forget to scan your badge.")
}
Bu delege yöntemlerinin uygulamanız askıya alınsa bile çağrıldığını unutmayın; iOS, uygulamanızı kısa bir süre içinde uyandırır ve sistem sizi tekrar askıya almadan önce kod uygulamak için yaklaşık 30 saniyeniz gerekir. bildirimi planlamak için o zaman kullanın (veya diğer mantığı ele alın) mümkün olduğunca çabuk.
Uygulamanın Yeniden Başlanmasından Sonra Devlet Restorasyonu
Uygulama sona erdikten sonra (örneğin, kullanıcı kuvvetlendirmeleri veya sistem geri bildirim hafızasını) sistem tarafından takip edilir. Ancak, bir olay meydana geldiğinde ve uygulamanız kullanıcı etkileşimi olmadan olayı yeniden başlatmıyor ve aynı delege mesajınızı vermeniz gerekir.
Yerel Bildirimler Gönder
Bildirim İçeriklerini Yaratmak
[[UseFLT:18] ünvanı, vücut, ses ve özel verileri tanımlamak için:
let content = UNMutableNotificationContent()
content.title = "Reminder"
content.body = "You're near the store! Don't forget to buy groceries."
content.sound = .default
content.userInfo = ["regionID": "StoreRegion"]
Ayrıca özel eylemleri (örneğin, “Snooze” veya “Marks” etkinleştirebilmek için aritFLT:20 dahil edebilirsiniz.
Tesadüf ve Talep
Çünkü bildirimin hemen sonra bölgeye havalesini istiyoruz, çok kısa bir gecikme ile zaman ilan edilmesi gerekir (1 saniye). Tekrarlama yanlış olmalıdır:
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 1, repeats: false)
let request = UNNotificationRequest(identifier: UUID().uuidString, content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request) { error in
if let error = error {
// Log error (e.g., notification not added)
}
}
Her seferinde bir önceki bildirimin üstesinden gelmek için benzersiz bir tanımlayıcı kullanmak.Eğer bir bekleme bildirimini değiştirmek istiyorsanız (örneğin, mesajı güncelleyin), aynı tanımlayıcıyı kullanın.
Ses ve İşaretleri Özelleştirin
Paketlerinizde özel bir ses dosyası sağlayabilirsiniz ( 30 saniyeden daha az olmayacak) çünkü uygulamayı açar veya manuel olarak sıfırlanırsınız.(veya UIapp.shared.applicationIconBadgeNumber).
Hata işleme ve Battery Thinkations
Common Errors
Bölge izleme birkaç nedenden dolayı başarısız olabilir:
- [FONT:0) Cihazın üzerinde desteklenmez[Dönetici: 1 ) - bazı eski iPad veya iPod, bir hücresel /GPS çipi eksikliğine sahiptir. CheckurFLT:24).
- [FONT:0)Location hizmetleri devre dışı bırakılır[DÜT:1) – [[FONTT:25) sahte geri dönebilir.
- [FONT:0]Yazdırma[[Dönemli: ﴾4﴿
- [FONT:0)Öyleleştirilmiş bölge sınırı[[Dönetici: 1 ) - 20'den fazla bölgeyi izlemeye çalışırsanız, 03.
Hatayı imzalamak ve kullanıcı lütufla (örneğin, “Bu yeri izlemek için kullanılamaz”) bilgilendirmek için delege.
Battery Optimisation
Konum monitoring güç yoğundur. Sistem zaten mümkün olduğunda hücre kulesi ve Wi-Fi konumlandırma kullanarak bölge izlemeyi optimize eder, ancak etkiyi daha da azaltabilirsiniz:
- Sadece ihtiyaç olduğu kadar birçok bölge izleyin (20 yaşın altında bakım).
- Hassasiyet kritik olmadığı zaman daha büyük radii kullanın (örneğin, 500m vs 50m).
- Uygulama, ilgili olmayan görevler için arka plana girdiğinde (örneğin, uygun yaşam döngüsü çağrıları) uygun şekilde takip edilebilir bölge izlemesi.
- Kritik hatırlatmalar için, [[0) önemsiz değiştirme yeri servisi () ile yalnızca cihazın önemli ölçüde (500m veya daha fazla) hareket ettiğinde güncellemelerini sağlar.
Test Konum-Based Hatırlatıcılar
Xcode'da yer almak
Xcode'un Simulator, yer değiştirmelerini mümkün kılar. “Simulate Location” özelliği (Debug > Simulate Location) ve bir GPX dosyasını veya ücretsiz bir sürüş sürücüsü seçmenize olanak sağlar. Ayrıca, debug bar'daki “Location” düğmesine kolayca koordinatlar yapabilirsiniz.
Bölge Mantıkı için Yazı Birimi Testleri
Delege yöntemleri ve bildirim test edilebilir bileşenlere giriş. MockENFLT:33) ve ) protokolleri kullanarak. Örnek:
protocol RegionHandler {
func didEnterRegion(with identifier: String)
}
class MockNotificationCenter: UNUserNotificationCenter {
var addedRequest: UNNotificationRequest?
override func add(_ request: UNNotificationRequest, withCompletionHandler: (Error?) -> Void) {
addedRequest = request
}
}
Bir bölgeye giren test doğru bildirim başlığı ve vücut üretir ve bu hatalar ele alınır.
Gerçek-World Test Checklist
- Uygulama sırasında giriş ve çıkış olayları ön planda, arka plan ve sona erer.
- Birden çok çakışma bölgesinin bağımsız bildirimleri tetiklediğini belirtmek.
- Kontrol batarya birkaç saat boyunca izleme işlemine devam eder.
- Yer hizmetleri ile test, Wi-Fi kapalı ve hücresel veriler kapalı.
- Bildirim uyarıları, kullanıcının kısa bir süre içinde aynı bölgeye tekrar giriştiği takdirde tekrar edilmez - KullanıcıDefaults zamantamps kullanarak bir “cool-down” dönemi uygulayın.
Gizlilik ve Kullanıcı Deneyimi En İyi Uygulamalar
Şeffaflık ve Konsolidasyon
Kullanıcılar her zaman gerekli minimum erişim seviyesini talep ediyorlar. En çok yer tabanlı hatırlatmalar için, “always” yetki arka plan izleme için gereklidir, ancak sistemden önce bir uygulama ekranı sağlayabilirsiniz ve hangi konum verilerini tanımlar (örneğin, “sadece belirli yerlere girdiğinizde sizi hatırlatmanız için konumunuzu izlemek için konumunuzu izlemek için sizi izlemek için konumunuzu izlemek için.
Hatırlatıcıları Yönetme Kullanıcılara İzin Vermek
Kullanıcıların tüm aktif hatırlatmaları görüntüleyebildiği bir UI, bir haritada geofenced alanı görebilir ve bireysel olarak hatırlatmaları silebilirsiniz. Ayrıca, geçici olarak tüm hatırlatmaları (örneğin, tatilde iken).Bir hatırlatma hemen çağrılmalı
Geri bildirim ve Boş Devletler
Hiçbir hatırlatma ayarlandığında, bir çağrı-dönüşümle açık bir boş durum gösterir (“Tap + bir yer hatırlatması eklemek”).Eğer izinler reddedilirse, kullanıcının eksik ve bir düğme bağlantısını ayarlar.
Disturb ve Eleştirel Uyarılar
Konuma dayalı bildirimler, kullanıcının mevcut Focus modunda (Düzücü değil) saygı duymamalıdır - sistem otomatik olarak bildirimleri etkinleştirdiğinde uyarının gerçekten acil olması durumunda “könemli uyarıyı” talep etmemektedir (örneğin, ilaç) ve Apple tarafından onaylanmamıştır.
Gelişmiş Gelişmiş Gelişmiş Gelişmiş Gelişmiş Gelişmiş Gelişmiş
iBeacon-Based Tesir
İç mekan hassasiyet için, UUID, büyük ve küçük değerleri kullanarak algılamayı düşünün ().Grup izleme her zaman yeterince yazar değildir) ancak batarya etkisilaştırılabilir.
Önemli Değiştirilmiş Yerle Kombinasyon Konum
Önemli bir değişim yeri güncellemeleri, her 500 metreden daha fazla hücre kulesi değişiklikleri tarafından tetiklenir.Onlar yakındaki geofence listesini yenilemek için kullanabilirsiniz - cihazın hızla hareket ettiğinde bile (örneğin, bir arabada). Ancak, giriş / canlı olaylar, o zaman sistemin adanmış bölge izlemesi yerine kendi mantığınızla hesaplanırsınız.
Pre-fetching için arka plan görevleri kullanmak
Abonelikleriniz ağ verilerini (örneğin, saatlerini mağaza açma) gerektirirse, aİLFLT:38) ( iOS 13'te başlatılan) verileri önceden belirlenmiş olmayan amaçlar için arka plandaki kullanıcıyı takip etmekten kaçınmaya dikkat edin.
Aynı Bölgeden Birden Çok Bildirimleri Kullanın
Bir kullanıcı bir bölge sınırı üzerinde kalsa, tekrarlanan giriş / genişletilebilir olaylar alabilir. serin bir zamanlayıcıyı uygulayın (örneğin, “Bu bölgeye en az 5 dakika boyunca başka bir bildirimde bulunmuyorlar”).Geçmiş zamanlayıcılar için son uyarıyı başlatabilir.
Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç
iOS'ta yer bazlı hatırlatmalar, bağlantı hatalarının yerine getirilmesi için güçlü bir yoldur. Core Location'ın bölge izlemesini Kullanıcı Notifications ile birleştirerek, sezgisel ve yararlı hissettiren özellikleri oluşturabilirsiniz. Başarınızın burada açıklanan temelle ilgili olarak, batarya kullanımını tercih etmek, lütuf verici bir şekilde işlemek ve hatırlatmaları yönetmek için temiz bir arayüz sağlamak. iOS gelişmeye devam ettikçe, yeni yetenekler (iOS 17+) daha basit bir arka plan izleme.
Daha fazla okuma için resmi Apple belgelerine başvurun:
- [0]Core Konum Framework[Dönem:0)[Dönemli)
- [0]Kullanıcı Doğrulamalar Çerçeve[[Dönemli: 1 )
- [0]Yer Hizmetleri için Yetkilendirme).
- [FONT:0)CLCircularSeçim Belgesi[Dönemli: 1)
- [0]En İyi Uygulamaları Takip Etmek (Legacy)).