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

संग्रह की मदद से व्यवस्थित रहें अपनी प्राथमिकताओं के आधार पर, कॉन्टेंट को सेव करें और कैटगरी में बांटें.

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

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

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

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

  1. Xcode 13.0 या इसके बाद के वर्शन.
  2. कोकोपॉड या कथेज.

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

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

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

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

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 में बदलाव करें और उनके वर्शन के साथ अपनी डिपेंडेंसी जोड़ें. यहां एक उदाहरण दिया गया है, जिससे आपके ऐप्लिकेशन के टारगेट का नाम और GooglePlaces पॉड का नाम पता चलता है:
    source 'https://github.com/CocoaPods/Specs.git'
    
    platform :ios, '13.0'
    
    target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
      pod 'GooglePlaces', '7.4.0'
    end
    
    समय-समय पर pod outdated चलाते रहें, ताकि यह पता चल सके कि नया वर्शन कब उपलब्ध हो.
  4. Podfile को सेव करें.
  5. कोई टर्मिनल खोलें और Podfile वाली डायरेक्ट्री पर जाएं:

    cd <path-to-project>
  6. pod install निर्देश चलाएं. ऐसा करने से, Podfile में मौजूद एपीआई के साथ-साथ, वे सभी डिपेंडेंसी भी इंस्टॉल हो जाएंगी.

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

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

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

कार्थेज का इस्तेमाल करें

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
    समय-समय पर carthage outdated का इस्तेमाल करते रहें, ताकि यह पता चल सके कि नया वर्शन कब उपलब्ध हो.
  5. Cartfile को सेव करें.
  6. टर्मिनल विंडो में, उस डायरेक्ट्री पर जाएं जिसमें Cartfile:
    cd <path-to-project>
    है
  7. carthage update निर्देश चलाएं. ऐसा करने से, Cartfile में मौजूद एपीआई के साथ-साथ, वे सभी डिपेंडेंसी भी इंस्टॉल हो जाएंगी.
  8. फ़ाइंडर में, अपनी प्रोजेक्ट निर्देशिका में, Carthage/Build/iOS के अंतर्गत डाउनलोड की गई फ़्रेमवर्क फ़ाइलों पर जाएं.
  9. यहां दिए गए बंडल को अपने प्रोजेक्ट में खींचें और छोड़ें (जब कहा जाए, तो ज़रूरी होने पर आइटम कॉपी करें चुनें:
    • GooglePlaces-x.x.x/Frameworks/GooglePlaces.xcframework
  10. अपने प्रोजेक्ट में GooglePlaces.xcframework दायां क्लिक करें और Find Finder में दिखाएं चुनें.
  11. GooglePlaces.bundle को Resources फ़ोल्डर से खींचकर अपने प्रोजेक्ट में छोड़ें. जब कहा जाए, तब पक्का करें कि डेस्टिनेशन ग्रुप के फ़ोल्डर में आइटम कॉपी करें विकल्प नहीं चुना गया हो.
  12. Project Navigator से अपना प्रोजेक्ट चुनें और अपने ऐप्लिकेशन का टारगेट चुनें.
  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-7.4.0
  2. सोर्स फ़ाइलें अनपैक करें.
  3. Xcode को लॉन्च करें और मौजूदा प्रोजेक्ट खोलें या नया प्रोजेक्ट बनाएं. अगर आपने iOS डेवलपमेंट का इस्तेमाल पहले नहीं किया है, तो नया प्रोजेक्ट बनाएं और iOS ऐप्लिकेशन टेंप्लेट चुनें.
  4. अपने प्रोजेक्ट से पिछली रिलीज़ से, सभी Maps बंडल हटाएं.
  5. यहां दिए गए बंडल को अपने प्रोजेक्ट में खींचें और छोड़ें (जब कहा जाए, तो ज़रूरी होने पर आइटम कॉपी करें चुनें:
    • GooglePlaces-x.x.x/Frameworks/GooglePlaces.xcframework
  6. अपने प्रोजेक्ट में GooglePlaces.xcframework दायां क्लिक करें और Find Finder में दिखाएं चुनें.
  7. GooglePlaces.bundle को Resources फ़ोल्डर से खींचकर अपने प्रोजेक्ट में छोड़ें. जब कहा जाए, तब पक्का करें कि डेस्टिनेशन ग्रुप के फ़ोल्डर में आइटम कॉपी करें विकल्प नहीं चुना गया हो.
  8. Project Navigator से अपना प्रोजेक्ट चुनें और अपने ऐप्लिकेशन का टारगेट चुनें.
  9. बिल्ड के चरण टैब खोलें और लाइब्रेरी की लिंक बाइनरी में, नीचे दिए गए फ़्रेमवर्क और लाइब्रेरी जोड़ें:
    • CoreGraphics.framework
    • CoreLocation.framework
    • libc++.tbd
    • libz.tbd
    • QuartzCore.framework
    • UIKit.framework
  10. किसी खास टारगेट के बजाय, अपना प्रोजेक्ट चुनें और बिल्ड की सेटिंग टैब खोलें.

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

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

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

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

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

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

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

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

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