Xcode प्रोजेक्ट सेट अप करना

बिलिंग की सुविधा चालू करने और एपीआई पासकोड बनाने के बाद, Xcode प्रोजेक्ट, जिसका इस्तेमाल अपने ऐप्लिकेशन को डेवलप करने के लिए किया जाता है.

रिलीज़ नोट हर एक के लिए उपलब्ध हैं रिलीज़.

पहला चरण: ज़रूरी सॉफ़्टवेयर इंस्टॉल करना

iOS के लिए Places SDK टूल का इस्तेमाल करके प्रोजेक्ट बनाने के लिए, आपको इनकी ज़रूरत होगी:

  • Xcode वर्शन 15.0 या इसके बाद का वर्शन

चरण 2: Xcode प्रोजेक्ट बनाना और iOS के लिए Places SDK टूल इंस्टॉल करना

Swift पैकेज मैनेजर

iOS के लिए Places SDK टूल Swift पैकेज मैनेजर. SDK टूल जोड़ने के लिए, पक्का करें कि iOS डिपेंडेंसी के लिए सभी मौजूदा Places SDK टूल हटा दिए गए हैं.

SDK टूल को किसी नए या मौजूदा प्रोजेक्ट में जोड़ने के लिए, यह तरीका अपनाएं:

  1. अपना Xcode project या workspace खोलें. इसके बाद, फ़ाइल > पैकेज डिपेंडेंसी जोड़ें.
  2. यूआरएल के तौर पर https://github.com/googlemaps/ios-places-sdk डालें और Enter दबाएं पैकेज खोलने के लिए, और "पैकेज जोड़ें" पर क्लिक करें.
  3. किसी खास version को इंस्टॉल करने के लिए, डिपेंडेंसी नियम फ़ील्ड को इनमें से किसी एक पर सेट करें विकल्प चुने जा सकते हैं. नए प्रोजेक्ट के लिए, हमारा सुझाव है कि आप सबसे नया वर्शन और सटीक वर्शन का इस्तेमाल करके का विकल्प शामिल है. यह प्रोसेस पूरी होने के बाद, "Add Package" पर क्लिक करें.
  4. पैकेज प्रॉडक्ट चुनें विंडो से, पुष्टि करें कि GooglePlaces को पैकेज प्रॉडक्ट में जोड़ा जाएगा आपका तय किया गया main टारगेट. यह प्रोसेस पूरी होने के बाद, "Add Package" पर क्लिक करें.
  5. अपने इंस्टॉलेशन की पुष्टि करने के लिए, टारगेट के General पैनल पर जाएं. फ़्रेमवर्क, लाइब्रेरी, और एम्बेड किए गए कॉन्टेंट में, आपको इंस्टॉल किए गए पैकेज दिखेंगे. "पैकेज डिपेंडेंसी" भी देखी जा सकती है "प्रोजेक्ट नेविगेटर" का सेक्शन की पुष्टि करें.

अगर आपको किसी मौजूदा प्रोजेक्ट के लिए package को अपडेट करना है, तो यह तरीका अपनाएं:

  1. अगर आप 9.0.0 से पहले के वर्शन से अपग्रेड कर रहे हैं, तो आपको ये डिपेंडेंसी: GoogleMapsBase, GoogleMapsCore, और अपग्रेड करने के बाद, GoogleMapsM4B देने होंगे. इसके लिए डिपेंडेंसी न हटाएं GoogleMaps. ज़्यादा जानकारी के लिए, देखें वर्शन 9.0.0 के बारे में जानकारी.

    अपने Xcode प्रोजेक्ट की कॉन्फ़िगरेशन सेटिंग में जाकर, Frameworks, Libraries, और एम्बेड किया गया कॉन्टेंट शामिल है. नीचे दिए गए फ़्रेमवर्क को हटाने के लिए, माइनस साइन(-) का इस्तेमाल करें:

    • GoogleMapsBase (सिर्फ़ 9.0.0 से पहले के वर्शन से अपग्रेड करने के लिए)
    • GoogleMapsCore (सिर्फ़ 9.0.0 से पहले के वर्शन से अपग्रेड करने के लिए)
    • GoogleMapsM4B (सिर्फ़ 9.0.0 से पहले के वर्शन से अपग्रेड करने के लिए)
  2. Xcode से, "फ़ाइल > पैकेज > सबसे नए पैकेज वर्शन पर अपडेट करें".
  3. इंस्टॉल किए जाने की पुष्टि के लिए, Project Navigator के पैकेज डिपेंडेंसी सेक्शन पर जाएं की पुष्टि करें.

इसका उपयोग करके जोड़ी गई iOS डिपेंडेंसी के लिए मौजूदा Places SDK टूल को निकालने के लिए CocoaPods, यह तरीका अपनाएं:

  1. अपना Xcode फ़ाइल फ़ोल्डर बंद करें. टर्मिनल खोलें और नीचे दिया गया निर्देश चलाएं:
    sudo gem install cocoapods-deintegrate cocoapods-clean 
    pod deintegrate 
    pod cache clean --all
  2. Podfile, Podfile.resolved, और अगर CocoaPods के अलावा, किसी और चीज़ के लिए उनका इस्तेमाल नहीं किया जा रहा है, तो Xcode workspace.

मैन्युअल रूप से इंस्टॉल किए गए iOS के लिए, Places SDK टूल को हटाने के लिए, यह तरीका अपनाएं:
  1. अपने Xcode प्रोजेक्ट की कॉन्फ़िगरेशन सेटिंग में जाकर, Frameworks, Libraries, और एम्बेड किया गया कॉन्टेंट शामिल है. नीचे दिए गए फ़्रेमवर्क को हटाने के लिए, माइनस साइन(-) का इस्तेमाल करें:
    • GooglePlaces.xcframework
  2. अपने Xcode प्रोजेक्ट की टॉप लेवल डायरेक्ट्री से, GooglePlaces को हटाएं बंडल.

CocoaPods

iOS के लिए, Places SDK टूल CocoaPod के तौर पर उपलब्ध है पॉड, GooglePlaces, जिसमें जगहों की सभी सुविधाएं शामिल हैं.

CocoaPods, Swift और Objective-C के लिए एक ओपन सोर्स डिपेंडेंसी मैनेजर है कोको प्रोजेक्ट. अगर आपके पास पहले से ही CocoaPods टूल नहीं है, तो इसे इंस्टॉल करें macOS पर, टर्मिनल से यहां दिया गया कमांड चलाकर देखें. जानकारी के लिए, यह देखें CocoaPods को चालू करने के लिए शुरुआती गाइड.

sudo gem install cocoapods

iOS के लिए, Places SDK टूल का Podfile बनाएं और इसका इस्तेमाल करें SDK टूल और उसकी डिपेंडेंसी को इंस्टॉल करना होगा:

  1. अगर आपके पास अभी तक कोई Xcode प्रोजेक्ट नहीं है, तो अभी एक प्रोजेक्ट बनाएं और उसे यहां सेव करें कंप्यूटर पर ट्रांसफ़र किया जा सकता है. अगर आपके पास iOS डेवलपमेंट का अनुभव है, तो नया प्रोजेक्ट बनाएं और iOS ऐप्लिकेशन टेंप्लेट चुनें.
  2. अपनी प्रोजेक्ट डायरेक्ट्री में Podfile नाम की फ़ाइल बनाएं. यह फ़ाइल आपके प्रोजेक्ट की डिपेंडेंसी के बारे में बताती है.
  3. Podfile में बदलाव करें और अपनी डिपेंडेंसी के साथ उनके वर्शन जोड़ें. यहाँ है उदाहरण के लिए, जो आपके ऐप्लिकेशन के लक्ष्य का नाम और GooglePlaces पॉड:
    source 'https://github.com/CocoaPods/Specs.git'
    
    platform :ios, '15.0'
    
    target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
      pod 'GooglePlaces', '8.3.0'
    end
    
    नियमित तौर पर pod outdated चलाना न भूलें, ताकि नई चीज़ों का पता लगाया जा सके ताकि आप हमेशा नवीनतम बने रहें.
  4. Podfile को सेव करें.
  5. टर्मिनल खोलें और उस डायरेक्ट्री पर जाएं जिसमें Podfile:

    cd <path-to-project>
  6. pod install निर्देश चलाएं. इससे, Podfile में बताए गए एपीआई और सभी डिपेंडेंसी उनके पास हो सकता है.

    pod install
  7. Xcode को बंद करें और अपने प्रोजेक्ट का Xcode लॉन्च करने के लिए .xcworkspace फ़ाइल. इसके बाद से, प्रोजेक्ट खोलने के लिए, आपको .xcworkspace फ़ाइल का इस्तेमाल करना होगा.

अगर आपको किसी मौजूदा प्रोजेक्ट के लिए एपीआई अपडेट करना है, तो यह तरीका अपनाएं:

  1. कोई टर्मिनल खोलें और Podfile वाली प्रोजेक्ट डायरेक्ट्री पर जाएं.
  2. pod update निर्देश चलाएं. इससे सभी एपीआई अपडेट हो जाएंगे सबसे नए वर्शन के लिए Podfile में बताया गया है.

मैन्युअल तरीके से इंस्टॉल करना

इस गाइड में, iOS के लिए Places SDK टूल वाले XCFramework को मैन्युअल तौर पर प्रोजेक्ट करें और Xcode में अपनी बिल्ड सेटिंग कॉन्फ़िगर करें. XCFramework एक बाइनरी पैकेज होता है जिसका इस्तेमाल कई प्लैटफ़ॉर्म पर किया जा सकता है. इनमें मशीनें भी शामिल हैं Apple सिलिकॉन का इस्तेमाल करके.

  1. इन SDK टूल की बाइनरी और रिसॉर्स फ़ाइलें डाउनलोड करें:
  2. XCFramework और संसाधनों को ऐक्सेस करने के लिए, फ़ाइलों को निकालें.
  3. Xcode लॉन्च करें और या तो कोई मौजूदा प्रोजेक्ट खोलें या नया प्रोजेक्ट बनाएं प्रोजेक्ट. अगर आपके पास iOS डेवलपमेंट का अनुभव है, तो नया प्रोजेक्ट बनाएं और iOS ऐप्लिकेशन टेंप्लेट चुनें.
  4. अपने प्रोजेक्ट से पिछली रिलीज़ से सभी Maps बंडल हटाएं.
  5. सामान्य टैब खोलें. इस XCFramework को अपने प्रोजेक्ट में खींचें और छोड़ें फ़्रेमवर्क, लाइब्रेरी, और एम्बेड किए गए कॉन्टेंट के तहत उपलब्ध हैं. पक्का करें कि एम्बेड न करें चुनने के लिए:
    • GooglePlaces.xcframework
  6. डाउनलोड किए गए GooglePlacesResources से GooglePlaces.bundle को खींचें और छोड़ें
  7. GooglePlacesResources से GooglePlaces.bundle कॉपी करें आपने अपने Xcode प्रोजेक्ट की टॉप लेवल डायरेक्ट्री में डाउनलोड किया है. को चुनना सुनिश्चित करें निर्देश मिलने पर, आइटम को डेस्टिनेशन ग्रुप के फ़ोल्डर में कॉपी करें.
  8. Project Navigator से प्रोजेक्ट चुनें और का लक्ष्य तय करना.
  9. चरण बनाएं टैब खोलें. बाइनरी को इसके साथ लिंक करें लाइब्रेरी में, ये फ़्रेमवर्क और लाइब्रेरी जोड़ें:
    • CoreGraphics.framework
    • CoreLocation.framework
    • libc++.tbd
    • libz.tbd
    • QuartzCore.framework
    • UIKit.framework
  10. किसी खास टारगेट के बजाय, अपना प्रोजेक्ट चुनें और बिल्ड सेटिंग टैब. लिंक करना - सामान्य -> अन्य लिंकर फ़्लैग सेक्शन में, -ObjC को "डीबग" में जोड़ें और "रिलीज़" करें. अगर ये सेटिंग नहीं दिख रही हैं, बिल्ड सेटिंग बार में फ़िल्टर बदलें सामान्य से सभी पर सेट करें.

GooglePlacesSwift

आप Swift Package Manager, CocoaPods का इस्तेमाल करके, Google PlacesSwift (Preview) SDK टूल को मैन्युअल तरीके से इंस्टॉल कर सकते हैं. कॉन्टेंट बनाने सभी प्रोसेस में इंस्टॉलेशन के चरण, iOS के लिए Places SDK टूल, जिसमें नीचे दिए गए अंतर हैं:

  • Xcode 15.3 ज़रूरी है.
  • अगर Swift पैकेज मैनेजर का इस्तेमाल किया जा रहा है, तो आपको GooglePlaces में GooglePlacesSwift की सदस्यता लें. इसमें इंपोर्ट स्टेटमेंट शामिल हैं.
  • वर्शन नंबर को 0.1.0 में अपडेट करें.
  • अगर ऐप्लिकेशन को मैन्युअल तरीके से इंस्टॉल करना है, तो यहां दी गई SDK टूल की बाइनरी और रिसॉर्स फ़ाइलें डाउनलोड करें:

उदाहरण के लिए, अगर CocoaPods का इस्तेमाल किया जा रहा है, तो बदलाव किया गया Podfile ऐसा दिखेगा:

source 'https://github.com/CocoaPods/Specs.git'

platform :ios, '15.3'

target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
  pod 'GooglePlacesSwift', '0.1.0'
end

तीसरा चरण: Apple Privacy मेनिफ़ेस्ट फ़ाइल की जांच करना

Apple को App Store पर मौजूद ऐप्लिकेशन के लिए, ऐप्लिकेशन की निजता से जुड़ी जानकारी की ज़रूरत होती है. अपडेट और ज़्यादा जानकारी के लिए, Apple App Store के निजता से जुड़ी जानकारी वाले पेज पर जाएं.

Apple Privacy मेनिफ़ेस्ट फ़ाइल, SDK टूल के लिए संसाधनों के बंडल में शामिल होती है. यह पुष्टि करने के लिए कि निजता मेनिफ़ेस्ट फ़ाइल शामिल की गई है और इसके कॉन्टेंट की जांच करने के लिए, अपने ऐप्लिकेशन का संग्रह बनाएं और संग्रह से निजता रिपोर्ट जनरेट करें.

चौथा चरण: अपने ऐप्लिकेशन में एपीआई पासकोड जोड़ना

यहां दिए गए उदाहरणों में, YOUR_API_KEY को अपने एपीआई पासकोड से बदलें.

Swift

AppDelegate.swift में अपने एपीआई पासकोड को इस तरह जोड़ें:

  • यह इंपोर्ट स्टेटमेंट जोड़ें:
    import GooglePlaces
  • अपने application(_:didFinishLaunchingWithOptions:) में यह जोड़ें इस विधि में, YOUR_API_KEY को अपनी API कुंजी से बदला जा रहा है:
    GMSPlacesClient.provideAPIKey("YOUR_API_KEY")

Objective-C

AppDelegate.m में अपने एपीआई पासकोड को इस तरह जोड़ें:

  • यह इंपोर्ट स्टेटमेंट जोड़ें:
    @import GooglePlaces;
  • अपने application:didFinishLaunchingWithOptions: में यह जोड़ें इस विधि में, YOUR_API_KEY को अपनी API कुंजी से बदला जा रहा है:
    [GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];

GooglePlacesSwift

AppDelegate.swift में अपने एपीआई पासकोड को इस तरह जोड़ें:

  • यह इंपोर्ट स्टेटमेंट जोड़ें:
    import GooglePlacesSwift
  • अपने application(_:didFinishLaunchingWithOptions:) में यह जोड़ें इस विधि में, YOUR_API_KEY को अपनी API कुंजी से बदला जा रहा है:
    PlacesClient.shared.provideAPIKey("YOUR_API_KEY")

पांचवां चरण: कोड लिखना शुरू करें

नीचे दिए गए कोड सैंपल, मौजूदा जगह को ढूंढने का तरीका बताते हैं.

Swift

  import GooglePlaces
  import UIKit

  class GetStartedViewController : UIViewController {

    // Add a pair of UILabels in Interface Builder, and connect the outlets to these variables.
    @IBOutlet private var nameLabel: UILabel!
    @IBOutlet private var addressLabel: UILabel!

    private var placesClient: GMSPlacesClient!

    override func viewDidLoad() {
      super.viewDidLoad()
      placesClient = GMSPlacesClient.shared()
    }

    // Add a UIButton in Interface Builder, and connect the action to this function.
    @IBAction func getCurrentPlace(_ sender: UIButton) {
      let placeFields: GMSPlaceField = [.name, .formattedAddress]
      placesClient.findPlaceLikelihoodsFromCurrentLocation(withPlaceFields: placeFields) { [weak self] (placeLikelihoods, error) in
        guard let strongSelf = self else {
          return
        }

        guard error == nil else {
          print("Current place error: \(error?.localizedDescription ?? "")")
          return
        }

        guard let place = placeLikelihoods?.first?.place else {
          strongSelf.nameLabel.text = "No current place"
          strongSelf.addressLabel.text = ""
          return
        }

        strongSelf.nameLabel.text = place.name
        strongSelf.addressLabel.text = place.formattedAddress
      }
    }
  }

  

Objective-C

  #import "GetStartedViewController.h"
  @import GooglePlaces;

  @interface GetStartedViewController ()
  // Add a pair of UILabels in Interface Builder and connect the outlets to these variables
  @property (weak, nonatomic) IBOutlet UILabel *nameLabel;
  @property (weak, nonatomic) IBOutlet UILabel *addressLabel;
  @end

  @implementation GetStartedViewController {
    GMSPlacesClient *_placesClient;
  }

  - (void)viewDidLoad {
    [super viewDidLoad];
    _placesClient = [GMSPlacesClient sharedClient];
  }

  // Add a pair of UILabels in Interface Builder and connect the outlets to these variables.
  - (IBAction)getCurrentPlace:(UIButton *)sender {
    GMSPlaceField placeFields = (GMSPlaceFieldName | GMSPlaceFieldFormattedAddress);

    __weak typeof(self) weakSelf = self;
    [_placesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:placeFields callback:^(NSArray<GMSPlaceLikelihood *> * _Nullable likelihoods, NSError * _Nullable error) {
      __typeof__(self) strongSelf = weakSelf;
      if (strongSelf == nil) {
        return;
      }

      if (error != nil) {
        NSLog(@"An error occurred %@", [error localizedDescription]);
        return;
      }

      GMSPlace *place = likelihoods.firstObject.place;
      if (place == nil) {
        strongSelf.nameLabel.text = @"No current place";
        strongSelf.addressLabel.text = @"";
        return;
      }

      strongSelf.nameLabel.text = place.name;
      strongSelf.addressLabel.text = place.formattedAddress;
    }];
  }

  @end
  

GooglePlacesSwift

  struct ContentView: View {
    @State var place: Place?

    var body: some View {
      Button("Get Place") {
        // A hotel in Saigon with an attribution.
        let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs"
        let fetchPlaceRequest = FetchPlaceRequest(
          placeID: placeID,
          placeProperties: [.displayName, .formattedAddress]
        )
        Task {
          switch await placesClient.fetchPlace(with: fetchPlaceRequest) {
          case .success(let place):
            self.place = place
          case .failure(let placesError):
            // Handle error
        }
      Text(swiftPlace?.displayName ?? "No place yet")
        .padding()
      Text(swiftPlace?.formattedAddress ?? "No place yet")
        .padding()
    }
  }
  

अगले चरण

अपना प्रोजेक्ट कॉन्फ़िगर करने के बाद, ऐप्लिकेशन के नमूने.