একটি Xcode প্রকল্প সেট আপ করুন

আপনি বিলিং সক্ষম করার পরে এবং একটি API কী তৈরি করার পরে, আপনি Xcode প্রকল্পটি সেট আপ করতে প্রস্তুত যা আপনি আপনার অ্যাপ বিকাশ করতে ব্যবহার করেন৷

রিলিজ নোট প্রতিটি রিলিজের জন্য উপলব্ধ.

ধাপ 1: প্রয়োজনীয় সফ্টওয়্যার ইনস্টল করুন

iOS এর জন্য Places SDK ব্যবহার করে একটি প্রকল্প তৈরি করতে, আপনার প্রয়োজন:

  • Xcode সংস্করণ 15.0 বা তার পরে

ধাপ 2: Xcode প্রকল্প তৈরি করুন এবং iOS এর জন্য Places SDK ইনস্টল করুন

সুইফট প্যাকেজ ম্যানেজার

iOS এর জন্য স্থান SDK সুইফট প্যাকেজ ম্যানেজারের মাধ্যমে ইনস্টল করা যেতে পারে। SDK যোগ করতে, নিশ্চিত করুন যে আপনি iOS নির্ভরতার জন্য বিদ্যমান স্থান SDK সরিয়েছেন।

একটি নতুন বা বিদ্যমান প্রকল্পে SDK যোগ করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. আপনার Xcode project বা workspace খুলুন, তারপর ফাইল > প্যাকেজ নির্ভরতা যোগ করুন এ যান।
  2. URL হিসেবে https://github.com/googlemaps/ios-places-sdk লিখুন, প্যাকেজ টানতে এন্টার টিপুন এবং "প্যাকেজ যোগ করুন" এ ক্লিক করুন।
  3. একটি নির্দিষ্ট version ইনস্টল করতে, নির্ভরতা নিয়ম ক্ষেত্রটি সংস্করণ-ভিত্তিক বিকল্পগুলির একটিতে সেট করুন। নতুন প্রকল্পগুলির জন্য, আমরা সর্বশেষ সংস্করণ নির্দিষ্ট করার এবং "সঠিক সংস্করণ" বিকল্পটি ব্যবহার করার পরামর্শ দিই৷ একবার সম্পূর্ণ হলে, "প্যাকেজ যোগ করুন" এ ক্লিক করুন।
  4. প্যাকেজ পণ্য নির্বাচন করুন উইন্ডো থেকে, যাচাই করুন GooglePlaces আপনার মনোনীত main লক্ষ্যে যোগ করা হবে। একবার সম্পূর্ণ হলে, "প্যাকেজ যোগ করুন" এ ক্লিক করুন।
  5. আপনার ইনস্টলেশন যাচাই করতে, আপনার লক্ষ্যের General ফলকে নেভিগেট করুন। ফ্রেমওয়ার্ক, লাইব্রেরি এবং এমবেডেড সামগ্রীতে আপনার ইনস্টল করা প্যাকেজগুলি দেখতে হবে। আপনি প্যাকেজ এবং এর সংস্করণ যাচাই করতে "প্রজেক্ট নেভিগেটর" এর "প্যাকেজ নির্ভরতা" বিভাগটি দেখতে পারেন।

একটি বিদ্যমান প্রকল্পের জন্য package আপডেট করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. আপনি যদি 9.0.0 এর আগে কোনো সংস্করণ থেকে আপগ্রেড করছেন, তাহলে আপনাকে অবশ্যই নিম্নলিখিত নির্ভরতাগুলি সরিয়ে ফেলতে হবে: আপগ্রেড করার পরে GoogleMapsBase , GoogleMapsCore , এবং GoogleMapsM4BGoogleMaps এর জন্য নির্ভরতা মুছে ফেলবেন না। আরও তথ্যের জন্য, সংস্করণ 9.0.0 রিলিজ নোট দেখুন।

    আপনার Xcode প্রকল্প কনফিগারেশন সেটিংস থেকে, ফ্রেমওয়ার্ক, লাইব্রেরি এবং এমবেডেড সামগ্রী খুঁজুন। নিম্নলিখিত কাঠামো অপসারণ করতে বিয়োগ চিহ্ন(-) ব্যবহার করুন:

    • GoogleMapsBase (শুধুমাত্র 9.0.0 এর আগের সংস্করণ থেকে আপগ্রেডের জন্য)
    • GoogleMapsCore (শুধুমাত্র 9.0.0 এর আগের সংস্করণ থেকে আপগ্রেডের জন্য)
    • GoogleMapsM4B (শুধুমাত্র 9.0.0 এর আগের সংস্করণ থেকে আপগ্রেডের জন্য)
  2. এক্সকোড থেকে, "ফাইল> প্যাকেজ> সর্বশেষ প্যাকেজ সংস্করণে আপডেট" এ যান।
  3. আপনার ইনস্টলেশন যাচাই করতে, প্যাকেজ এবং এর সংস্করণ যাচাই করতে প্রজেক্ট নেভিগেটরের প্যাকেজ নির্ভরতা বিভাগে যান।

CocoaPods ব্যবহার করে যোগ করা iOS নির্ভরতাগুলির জন্য বিদ্যমান স্থান SDK সরাতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. আপনার এক্সকোড ওয়ার্কস্পেস বন্ধ করুন। টার্মিনাল খুলুন এবং নিম্নলিখিত কমান্ডটি চালান:
    sudo gem install cocoapods-deintegrate cocoapods-clean 
    pod deintegrate 
    pod cache clean --all
  2. Podfile , Podfile.resolved এবং Xcode workspace সরিয়ে ফেলুন যদি আপনি CocoaPods ছাড়া অন্য কিছুর জন্য ব্যবহার না করেন।

ম্যানুয়ালি ইনস্টল করা iOS-এর জন্য বিদ্যমান স্থান SDK সরাতে, এই পদক্ষেপগুলি অনুসরণ করুন:
  1. আপনার Xcode প্রকল্প কনফিগারেশন সেটিংস থেকে, ফ্রেমওয়ার্ক, লাইব্রেরি এবং এমবেডেড সামগ্রী খুঁজুন। নিম্নলিখিত কাঠামো অপসারণ করতে বিয়োগ চিহ্ন(-) ব্যবহার করুন:
    • GooglePlaces.xcframework
  2. আপনার Xcode প্রকল্পের শীর্ষ স্তরের ডিরেক্টরি থেকে, GooglePlaces বান্ডেলটি সরান৷

কোকোপডস

iOS-এর জন্য Places SDK একটি CocoaPod পড হিসেবে উপলব্ধ, GooglePlaces , যাতে সমস্ত স্থানের ক্ষমতা রয়েছে৷

CocoaPods হল সুইফট এবং অবজেক্টিভ-সি কোকো প্রকল্পগুলির জন্য একটি ওপেন সোর্স নির্ভরতা ব্যবস্থাপক। আপনার যদি ইতিমধ্যেই CocoaPods টুল না থাকে, তাহলে টার্মিনাল থেকে নিম্নলিখিত কমান্ডটি চালিয়ে ম্যাকোসে এটি ইনস্টল করুন। বিস্তারিত জানার জন্য, CocoaPods শুরু করার নির্দেশিকা দেখুন।

sudo gem install cocoapods

iOS এর জন্য স্থান 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 এ নির্দিষ্ট করা APIগুলিকে ইনস্টল করবে, সাথে তাদের যে কোনো নির্ভরতা থাকতে পারে।

    pod install
  7. Xcode বন্ধ করুন, এবং তারপর Xcode চালু করতে আপনার প্রকল্পের .xcworkspace ফাইল খুলুন (ডাবল-ক্লিক করুন)। এই সময় থেকে, আপনাকে প্রকল্পটি খুলতে .xcworkspace ফাইলটি ব্যবহার করতে হবে।

একটি বিদ্যমান প্রকল্পের জন্য API আপডেট করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. একটি টার্মিনাল খুলুন এবং Podfile ধারণকারী প্রকল্প ডিরেক্টরিতে যান।
  2. pod update কমান্ড চালান। এটি Podfile এ উল্লিখিত সমস্ত API সর্বশেষ সংস্করণে আপডেট করবে।

ম্যানুয়াল ইনস্টলেশন

এই নির্দেশিকাটি দেখায় কিভাবে ম্যানুয়ালি আপনার প্রোজেক্টে iOS এর জন্য Places SDK ধারণকারী XCFramework যোগ করতে হয় এবং Xcode-এ আপনার বিল্ড সেটিংস কনফিগার করতে হয়। একটি XCFramework হল একটি বাইনারি প্যাকেজ যা আপনি Apple সিলিকন ব্যবহার করে মেশিন সহ একাধিক প্ল্যাটফর্মে ব্যবহার করতে পারেন।

  1. নিম্নলিখিত SDK বাইনারি এবং সংস্থান ফাইলগুলি ডাউনলোড করুন:
  2. XCFramework এবং সংস্থানগুলি অ্যাক্সেস করতে ফাইলগুলি বের করুন৷
  3. Xcode চালু করুন এবং হয় একটি বিদ্যমান প্রকল্প খুলুন, অথবা একটি নতুন প্রকল্প তৈরি করুন। আপনি iOS ডেভেলপমেন্টে নতুন হলে, একটি নতুন প্রকল্প তৈরি করুন এবং iOS অ্যাপ টেমপ্লেট নির্বাচন করুন।
  4. আপনার প্রোজেক্ট থেকে আগের রিলিজ থেকে যেকোনও ম্যাপ বান্ডিল সরান।
  5. সাধারণ ট্যাব খুলুন। ফ্রেমওয়ার্ক, লাইব্রেরি এবং এমবেডেড কন্টেন্টের অধীনে নিম্নলিখিত XCFrameworkটিকে আপনার প্রকল্পে টেনে আনুন। এম্বেড করবেন না নির্বাচন নিশ্চিত করুন:
    • GooglePlaces.xcframework
  6. আপনার ডাউনলোড করা GooglePlacesResources থেকে GooglePlaces.bundle টেনে আনুন
  7. আপনার Xcode প্রকল্পের শীর্ষ স্তরের ডিরেক্টরিতে আপনার ডাউনলোড করা GooglePlacesResources থেকে GooglePlaces.bundle অনুলিপি করুন৷ অনুরোধ করা হলে গন্তব্য গোষ্ঠীর ফোল্ডারে আইটেমগুলি অনুলিপি নির্বাচন করতে ভুলবেন না৷
  8. প্রজেক্ট নেভিগেটর থেকে আপনার প্রজেক্ট সিলেক্ট করুন এবং আপনার অ্যাপ্লিকেশনের টার্গেট বেছে নিন।
  9. বিল্ড ফেজ ট্যাব খুলুন। লাইব্রেরির সাথে বাইনারি লিঙ্কের মধ্যে, নিম্নলিখিত ফ্রেমওয়ার্ক এবং লাইব্রেরি যোগ করুন:
    • CoreGraphics.framework
    • CoreLocation.framework
    • libc++.tbd
    • libz.tbd
    • QuartzCore.framework
    • UIKit.framework
  10. একটি নির্দিষ্ট লক্ষ্যের পরিবর্তে আপনার প্রকল্পটি বেছে নিন এবং বিল্ড সেটিংস ট্যাবটি খুলুন। লিঙ্কিং - সাধারণ -> অন্যান্য লিঙ্কার ফ্ল্যাগ বিভাগে, "ডিবাগ" এবং "রিলিজ" এ -ObjC যোগ করুন। যদি এই সেটিংসগুলি দৃশ্যমান না হয়, তবে বিল্ড সেটিংস বারে ফিল্টারটি মৌলিক থেকে সকলে পরিবর্তন করুন৷

GooglePlacesSwift

আপনি সুইফট প্যাকেজ ম্যানেজার, কোকোপডস এবং ম্যানুয়ালি ব্যবহার করে GooglePlacesSwift (প্রিভিউ) SDK ইনস্টল করতে পারেন। সমস্ত প্রক্রিয়ায় ইনস্টলেশনের পদক্ষেপগুলি iOS-এর জন্য Places SDK-এর জন্য বর্ণিত ধাপগুলিকে প্রতিফলিত করে, নিম্নলিখিত পার্থক্যগুলি সহ:

  • Xcode 15.3 প্রয়োজন।
  • সুইফট প্যাকেজ ম্যানেজার ব্যবহার করলে, আপনাকে অবশ্যই 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

ধাপ 3: অ্যাপল প্রাইভেসি ম্যানিফেস্ট ফাইল পরিদর্শন করুন

অ্যাপলের অ্যাপ স্টোরে অ্যাপের জন্য অ্যাপের গোপনীয়তার বিবরণ প্রয়োজন। আপডেট এবং আরও তথ্যের জন্য অ্যাপল অ্যাপ স্টোরের গোপনীয়তা বিবরণ পৃষ্ঠাতে যান।

Apple Privacy Manifest ফাইলটি SDK-এর জন্য রিসোর্স বান্ডেলে অন্তর্ভুক্ত করা হয়েছে। গোপনীয়তা ম্যানিফেস্ট ফাইলটি অন্তর্ভুক্ত করা হয়েছে তা যাচাই করতে এবং এর বিষয়বস্তু পরিদর্শন করতে, আপনার অ্যাপের একটি সংরক্ষণাগার তৈরি করুন এবং সংরক্ষণাগার থেকে একটি গোপনীয়তা প্রতিবেদন তৈরি করুন

ধাপ 4: আপনার অ্যাপে API কী যোগ করুন

নিম্নলিখিত উদাহরণগুলিতে, আপনার API কী দিয়ে YOUR_API_KEY প্রতিস্থাপন করুন।

সুইফট

নিম্নরূপ আপনার AppDelegate.swift এ আপনার API কী যোগ করুন:

  • নিম্নলিখিত আমদানি বিবৃতি যোগ করুন:
    import GooglePlaces
  • আপনার এপিআই কী দিয়ে YOUR_API_KEY প্রতিস্থাপন করে আপনার application(_:didFinishLaunchingWithOptions:) পদ্ধতিতে নিম্নলিখিত যোগ করুন:
    GMSPlacesClient.provideAPIKey("YOUR_API_KEY")

উদ্দেশ্য গ

নিম্নরূপ আপনার AppDelegate.m এ আপনার API কী যোগ করুন:

  • নিম্নলিখিত আমদানি বিবৃতি যোগ করুন:
    @import GooglePlaces;
  • আপনার application:didFinishLaunchingWithOptions: পদ্ধতি, আপনার API কী দিয়ে YOUR_API_KEY প্রতিস্থাপন করুন:
    [GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];

GooglePlacesSwift

নিম্নরূপ আপনার AppDelegate.swift এ আপনার API কী যোগ করুন:

  • নিম্নলিখিত আমদানি বিবৃতি যোগ করুন:
    import GooglePlacesSwift
  • আপনার application(_:didFinishLaunchingWithOptions:) পদ্ধতিতে নিম্নলিখিতগুলি যোগ করুন, আপনার API কী দিয়ে YOUR_API_KEY প্রতিস্থাপন করুন:
    PlacesClient.shared.provideAPIKey("YOUR_API_KEY")

ধাপ 5: কোড লেখা শুরু করুন

নিম্নলিখিত কোড নমুনা বর্তমান স্থান পেতে কিভাবে প্রদর্শন.

সুইফট

  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
      }
    }
  }

  

উদ্দেশ্য গ

  #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()
    }
  }
  

পরবর্তী পদক্ষেপ

আপনার প্রোজেক্ট কনফিগার হওয়ার পরে, আপনি নমুনা অ্যাপগুলি অন্বেষণ করতে পারেন৷