Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   iOS: Reachability und Signalisierung von Änderungen??? (https://www.delphipraxis.net/177548-ios-reachability-und-signalisierung-von-aenderungen.html)

romber 12. Nov 2013 22:46

iOS: Reachability und Signalisierung von Änderungen???
 
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!

jensw_2000 13. Nov 2013 06:48

AW: iOS: Reachability und Signalisierung von Änderungen???
 
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

romber 13. Nov 2013 11:12

AW: iOS: Reachability und Signalisierung von Änderungen???
 
Vielen Dank für die schnelle Reaktion!

Zitat:

Zitat von jensw_2000 (Beitrag 1235657)
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.

Zitat:

Zitat von jensw_2000 (Beitrag 1235657)
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. :gruebel:

Wie setze ich nun diesen Observer unter Delphi? Kann mir jemand mit einem Beispiel seigen, wie das geht?

jensw_2000 13. Nov 2013 11:23

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

Zitat von romber (Beitrag 1235695)
Ü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. :gruebel:

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.

romber 13. Nov 2013 11:36

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

Zitat von jensw_2000 (Beitrag 1235699)
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"...:cyclops:

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

romber 14. Nov 2013 19:21

AW: iOS: Reachability und Signalisierung von Änderungen???
 
Habe immer noch keine Lösung :-(


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:32 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