{"id":136,"date":"2014-09-30T14:41:39","date_gmt":"2014-09-30T12:41:39","guid":{"rendered":"http:\/\/www.virtual-hideout.de\/blog\/?p=136"},"modified":"2018-08-22T14:14:42","modified_gmt":"2018-08-22T12:14:42","slug":"standortbestimmung-unter-ios-8","status":"publish","type":"post","link":"https:\/\/virtual-hideout.de\/blog\/standortbestimmung-unter-ios-8\/","title":{"rendered":"Standortbestimmung unter iOS 8"},"content":{"rendered":"<p>Mit\u00a0iOS 8 hat sich der Zugriff auf den Standort des Benutzers wieder mal ge\u00e4ndert, die Berechtigung teilt sich jetzt in st\u00e4ndige Erlaubnis zur Standortabfrage (\u00a0<span style=\"color: #3366ff;\">NSLocationAlwaysUsageDescription<\/span> ) und in die Erlaubnis nur bei App-Betrieb ( <span style=\"color: #3366ff;\">NSLocationWhenInUseUsageDescription<\/span> ). Will man den Standort bestimmen, bekommt man folgende Meldung:<\/p>\n<pre class=\"lang-c prettyprint prettyprinted\" style=\"color: #ccc;\"><code><span class=\"typ\" style=\"color: #2b91af;\">Trying<\/span><span class=\"pln\"> to start <\/span><span class=\"typ\" style=\"color: #2b91af;\">MapKit<\/span><span class=\"pln\"> location updates without prompting <\/span><span class=\"kwd\" style=\"color: #00008b;\">for<\/span><span class=\"pln\"> location authorization<\/span><span class=\"pun\">.<\/span><span class=\"typ\" style=\"color: #2b91af;\">Must<\/span><span class=\"pln\"> call <\/span><span class=\"pun\">-[<\/span><span class=\"typ\" style=\"color: #2b91af;\">CLLocationManager<\/span><span class=\"pln\"> requestWhenInUseAuthorization<\/span><span class=\"pun\">]<\/span><span class=\"pln\"> or <\/span><span class=\"pun\">-[<\/span><span class=\"typ\" style=\"color: #2b91af;\">CLLocationManager<\/span><span class=\"pln\"> requestAlwaysAuthorization<\/span><span class=\"pun\">]<\/span><span class=\"pln\"> first<\/span><span class=\"pun\">.<\/span><\/code><\/pre>\n<p><!--more-->Um dies zu beheben, \u00a0geht man wie folgt vor: 1. In der AppName-Info.plist m\u00fcssen\u00a0einer oder beide Eintr\u00e4ge manuelle \u00a0angelegt werden, da es noch keine Vorgaben in den Selectboxen gibt, also rechter Mausklick auf die Info.plist &gt; Open as Source Code und folgende Eintr\u00e4ge erg\u00e4nzen:<\/p>\n<pre class=\"lang-c prettyprint prettyprinted\" style=\"color: #ccc;\"><span class=\"s1\"><span style=\"color: #ff00ff;\">&lt;key&gt;<span style=\"color: #ccc;\">NSLocationWhenInUseUsageDescription<\/span><\/span><\/span><span class=\"s1\" style=\"color: #ff00ff;\">&lt;\/key&gt;<\/span><\/pre>\n<pre class=\"lang-c prettyprint prettyprinted\" style=\"color: #ccc;\"><span class=\"s1\" style=\"color: #ff00ff;\">&lt;string&gt;<\/span>${PRODUCT_NAME} m\u00f6chte auf Ihren aktuellen Standort zugreifen.<span class=\"s1\" style=\"color: #ff00ff;\">&lt;\/string&gt;<\/span><\/pre>\n<p>und\/oder<\/p>\n<pre class=\"lang-c prettyprint prettyprinted\" style=\"color: #ccc;\"><span class=\"s1\"><span style=\"color: #ff00ff;\">&lt;key&gt;<\/span>NSLocationAlwaysUsageDescription<\/span><span class=\"s1\" style=\"color: #ff00ff;\">&lt;\/key&gt;<\/span><\/pre>\n<pre class=\"lang-c prettyprint prettyprinted\" style=\"color: #ccc;\"><span class=\"s1\" style=\"color: #ff00ff;\">&lt;string&gt;<\/span>${PRODUCT_NAME} m\u00f6chte auf Ihren aktuellen Standort zugreifen.<span class=\"s1\" style=\"color: #ff00ff;\">&lt;\/string&gt;<\/span><\/pre>\n<p class=\"p2\">2. Die zugeh\u00f6rige Berechtigung holt man sich in der App dann mit<\/p>\n<pre class=\"lang-c prettyprint prettyprinted\" style=\"color: #ccc;\"><span class=\"pun\">[<\/span><span class=\"pln\" style=\"color: #ff00ff;\">self<\/span><span class=\"pun\">.<\/span><span class=\"pln\"><span style=\"color: #33cccc;\">locationManager<\/span> <span style=\"color: #333399;\">requestWhenInUseAuthorization<\/span><\/span><span class=\"pun\">];<\/span><\/pre>\n<pre class=\"lang-c prettyprint prettyprinted\" style=\"color: #ccc;\"><span class=\"pun\">[<\/span><span class=\"pln\" style=\"color: #ff00ff;\">self<\/span><span class=\"pun\">.<\/span><span class=\"pln\"><span style=\"color: #33cccc;\">locationManager<\/span> <span style=\"color: #333399;\">requestAlwaysAuthorization<\/span><\/span><span class=\"pun\">];<\/span><\/pre>\n<p class=\"p2\">Wichtig: Ohne die Eintr\u00e4ge in der Info.plist erscheint trotz Abfrage kein Alert und der Zugriffstatus \u00a0<span class=\"s1\">[<\/span><span style=\"color: #333399;\"><span class=\"s2\">CLLocationManager\u00a0<\/span>authorizationStatus<\/span><span class=\"s1\">] bleibt weiterhin undefiniert, es erscheint auch kein\u00a0Eintrag in den App-Einstellungen oder unter Datenschutz. Auch das Aktivieren des Benutzerstandorts einer MapView mit <\/span><span class=\"pln\" style=\"color: #33cccc;\"><span style=\"color: #ff00ff;\">self<span style=\"color: #000000;\">.<\/span><\/span>mapView<\/span><span class=\"pun\">.<\/span><span class=\"pln\" style=\"color: #333399;\">showsUserLocation <\/span><span class=\"pun\">=<\/span><span class=\"pln\"><span style=\"color: #ff00ff;\"> YES<\/span> funktioniert dann nicht. <\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Mit\u00a0iOS 8 hat sich der Zugriff auf den Standort des Benutzers wieder mal ge\u00e4ndert, die Berechtigung teilt sich jetzt in st\u00e4ndige Erlaubnis zur Standortabfrage (\u00a0NSLocationAlwaysUsageDescription ) und in die Erlaubnis nur bei App-Betrieb ( NSLocationWhenInUseUsageDescription ). Will man den Standort bestimmen, bekommt man folgende Meldung: Trying to start MapKit location updates without prompting for location [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-136","post","type-post","status-publish","format-standard","hentry","category-entwicklung"],"_links":{"self":[{"href":"https:\/\/virtual-hideout.de\/blog\/wp-json\/wp\/v2\/posts\/136","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/virtual-hideout.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/virtual-hideout.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/virtual-hideout.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/virtual-hideout.de\/blog\/wp-json\/wp\/v2\/comments?post=136"}],"version-history":[{"count":6,"href":"https:\/\/virtual-hideout.de\/blog\/wp-json\/wp\/v2\/posts\/136\/revisions"}],"predecessor-version":[{"id":257,"href":"https:\/\/virtual-hideout.de\/blog\/wp-json\/wp\/v2\/posts\/136\/revisions\/257"}],"wp:attachment":[{"href":"https:\/\/virtual-hideout.de\/blog\/wp-json\/wp\/v2\/media?parent=136"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/virtual-hideout.de\/blog\/wp-json\/wp\/v2\/categories?post=136"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/virtual-hideout.de\/blog\/wp-json\/wp\/v2\/tags?post=136"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}