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

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

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

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

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

  • Xcode वर्शन 14.0 या इसके बाद का वर्शन
  • Cocoapods
  • दूसरा चरण: Xcode प्रोजेक्ट बनाना और iOS के लिए Places SDK टूल इंस्टॉल करना

    इस एपीआई को किसी नए प्रोजेक्ट में इंस्टॉल करने के लिए, यह तरीका अपनाएं:

    Cocoapods का इस्तेमाल करें

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

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

    sudo gem install cocoapods

    iOS के लिए Places SDK टूल के लिए एक Podfile बनाएं. इसके बाद, SDK टूल और इसकी डिपेंडेंसी के लिए इसका इस्तेमाल करें:

    1. अगर आपके पास अब तक कोई Xcode प्रोजेक्ट नहीं है, तो अभी एक प्रोजेक्ट बनाएं और उसे अपनी लोकल मशीन में सेव करें. अगर आपने iOS डेवलपमेंट का इस्तेमाल पहले कभी नहीं किया है, तो एक नया प्रोजेक्ट बनाएं और iOS ऐप्लिकेशन का टेंप्लेट चुनें.
    2. अपनी प्रोजेक्ट डायरेक्ट्री में Podfile नाम की फ़ाइल बनाएं. इस फ़ाइल से, आपके प्रोजेक्ट की डिपेंडेंसी के बारे में पता चलता है.
    3. Podfile में बदलाव करें और उनके versions के साथ अपनी डिपेंडेंसी जोड़ें. यहां एक उदाहरण दिया गया है, जिससे आपके ऐप्लिकेशन टारगेट के नाम और GooglePlaces पॉड के नाम की जानकारी मिलती है:
      source 'https://github.com/CocoaPods/Specs.git'
      
      platform :ios, '14.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 silicon का इस्तेमाल करने वाली मशीनें भी शामिल हैं.

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

    10. लिंक करने वाले अन्य फ़्लैग सेक्शन में, -ObjC जोड़ें. अगर ये सेटिंग नहीं दिख रही हैं, तो बिल्ड सेटिंग बार में फ़िल्टर को बुनियादी से सभी में बदलें.

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

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

    Swift

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

    • यह इंपोर्ट स्टेटमेंट जोड़ें:
      import GooglePlaces
    • YOUR_API_KEY की जगह अपने एपीआई पासकोड को इस्तेमाल करने के लिए, application(_:didFinishLaunchingWithOptions:) तरीके में यह तरीका जोड़ें:
      GMSPlacesClient.provideAPIKey("YOUR_API_KEY")

    Objective-C

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

    • यह इंपोर्ट स्टेटमेंट जोड़ें:
      @import GooglePlaces;
    • YOUR_API_KEY की जगह अपने एपीआई पासकोड को इस्तेमाल करने के लिए, application:didFinishLaunchingWithOptions: तरीके में यह तरीका जोड़ें:
      [GMSPlacesClient 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
          

    अगले चरण

    प्रोजेक्ट कॉन्फ़िगर होने के बाद, ऐप्लिकेशन के नमूने एक्सप्लोर किए जा सकते हैं. आपको Cocoapods v1.6.1 इंस्टॉल करना होगा.