অবস্থান পরিষেবাদি আইওএস 11 এ কাজ করছে না


83

আমি এখন মাত্র 11 টি এসডিকে আইওএস 11 এসডিকে দিয়ে পুনরায় বিল্ড করেছি blue bannerযা এখন সর্বদা প্রদর্শিত হচ্ছে তা সরাতে চেষ্টা করে । আমি ভেবেছিলাম - "ব্রিলিয়ান্ট, সে কাজ করেছে", কেবলমাত্র সেই অবস্থানের পরিষেবাগুলি এখন মোটেই কাজ করছে না তা আবিষ্কার করতে।

অ্যাপ্লিকেশনটি আইওএস 10 এর সাথে কাজ করত - কেউ কি কিছু শুনেছেন?


ইনফো.পুলিস্টে এনএসলোকেশনআলওয়েজ ও যখনইন ইউজ ইউজেজের বিবরণ যুক্ত করুন
জয়প্রকাশ দুবে

উত্তর:


156

এটি প্রদর্শিত হবে যে আপেল আরও একটি গোপনীয়তা বৈশিষ্ট্য যুক্ত করেছে। ব্যবহারকারী এখন আমাদের ওভাররাইড করতে requestAlwaysAuthorizationএবং এটিতে ডাউনগ্রেড করতে সক্ষম requestWhenInUseAuthorization- যার অর্থ বিকাশকারী হিসাবে এখন আমাদের উভয় বিবরণ সরবরাহ করতে হবেInfo.plist

আমি দেখতে পেয়েছি যে তারা একটি নতুন কী যুক্ত করেছে NSLocationAlwaysAndWhenInUseUsageDescription

/*
*      Either the NSLocationAlwaysAndWhenInUseUsageDescription key or both the
*      NSLocationAlwaysUsageDescription and NSLocationWhenInUseUsageDescription
*      keys must be specified in your Info.plist; otherwise, this method will do
*      nothing, as your app will be assumed not to support Always authorization.
*/

তবে, এই নতুন কীটি ব্যবহার করার পরে - লোকেশন পরিষেবাটি এখনও কার্যকর হয়নি, আরও অনুসন্ধানের পরে আমি খুঁজে পেলাম এই রত্নটি অতিরিক্ত সমস্ত ডিবাগিং তথ্যের সাথে মিশে গেছে:

এই অ্যাপ্লিকেশনটি কোনও ব্যবহারের বিবরণ ছাড়াই গোপনীয়তা-সংবেদনশীল ডেটা অ্যাক্সেস করার চেষ্টা করেছে। অ্যাপ্লিকেশনটির তথ্য.পল্লিস্টে অবশ্যই এনএসলোকেশনআলওসঅ্যান্ডওয়েনইন ইউজ ইউজেজডেসক্রিপশন এবং এনএসলোকেশনওয়েনইন ইউজ ইউজেজডেস্ক্রিপশন কীগুলি অ্যাপ্লিকেশনটি কীভাবে এই ডেটা ব্যবহার করে তা ব্যবহারকারীকে ব্যাখ্যা করে

যা আমি আপডেট করা CLLocationManager.hফাইলটিতে পাওয়া মন্তব্যের সাথে সরাসরি বিরোধিতা করি । সুতরাং আমি একটি রাডার তৈরি করেছি।

সুসংবাদ, আপনি যদি ডিবাগিং কনসোল, IE এর পরামর্শ অনুসরণ করেন। নতুন কী NSLocationAlwaysAndWhenInUseUsageDescriptionএবং পুরানো কীগুলির মধ্যে একটি যোগ করুন NSLocationWhenInUseUsageDescription, লোকেশন পরিষেবাগুলি আবার কাজ শুরু করবে।


4
আমি একটি খুব অনুরূপ পরিস্থিতির সম্মুখীন। কেবলমাত্র আমি আইওএস 10.2 এ পরীক্ষা করছি এবং আমি NSLocationAlwaysUsageDescriptionআমার তথ্য.পুলিস্টে যুক্ত করেছি যা আমার প্রয়োজন অনুমতি। তবে আমি উপরের বার্তাটি কনসোলটিতে পেয়েছি যে আমাকে আরও যোগ NSLocationWhenInUseUsageDescriptionকরা দরকার ।
ইসুরু

7
দুর্ভাগ্যক্রমে ব্যবহারকারী এখন তিনটি উত্তর দিয়ে একটি কথোপকথন পেয়েছেন, যেখানে ব্যবহারকারীরা শুরু করার জন্য অধৈর্য্যের কারণে সবচেয়ে বেশি হিট হবেন শীর্ষ বিকল্পটি: "কেবল অ্যাপটি ব্যবহার করার সময়"। যা ব্যবহারকারীদের পরে পুনরায় সেটিংস পরিবর্তন করার সমস্ত ঝামেলা অতিক্রম না করা অবধি অ্যাপ্লিকেশনগুলিকে সর্বদা ব্যবহারে অকার্যকর হিসাবে রেন্ডার করে। কমপক্ষে "সর্বদা অনুমতি দিন" সেরা পছন্দ হওয়া উচিত ছিল যখন এটি অ্যাপটি যা চাচ্ছিল!
হান্স তেরজে বাক্কে

4
আমি তিনটি বিবরণ কী যুক্ত করেছি এবং আমি এখনও অবস্থান আপডেটগুলি পাচ্ছি না। আমি ভিউউইল অ্যাপায়ারে লোকেশন ম্যানেজার্ডেলগেট যুক্ত করছি এবং ভিউউইলডিসাপারটিতে প্রতিনিধিকে সরিয়ে দিচ্ছি। আমি যদি সেটিংয়ে যাই এবং ইতিমধ্যে নির্বাচিত সর্বদা অনুমতি দিন নির্বাচন করুন। আমি একবারে আপডেট পেয়েছি এবং তারপরে আর কিছু নেই। কোন ধারনা কিভাবে এটা ঠিক করতে হবে. আগাম ধন্যবাদ!!
লাভমাউসফুড 21

@ উমা - আপনি ফোন করছেন startUpdatingLocationনাকি requestLocation?
উইলিয়াম জর্জ


44

এটি ঠিক করার পদক্ষেপগুলি যুক্ত করতে:

এটি করার 2 টি উপায়:

ক) সহজ উপায়: আপনার তথ্য.পলিট ফাইলটি নির্বাচন করুন, বৈশিষ্ট্যগুলি যুক্ত করুন, নোট করুন যে তারা লোকেশনের পরিবর্তে PRIVCY দিয়ে শুরু করে ... সুতরাং, এই ভেরিয়েবলগুলির সঠিক নামগুলি "গোপনীয়তা - অবস্থান ..." ইত্যাদি দিয়ে শুরু হয়, যুক্ত করুন এখানে প্রতিটি, এবং ব্যবহারকারী সতর্কবার্তায় এটি কীভাবে দেখবেন তা বর্ণনা করুন।

খ) শক্ত / আকর্ষণীয় / প্রোগ্র্যাম্যাটিক উপায় (আমার এই পদ্ধতিটি আরও বেশি পছন্দ হয়েছে):

আপনার অ্যাপ্লিকেশনটির জন্য আপনার তথ্য.পলিটিকে ডান ক্লিক করুন এবং তারপরে "উত্স কোড দেখুন" নির্বাচন করুন, আপনার এটি সমস্ত এক্সএমএল এ দেখা উচিত,

অন্য ...... ফর্ম্যাটটি অনুসরণ করুন এবং এই বৈশিষ্ট্যগুলি নীচে যুক্ত করুন:

<key>NSLocationAlwaysUsageDescription</key>
<string>Program requires GPS to track cars and job orders</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>Program requires GPS to track cars and job orders</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Program requires GPS to track cars and job orders</string>
<key>NSMicrophoneUsageDescription</key>
<string>This app uses your Microphone to allow Voice over IP communication with the Program Admin system</string>

সংরক্ষণ করুন এবং তারপরে তথ্য.পালিস্ট ফাইলটিতে ডান ক্লিক করুন এবং তারপরে সম্পত্তি তালিকা নির্বাচন করুন, এটি ফাইলটি ডিফল্ট দৃশ্যে ফিরে দেখা উচিত।

সম্পাদনা:

অন্য সদস্য কোড জিজ্ঞাসা করলেন, এটি এখানে:

1) আপনার .H ফাইলে, যুক্ত করুন:

@property (strong, nonatomic) CLLocationManager *LocationManager;

2) আপনার .M ফাইলটিতে ভিউডিড অ্যাপের () ফাংশনের অধীনে যুক্ত করুন:

_LocationManager = [[CLLocationManager alloc] init];
[_LocationManager setDelegate:self];
_LocationManager.desiredAccuracy = kCLLocationAccuracyBestForNavigation;
_LocationManager.pausesLocationUpdatesAutomatically = NO;
[_LocationManager requestAlwaysAuthorization];

_LocationManager.headingFilter = 5;
_LocationManager.distanceFilter = 0;

[_LocationManager startUpdatingLocation];
[_LocationManager startUpdatingHeading];

এটি আমার পক্ষে ভাল কাজ করে, আশা করি কোডটি আপনার পক্ষেও কার্যকর হবে।

শ্রদ্ধা

উত্তরাধিকারী


4
আমি তিনটি বিবরণ কী যুক্ত করেছি এবং আমি এখনও অবস্থান আপডেটগুলি পাচ্ছি না। আমি লোকেশন ম্যানেজার্ডেলগেট যুক্ত করছি viewwillAppear এবং প্রতিনিধিটিকে সরিয়ে দিচ্ছি viewwilldisapper। আমি যদি সেটিংয়ে যাই এবং ইতিমধ্যে নির্বাচিত নির্বাচন করি Allow Always। আমি একবারে আপডেট পেয়েছি এবং তারপরে আর কিছু নেই। কোন ধারনা কিভাবে এটা ঠিক করতে হবে. আগাম ধন্যবাদ!!
লাভমেমসফুড 21

আমার জন্য কী কাজ করছে তা চিত্রিত করার জন্য আমি এখনই আমার কোড যুক্ত করব:
হায়দার সতী

আমার আপনার মত একই কোড আছে। তবুও, আমি বাড়িতে আপডেট না হয়ে এবং অ্যাপটিতে ফিরে না আসা পর্যন্ত আমি অবস্থানের আপডেটগুলি পাই না। এটি কেবল আইওএস ১১-এ ঘটে I
লাভমেমসফুড

আপনি এই থ্রেড এক নজর করতে পারেন? স্ট্যাকওভারফ্লো / প্রশ্ন / 46616496/… । ধন্যবাদ!
লাভমেমসফুড

হাই উমা, আমাদের একজন ব্যবহারকারী ডিভাইসের একটিতে একই সমস্যাটি রিপোর্ট করেছেন, আমি এটি তদন্ত করছি এবং আপনার কাছে ফিরে আসব, আমার ধারণা আইওএস 11 এই মুহূর্তে আমাদের সকলকে অত্যন্ত ব্যস্ত রাখছে ... আমাকে খুঁজে বের করতে হবে এবং এই তাত্পর্যটি সমাধান করুন, দয়া করে আমার সাথে সহ্য করুন ... ধন্যবাদ
হায়দার সতী

23

আইওএস 11 এর অধীনে কাজ করে আমি আবিষ্কার করেছিলাম যে তথ্য.পল্লিস্টকে ইনফো.পালিস্টে কমপক্ষে NSLocationAlwaysAndWhenInUseUsageDescript দরকার:

এখানে চিত্র বর্ণনা লিখুন

স্ট্রেঞ্জ যথেষ্ট যখন আপনার অ্যাপ্লিকেশন বহুভাষী আপনার স্ট্রিং স্থানীয় সংস্করণে প্রয়োজন সব তিনটি কী আর এই পোস্টে উল্লিখিত requestAlwaysAuthorization()এবং locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) চুপি চুপি ব্যর্থ হবে।

শট উদাহরণস্বরূপ জার্মান অনুবাদ দেখাচ্ছে:

এখানে চিত্র বর্ণনা লিখুন

হোঁচট খাওয়ার সময় আশা করি এটি আপনার সময় সাশ্রয় করবে।


ধন্যবাদ, @ আইডোক! এটি আমার অনেক সময় বাঁচিয়েছিল।
রেইনহার্ড মন্নার

এটি সঠিক উত্তর, আইওএস 11 এ স্থানীয় গোপনীয়তা কীগুলি স্থানীয়করণের নির্দেশ দেওয়া হয়েছে।
jberlana

10 ঘন্টা পরে আমি এই পোস্টে উঠি ... tnx
1110

17

সুইফটে কাজ করছে ৩.০.৩

   <key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
   <string>Description</string>

   <key>NSLocationAlwaysUsageDescription</key>
   <string>Will you allow this app to always know your location?</string>

   <key>NSLocationWhenInUseUsageDescription</key>
   <string>Do you allow this app to know your current location?</string>  

ধন্যবাদ বিপুলকুমারহহতা
কেশব গেরার

13

এই পদক্ষেপগুলি অনুসরণ করুন:

"সর্বদা অনুমোদন" দরকার এমন একটি অ্যাপ্লিকেশন নিয়ে আমি একই সমস্যার মধ্যে পড়েছিলাম এবং এই পদক্ষেপগুলি অনুসরণ করে এটি সমাধান করেছি:

1. যোগ NSLocationWhenInUseUsageDescription চাবিকাঠিInfo.plist

2. যোগ NSLocationAlwaysAndWhenInUseUsageDescription করুনInfo.plist

3. যোগ NSLocationAlwaysUsageDescription করুন Info.plist(<আইওএস 11 সমর্থন করতে)

4. আগে কল করুন )requestWhenInUseAuthorization() requestAlwaysAuthorization(

আপনি অনুরোধের আগে অনুরোধআলওয়েজ অনুমোদনের () অনুরোধের আগে কার্যকর করতে পারবেন না। আপনাকে অবশ্যই অনুমতি স্তরে আরোহণ করতে হবে। একবার আমি এই পরিবর্তনগুলি করা হয়ে গেলে, অবস্থান আপডেটগুলি আবার সঠিকভাবে কাজ শুরু করে।

আরো বিস্তারিত এখানে পাওয়া যাবে:

https://developer.apple.com/docamentation/corelocation/choosing_t_Authorization_level_for_location_services/questing_always_authorization


4
এর সাথে কিছুই পরিবর্তিত হয়নি :(
সেমাল বায়আরআই

আমি ফ্ল্যাগটিকে অনুমতি দেয়ব্যাকগ্রাউন্ডলোকেশনআপডেটস সক্ষম করে সমাধান করেছি। দেখুন stackoverflow.com/a/50733860/2610888
অ্যান্ড্রিয়া Gorrieri

6

দুঃখিত চেয়ে ভাল নিরাপদ .. আইওএস 11 এ: নীচে যুক্ত করুন এবং আপনি ভাল।

<key>NSLocationWhenInUseUsageDescription</key>
<string>Description</string>

<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>Description</string>

<key>NSLocationAlwaysUsageDescription</key>
<string>Description</string>

5

আইওএস 12.2 এ সুইফ্ট 5 দিয়ে পরীক্ষা করা হয়েছে

পদক্ষেপ 1. আপনার অবশ্যই প্লিস্ট ফাইলে নিম্নলিখিত গোপনীয়তার অনুমতি যুক্ত করতে হবে

<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>Application requires user’s location for better user experience.</string>

<key>NSLocationAlwaysUsageDescription</key>
<string>Application requires user’s location for better user experience.</string>

<key>NSLocationWhenInUseUsageDescription</key>
<string>Application requires user’s location for better user experience.</string>

পদক্ষেপ ২. বর্তমান অবস্থানগুলি পেতে আপনার কাছে সুইফট কোড অনুসরণ করা আছে তা নিশ্চিত করুন

import UIKit
import MapKit
import CoreLocation

class ViewController: UIViewController, CLLocationManagerDelegate {

    // MARK: Variables declearations
    @IBOutlet weak var mapView: MKMapView!
    var locationManager: CLLocationManager!

    // MARK: View Controller life cycle methods
    override func viewDidLoad() {
        super.viewDidLoad()
        //TODO: Make user you must add following three privacy permissions in plist
        //NSLocationWhenInUseUsageDescription
        //NSLocationAlwaysAndWhenInUseUsageDescription
        //NSLocationAlwaysUsageDescription

        getCurrentLocation()
    }

    func getCurrentLocation()
    {
        if (CLLocationManager.locationServicesEnabled())
        {
            locationManager = CLLocationManager()
            locationManager.delegate = self
            locationManager.desiredAccuracy = kCLLocationAccuracyBest
            locationManager.requestAlwaysAuthorization()
            locationManager.startUpdatingLocation()
        }
    }

    // MARK: Location Manager Delegate methods
    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation])
    {
        let locationsObj = locations.last! as CLLocation
        print("Current location lat-long is = \(locationsObj.coordinate.latitude) \(locationsObj.coordinate.longitude)")
        showOnMap(location: locationsObj)
    }
    func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
        print("Get Location failed")
    }

    func showOnMap(location: CLLocation )
    {
        let center = CLLocationCoordinate2D(latitude: location.coordinate.latitude, longitude: location.coordinate.longitude)
        let region = MKCoordinateRegion(center: center, span: MKCoordinateSpan(latitudeDelta: 0.01, longitudeDelta: 0.01))
        mapView.setRegion(region, animated: true)
    }
}

2

সুইফট: 3 আমি একই সমস্যার মুখোমুখি হয়েছি। আমি সমাধানটি সন্ধান করতে পুরোপুরি ভুল হয়ে গিয়েছিলাম। এখানে আমি সমস্যাটি স্থির করেছি।

পদক্ষেপ -১: প্রকল্প ফাইল> সক্ষমতা> পটভূমি মোড> অবস্থান আপডেট নির্বাচন করুন

পদক্ষেপ -২: এনএসলোকেশনওয়েনইন ইউজ ইউজেজ ডেসক্রিপশন, এনএসলোকেশনআলওসঅ্যান্ডভেনইন ইউজ ইউজেজডিজিপশন কীগুলি ইনফরমেশন.পুলিস্টে যুক্ত করুন

ধাপ 3 :

manager.pausesLocationUpdatesAutomatically = false
manager.allowsBackgroundLocationUpdates = true

অনুমতি ব্যাকগ্রাউন্ডলোকেশন আপডেটগুলি অবশ্যই আমার সমস্যার সমাধান করেছে, আমি বিশ্বাস করতে পারি না এটি অন্যান্য প্রতিক্রিয়া এবং ফোরামে রিপোর্ট করা হয়নি। অ্যাপল ডক্স থেকে: "আপনি এই সম্পত্তিটি ব্যাকগ্রাউন্ড আপডেটগুলি প্রোগ্রামগতভাবে সক্ষম ও অক্ষম করতে ব্যবহার করেন example উদাহরণস্বরূপ, আপনি যখন এই অ্যাপ্লিকেশনটিতে ব্যাকগ্রাউন্ড আপডেট প্রয়োজন সেখানে কেবলমাত্র এই সম্পত্তিটিকে সত্য হিসাবে সেট করতে পারেন property" "এই সম্পত্তির ডিফল্ট মানটি মিথ্যা" " বিকাশকারী.এপলল
ডকুমেন্টেশন / কোরোর অবস্থান / ation
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.