Rejection aufgrund von Location updates

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Rejection aufgrund von Location updates

    Hey Leute,

    nach nun fast 2 Wochen wurde mein App endlich reviewed und abgelehnt.

    Der Grund:

    2.16

    We found that your app uses a background mode but does not
    include functionality that requires that mode to run persistently. This
    behavior is not in compliance with the App Store Review Guidelines.

    We
    noticed your app declares support for location in the UIBackgroundModes
    key in your Info.plist but does not include features that require
    persistent location.

    It would be appropriate to add features
    that require persistent use of real-time location updates while the app
    is in the background or remove the "location" setting from the
    UIBackgroundModes key. If your application does not require persistent,
    real-time location updates, we recommend using the significant-change
    location service or the region monitoring location service.


    So die meckern also, dass ich Location updates beziehe obwohl ich keine genauen brauche.

    Ich brauche diese Feature aber um Regions zu tracken, also wann ich eine betrete und wann nicht.

    Nun weiß ich, dass es natürlich dafür extra Methoden gibt (startMonitoringForRegion:) etc.
    Möchte aber diese nicht benutzen, da sie auf 20 Regions begrenzt sind und sie mir ungenau erscheinen. (Mal gibt es eine Notification und mal nicht. Bin dafür extra durch die Gegend gefahren um dies zu testen. Ich fahre in eine Region -> Notification, ich fahre raus, fahre wieder rein -> keine Notification, fahre raus, fahre rein -> Notification)

    Nun dachte ich mir, ich bin so schlau und verwendete einfach die LocationUpdates, schaue ob die Distanz der User location zum Center der Region kleiner als der Radius der Region ist, gebe eine Notification und setze eine Flag damit keine Noti kommt wenn ich immernoch drin bin.

    Klappt dafür gut, und da ich es jetzt nicht auf den Meter genau brauche habe ich als DesiredAccuracy

    Quellcode

    1. kCLLocationAccuracyKilometer
    gewählt. Und so klappt das nun gut.

    Jetzt ist die Frage ob ich das auch so Lösung kann, dass Apple das akzeptiert oder muss ich unbedingt RegionMonitoring verwenden.
    Die SignificantLocationChanges sind mir zu ungenau, habe gelesen, dass diese nur eine Noti feuern wenn der Mobilfunkmast gewechselt wird...


    Hat jemand Tipps?
    Every language has an optimization operator. In ObjC that operator is ‘//’.

    golbros.de
  • Da bleibt wohl nur die Umstellung auf RegionMonitoring und ein Bug Report, dass RegionMonitoring nicht korrekt funktioniert. Ich bezweifle jedoch, dass Apple das RegionMonitoring daraufhin fixt, da Apple wohl der Meinung ist, dass es "funktioniert".

    Ich hatte auch mal eine Feature Anfrage für eine App, welches sich sehr gut über RegionMonitoring hätte realisieren lassen könnte, wenn es denn auch funktionieren würde. Habe dem Kunden dann abgeraten dieses Feature in der App zu verwenden, da dieses nicht wirklich funktional realisiert werden kann.

    RegionMonitoring scheint mal wieder eines der iOS Features zu sein, welche sich bei der Vorstellung einer neuen iOS Version als tolles neues Feature verkaufen lassen, in der Praxis jedoch nicht zu gebrauchen sind. Dies zeigt leider mal wieder, dass es bei einer neuen iOS Version vorrangig um die Präsentation von vielen neuen Features geht, ob diese nun sinnvoll sind oder überhaupt funktionieren scheint dabei zweitrangig zu sein.
  • Das ist einfach nur schade. Leider kommt meine App ohne dieses Feature nicht aus. Ich probiere es jetzt mal mit SignificantLocationChanges und schaue ob dies auch möglich ist.

    Wie gesagt meine Regions sind min. 1KM im Radius, also wirklich genau brauche ich es auch nicht. Und wenn es mal um 100 Meter später die Noti wirft ist auch nicht schlimm.
    Every language has an optimization operator. In ObjC that operator is ‘//’.

    golbros.de
  • Werde denen mal schreiben.

    EIne Frage noch und zwar habe ich für die Region Monitoring funktion die Background Modes "Location updates" und "Background fetch" aktiviert. Ist das auch so richtig?

    Habe es zwar getestet, wenn eins nicht markiert ist geht keine Noti raus wenn die App im Hintergrund läuft.. , bin mir aber nciht sicher ob ich beide brauche?
    Every language has an optimization operator. In ObjC that operator is ‘//’.

    golbros.de
  • Mach doch einfach einen neuen Tab in dein MainView und wenn man da drauf klickt, dann kann man einstellen, dass wenn man an einem bestimmten Ort ankommt er eine Local-Notification schickt. Schon braucht Deine App zwingend die LocationChanges :D

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Thallius schrieb:

    Mach doch einfach einen neuen Tab in dein MainView und wenn man da drauf klickt, dann kann man einstellen, dass wenn man an einem bestimmten Ort ankommt er eine Local-Notification schickt. Schon braucht Deine App zwingend die LocationChanges :D

    Dies muss laut Apple dann jedoch über das RegionMonitoring realisiert werden, welche jedoch nur sehr willkürlich nutzbar sind.
  • MCDan schrieb:

    Thallius schrieb:

    Mach doch einfach einen neuen Tab in dein MainView und wenn man da drauf klickt, dann kann man einstellen, dass wenn man an einem bestimmten Ort ankommt er eine Local-Notification schickt. Schon braucht Deine App zwingend die LocationChanges :D

    Dies muss laut Apple dann jedoch über das RegionMonitoring realisiert werden, welche jedoch nur sehr willkürlich nutzbar sind.


    Genau. Dann verweisen die netten weißen Männer auf den Punkt 2.16 der Guidelines.
    Every language has an optimization operator. In ObjC that operator is ‘//’.

    golbros.de
  • macmoonshine schrieb:

    Ich kann andererseits da Apple auch gut verstehen: Die Location-Updates saugen regelrecht den Akku leer. Ich hatte vor einigen Jahren eine App, da musste ich dann auch explizit darauf hinweisen, dass sie sehr stromfressend ist.


    Das ist ab iOS8 egal. Mein iPad mit dem iOS8 Beta ist, wenn ich nur Foren surfe (Nix Video oder Music oder so) innerhalb von 3h leer....

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • macmoonshine schrieb:

    Ich kann andererseits da Apple auch gut verstehen: Die Location-Updates saugen regelrecht den Akku leer. Ich hatte vor einigen Jahren eine App, da musste ich dann auch explizit darauf hinweisen, dass sie sehr stromfressend ist.


    FInd ich jetzt nicht. Ich weiß nicht ob die "DesiredAccuracy" sich darauf auswirkt, aber die ist auf kCLLocationAccuracyKilometer eingestellt.
    Und wenn ich es getestet habe, ist der Akku nicht schneller leer gegangen als sonst...

    @Thallius War doch bei iOS 7 nicht anders. Hatte damals die Beta 1 auf meinem iPhone 4 und war nach 1h leer. haha
    Every language has an optimization operator. In ObjC that operator is ‘//’.

    golbros.de
  • Thallius schrieb:

    macmoonshine schrieb:

    Ich kann andererseits da Apple auch gut verstehen: Die Location-Updates saugen regelrecht den Akku leer. Ich hatte vor einigen Jahren eine App, da musste ich dann auch explizit darauf hinweisen, dass sie sehr stromfressend ist.


    Das ist ab iOS8 egal. Mein iPad mit dem iOS8 Beta ist, wenn ich nur Foren surfe (Nix Video oder Music oder so) innerhalb von 3h leer....

    Gruß

    Claus

    Deshalb ist es ein Beta-Release.
    Multigrad - 360°-Produktfotografie für den Mac