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

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

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

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

iOS के लिए स्थल SDK का उपयोग करके प्रोजेक्ट बनाने के लिए, आपको इनकी आवश्यकता होगी:

  • Xcode 14.0 वर्शन या इसके बाद का वर्शन
  • Cocoapods
  • दूसरा चरण: Xcode प्रोजेक्ट बनाना और iOS के लिए जगहें 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 और संसाधनों को ऐक्सेस करने के लिए, ज़िप की गई फ़ाइलों को अनपैक करें.
    3. Xcode लॉन्च करें और कोई मौजूदा प्रोजेक्ट खोलें या कोई नया प्रोजेक्ट बनाएं. अगर आपने इससे पहले iOS ऐप्लिकेशन इस्तेमाल किया है, तो एक नया प्रोजेक्ट बनाएं और iOS ऐप्लिकेशन टेंप्लेट चुनें.
    4. अपने प्रोजेक्ट से पिछली रिलीज़ में मौजूद Maps बंडल हटाएं.
    5. नीचे दिए गए XCFramework को अपने प्रोजेक्ट में, फ़्रेमवर्क, लाइब्रेरी, और एम्बेड किए गए कॉन्टेंट में खींचें और छोड़ें. पक्का करें कि एम्बेड न करें को चुना गया हो:
      • GooglePlaces.xcframework
    6. अपने Xcode प्रोजेक्ट की टॉप लेवल डायरेक्ट्री में, डाउनलोड किए गए GooglePlacesResources से GooglePlaces.bundle को खींचें और छोड़ें. जब कहा जाए, तब पक्का करें कि आइटम को डेस्टिनेशन ग्रुप के फ़ोल्डर में कॉपी करें चुना हुआ हो.
    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
    • अपने application(_:didFinishLaunchingWithOptions:) तरीके में यह जोड़ें, YOUR_API_KEY को अपनी एपीआई कुंजी से बदलें:
      GMSPlacesClient.provideAPIKey("YOUR_API_KEY")

    Objective-C

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

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