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

इस गाइड में दिए गए तरीके को अपनाकर, iOS के लिए Places SDK टूल डाउनलोड करें. इसकी मदद से लाइब्रेरी और इसकी डिपेंडेंसी अपने ऐप्लिकेशन में भी जोड़ी जा सकती हैं. साथ ही, एपीआई कुंजी का इस्तेमाल बिना किसी शुल्क के किया जा सकता है.

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

पहला चरण: Xcode का नया वर्शन डाउनलोड करना

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

  1. Xcode 14.0 या उसके बाद का वर्शन.
  2. कोकोपॉड या कार्टेज.

चरण 2: SDK टूल इंस्टॉल करना

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

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

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

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, '14.0'
    
    target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
      pod 'GooglePlaces', '8.0.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 के लिए, जगहें SDK टूल, Cartaage के साथ इस्तेमाल किया जा सकता है, जो Swift और Objective-C Cocoa प्रोजेक्ट के लिए, एक आसान और अलग-अलग डिपेंडेंसी मैनेजर है.

  1. कार्थेज इंस्टॉल करें. इसके कई तरीके हैं. इसलिए, सटीक निर्देश पाने के लिए, Carthage README फ़ाइल देखें.
  2. अगर आपके पास अब तक कोई Xcode प्रोजेक्ट नहीं है, तो इसे अभी बनाएं और अपने लोकल मशीन में सेव करें. अगर आपने iOS डेवलपमेंट का इस्तेमाल पहले कभी नहीं किया है, तो एक नया प्रोजेक्ट बनाएं और iOS ऐप्लिकेशन टेंप्लेट चुनें.
  3. अपनी प्रोजेक्ट डायरेक्ट्री में Cartfile नाम की फ़ाइल बनाएं. यह फ़ाइल, आपके प्रोजेक्ट की डिपेंडेंसी तय करती है.
  4. Cartfile में बदलाव करें और उनके वर्शन के साथ अपनी डिपेंडेंसी जोड़ें:
     binary "https://dl.google.com/geosdk/GooglePlaces.json" == 6.2.1
    समय-समय पर carthage outdated चलाते रहें. इससे, यह पता चल सकेगा कि नया वर्शन कब उपलब्ध है.
  5. Cartfile को सेव करें.
  6. टर्मिनल विंडो में, उस डायरेक्ट्री पर जाएं जिसमें Cartfile:
    cd <path-to-project>
    है
  7. carthage update निर्देश चलाएं. ऐसा करने से, Cartfile में बताए गए एपीआई और उनके डिपेंडेंसी भी इंस्टॉल हो जाएंगी.
  8. Finder में जाकर, अपनी प्रोजेक्ट डायरेक्ट्री में, Carthage/Build/iOS में जाकर, डाउनलोड की गई फ़्रेमवर्क फ़ाइलों पर जाएं.
  9. नीचे दिए गए बंडल को अपने प्रोजेक्ट में खींचें और जब कहा जाए, तब आइटम की ज़रूरत होने पर कॉपी करें चुनें:
    • GooglePlaces-x.x.x/Frameworks/GooglePlaces.xcframework
  10. अपने प्रोजेक्ट में GooglePlaces.xcframework का दायां क्लिक करें और Finder में दिखाएं चुनें.
  11. GooglePlaces.bundle को Resources फ़ोल्डर से खींचकर अपने प्रोजेक्ट में छोड़ें. जब कहा जाए, तब पक्का करें कि आइटम के फ़ोल्डर के फ़ोल्डर में आइटम कॉपी करें चुना नहीं गया हो.
  12. प्रोजेक्ट नेविगेटर से अपना प्रोजेक्ट चुनें और अपने ऐप्लिकेशन का टारगेट चुनें.
  13. बिल्ड चरण टैब खोलें और लाइब्रेरी के साथ बाइनरी लिंक करें में, ये फ़्रेमवर्क और लाइब्रेरी जोड़ें:
    • CoreGraphics.framework
    • CoreLocation.framework
    • libc++.tbd
    • libz.tbd
    • QuartzCore.framework
    • UIKit.framework
  14. किसी खास टारगेट के बजाय, अपना प्रोजेक्ट चुनें और बिल्ड की सेटिंग टैब खोलें.

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

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

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

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

इस गाइड में, अपने प्रोजेक्ट में Google Places फ़्रेमवर्क को मैन्युअल तरीके से जोड़ने और Xcode में अपनी बिल्ड सेटिंग को कॉन्फ़िगर करने का तरीका बताया गया है.

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

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

XCFramework इंस्टॉल करें

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

कार्थेज के साथ

iOS के लिए Places SDK टूल, Cartaage के साथ इस्तेमाल करने के लिए उपलब्ध है. यह Swift और Objective-C Cocoa प्रोजेक्ट के लिए, एक आसान और अलग-अलग डिपेंडेंसी मैनेजर है.

  1. कार्थेज इंस्टॉल करें. इसके कई तरीके हैं. इसलिए, सटीक निर्देश पाने के लिए, Carthage README फ़ाइल देखें.
  2. अगर आपके पास अब तक कोई Xcode प्रोजेक्ट नहीं है, तो इसे अभी बनाएं और अपने लोकल मशीन में सेव करें. अगर आपने iOS डेवलपमेंट का इस्तेमाल पहले कभी नहीं किया है, तो एक नया प्रोजेक्ट बनाएं और iOS ऐप्लिकेशन टेंप्लेट चुनें.
  3. अपनी प्रोजेक्ट डायरेक्ट्री में Cartfile नाम की फ़ाइल बनाएं. यह फ़ाइल, आपके प्रोजेक्ट की डिपेंडेंसी के बारे में बताती है.
  4. Cartfile में बदलाव करें और उनके डिपेंडेंसी के साथ उनके वर्शन जोड़ें:

    binary "https://dl.google.com/geosdk/GooglePlaces.json" == 6.2.1-beta
  5. Cartfile को सेव करें.
  6. टर्मिनल विंडो में, उस डायरेक्ट्री पर जाएं जिसमें Cartfile है:

    cd <path-to-project>
  7. carthage update निर्देश चलाएं. ऐसा करने से, Cartfile में बताए गए एपीआई और उनके डिपेंडेंसी भी इंस्टॉल हो जाएंगी.
  8. Finder में जाकर, अपनी प्रोजेक्ट डायरेक्ट्री में, Carthage/Build में जाकर, डाउनलोड की गई फ़्रेमवर्क फ़ाइलों पर जाएं.
  9. फ़्रेमवर्क, लाइब्रेरी, और एम्बेड किए गए कॉन्टेंट में जाकर, अपने प्रोजेक्ट में XCFramework को खींचें और छोड़ें. पक्का करें कि एम्बेड न करें को चुना गया हो:
    • GooglePlaces-x.x.x/GooglePlaces.xcframework
  10. अपने प्रोजेक्ट में GooglePlaces.xcframework का दायां क्लिक करें और Finder में दिखाएं चुनें.
  11. GooglePlaces.bundle को ios-arm64/GooglePlaces.framework/Resources फ़ोल्डर से, अपने Xcode प्रोजेक्ट की टॉप लेवल डायरेक्ट्री में खींचें और छोड़ें. जब कहा जाए, तब पक्का करें कि आइटम के फ़ोल्डर के फ़ोल्डर में आइटम कॉपी करें चुना नहीं गया हो.
  12. प्रोजेक्ट नेविगेटर से अपना प्रोजेक्ट चुनें और अपने ऐप्लिकेशन का टारगेट चुनें.
  13. बिल्ड चरण टैब खोलें और लाइब्रेरी के साथ बाइनरी लिंक करें में जाकर, ये फ़्रेमवर्क और लाइब्रेरी जोड़ें:
    • CoreGraphics.framework
    • CoreLocation.framework
    • libc++.tbd
    • libz.tbd
    • QuartzCore.framework
    • UIKit.framework
  14. किसी खास टारगेट के बजाय, अपना प्रोजेक्ट चुनें और बिल्ड की सेटिंग टैब खोलें.

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

मैन्युअल रूप से

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

  1. SDK स्रोत फ़ाइलें डाउनलोड करें: Google Places-8.0.0.
  2. सोर्स फ़ाइलों को अनपैक करें. XCFramework ऐक्सेस करने के लिए Frameworks फ़ोल्डर पर जाएं.
  3. Xcode लॉन्च करें या कोई मौजूदा प्रोजेक्ट खोलें या कोई नया प्रोजेक्ट बनाएं. अगर iOS का इस्तेमाल आपके लिए नया है, तो एक नया प्रोजेक्ट बनाएं और iOS ऐप्लिकेशन टेंप्लेट चुनें.
  4. फ़्रेमवर्क, लाइब्रेरी, और एम्बेड किए गए कॉन्टेंट में जाकर, अपने प्रोजेक्ट में XCFramework को खींचें और छोड़ें. पक्का करें कि एम्बेड न करें को चुना गया हो:
    • GooglePlaces-x.x.x/GooglePlaces.xcframework
  5. अपने प्रोजेक्ट में GooglePlaces.xcframework का दायां क्लिक करें और Finder में दिखाएं चुनें.
  6. GooglePlaces.bundle को ios-arm64/GooglePlaces.framework/Resources फ़ोल्डर से, अपने 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 इंस्टॉल करना होगा.