AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung iOS: Reachability und Signalisierung von Änderungen???
Thema durchsuchen
Ansicht
Themen-Optionen

iOS: Reachability und Signalisierung von Änderungen???

Ein Thema von romber · begonnen am 12. Nov 2013 · letzter Beitrag vom 14. Nov 2013
Antwort Antwort
romber

Registriert seit: 15. Apr 2004
Ort: Köln
1.166 Beiträge
 
Delphi 10 Seattle Professional
 
#1

iOS: Reachability und Signalisierung von Änderungen???

  Alt 12. Nov 2013, 23:46
In diesem Thread wurde die Delphi-Version von Reachability API presentiert.
Ich Suche nun nach einer Möglichkeit, die Änderungen der Verbindungsart zu signalisieren. Ähnlich wie mit NSNotificationCenter in Objective C:

Code:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkStatusChanded:) name:kReachabilityChangedNotification object:nil];
Aktuell habe ich es mit einem Thread gelöst, der in regelmässigen Abständen den Status selber abfragt. Ich habe mir gedacht, dass ich mit diesen Thread vielleicht sparen konnte.

In der IFMXNotificationCenter habe ich nichts gefunden. Wenn ich ein NSNotificationCenter wrape, dann gibt es dort eine Funktion namens addObserver, allerdings habe ich bis jetzt nicht geschafft, diese richtig aufzurufen. Bitte um Hilfe!

Danke!
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#2

AW: iOS: Reachability und Signalisierung von Änderungen???

  Alt 13. Nov 2013, 07:48
Code:
addObserver
richtet dir das "Ohr" ein.
Nun muss nur noch jemand etwas "sagen".
Die Reachability Klasse hat 2 Methoden zum Ein- bzw. Ausschalten von Notifications.

Code:
BOOL)startNotifier;
-(void)stopNotifier;
Unter Delphi wäre das:
Code:
function startNotifier:BOOL;
procedure stopNotifier;
Ganz wichtig ist, dass du alle hinzugefügten Observer auch wieder mit removeObserver entfernst.
Es gibt keine offensichtlichen Fehler wenn Du den Observer nicht wieder löscht, aber in der Console wird es geloggt.
Apple sieht das dann natürlich auch, und wird die App deshalb beim Review vermutlich durchfallen lassen.

Hier. Lese selbst.

https://developer.apple.com/library/...Reference.html
  Mit Zitat antworten Zitat
romber

Registriert seit: 15. Apr 2004
Ort: Köln
1.166 Beiträge
 
Delphi 10 Seattle Professional
 
#3

AW: iOS: Reachability und Signalisierung von Änderungen???

  Alt 13. Nov 2013, 12:12
Vielen Dank für die schnelle Reaktion!

Code:
addObserver
richtet dir das "Ohr" ein.
Nun muss nur noch jemand etwas "sagen".
Die Reachability Klasse hat 2 Methoden zum Ein- bzw. Ausschalten von Notifications.
...
Diese Methoden wurden bereits im o.g. Reachability-Demo implementiert. Ich muss dem NotificationCenter nun mitteilen, dass meine App die Änderungen mitgeteilt bekommen möchte.

Ganz wichtig ist, dass du alle hinzugefügten Observer auch wieder mit removeObserver entfernst.
Es gibt keine offensichtlichen Fehler wenn Du den Observer nicht wieder löscht, aber in der Console wird es geloggt.
Apple sieht das dann natürlich auch, und wird die App deshalb beim Review vermutlich durchfallen lassen.
Den würde ich sehr gerne wieder entfernen, aber dafür muss ich ihn erstmal setzen Übrigens, in meiner in Xcode erstellten App, die bereits in 3. Version in der App Store ist erstelle ich gleich mehrere Observer, darunter für Reachability und BatteryStatus, die niemals wieder entfernt werden. Trotzdem gab's bis jetzt keine Problem mit Apple. Kann dass vielleicht mit ARC zu tun haben? Vielleicht werden die Objekte überprüft, ob irgendwelche Observer festgelegt wurden und entfernt diese, bevor das Objekt gelöscht wird.

Wie setze ich nun diesen Observer unter Delphi? Kann mir jemand mit einem Beispiel seigen, wie das geht?
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#4

AW: iOS: Reachability und Signalisierung von Änderungen???

  Alt 13. Nov 2013, 12:23
Übrigens, in meiner in Xcode erstellten App, die bereits in 3. Version in der App Store ist erstelle ich gleich mehrere Observer, darunter für Reachability und BatteryStatus, die niemals wieder entfernt werden. Trotzdem gab's bis jetzt keine Problem mit Apple. Kann dass vielleicht mit ARC zu tun haben? Vielleicht werden die Objekte überprüft, ob irgendwelche Observer festgelegt wurden und entfernt diese, bevor das Objekt gelöscht wird.
Die Apple Review basiert eher auf Lotto als auf harten Fakten

ARC entfernt den Observer nicht. Jeder Observer der erstellt wird, muss an geeigneter Stelle wieder entfernt werden.
Wenn Du einen Observer in "init" oder "viewDidLoad" erstellst, musst Du "dealloc" überschreiben und dort den Observer mit "removeObserver" wieder deaktivieren. Im überschiebenen "dealloc" darfst wegen ARC aber keinesfalls "super.dealloc" aufrufen. Sonst kracht es.
  Mit Zitat antworten Zitat
romber

Registriert seit: 15. Apr 2004
Ort: Köln
1.166 Beiträge
 
Delphi 10 Seattle Professional
 
#5

AW: iOS: Reachability und Signalisierung von Änderungen???

  Alt 13. Nov 2013, 12:36
ARC entfernt den Observer nicht. Jeder Observer der erstellt wird, muss an geeigneter Stelle wieder entfernt werden.
Wenn Du einen Observer in "init" oder "viewDidLoad" erstellst, musst Du "dealloc" überschreiben und dort den Observer mit "removeObserver" wieder deaktivieren. Im überschiebenen "dealloc" darfst wegen ARC aber keinesfalls "super.dealloc" aufrufen. Sonst kracht es.
Habe gerade meine App entsprechend geändert. Paar andere Verbesserungen sind ebenfalls schon drin, es wird langsam Zeit für ein Update. Und wieder zwei Wochen "waiting for review"...

Kann mir jemand mit einem Beispiel zeigen, wie ich einen Observer unter Delphi erstelle?
  Mit Zitat antworten Zitat
romber

Registriert seit: 15. Apr 2004
Ort: Köln
1.166 Beiträge
 
Delphi 10 Seattle Professional
 
#6

AW: iOS: Reachability und Signalisierung von Änderungen???

  Alt 14. Nov 2013, 20:21
Habe immer noch keine Lösung
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz