Xcode projesi oluşturma

Faturalandırmayı etkinleştirip bir API anahtarı oluşturduktan sonra Uygulamanızı geliştirmek için kullandığınız Xcode projesidir.

Her sürüm için sürüm notları mevcuttur kullanabilirsiniz.

1. Adım: Gerekli yazılımı yükleyin

iOS için Yerler SDK'sını kullanarak proje oluşturmak için gerekenler:

  • Xcode 15.0 sürümü veya sonraki sürümler

2. Adım: Xcode projesini oluşturun ve iOS için Yerler SDK'sını yükleyin

Swift Paket Yöneticisi

iOS için Yerler SDK'sı üzerinden yüklenebilir Swift Package Manager'a dokunun. SDK'yı eklemek için Mevcut iOS bağımlılıkları için Yerler SDK'sını kaldırdık.

SDK'yı yeni veya mevcut bir projeye eklemek için aşağıdaki adımları uygulayın:

  1. Xcode project veya workspace dosyanızı açın, ardından Dosya > Paket Bağımlılıkları Ekleyin.
  2. URL olarak https://github.com/googlemaps/ios-places-sdk adresini girin ve Enter'a basın paketi çekin ve "Paket Ekle"yi tıklayın.
  3. Belirli bir version yüklemek için Bağımlılık Kuralı alanını sürüm temelli seçeneklerdir. Yeni projeler için en son sürümü ve "Tam Sürüm"ü kullanarak seçeneğini belirleyin. İşlem tamamlandığında "Paket Ekle"yi tıklayın.
  4. Paket Ürünlerini Seçin penceresinde, GooglePlaces öğesinin şuraya ekleneceğini doğrulayın: belirlediğiniz main hedefidir. İşlem tamamlandığında "Paket Ekle"yi tıklayın.
  5. Yüklemenizi doğrulamak için hedefinizin General bölmesine gidin. Çerçeveler, Kitaplıklar ve Yerleştirilmiş İçerikler bölümünde yüklü paketleri göreceksiniz. "Paket Bağımlılıkları"nı da görüntüleyebilirsiniz “Project Navigator”ın bölümü .

Mevcut bir projenin package öğesini güncellemek için şu adımları izleyin:

  1. 9.0.0'dan önceki bir sürümden yeni sürüme geçiyorsanız şunları kaldırmanız gerekir: şu bağımlılıklar: GoogleMapsBase, GoogleMapsCore ve Yükseltme işleminden sonra GoogleMapsM4B. Bağımlılığı kaldırmayın: GoogleMaps Daha fazla bilgi için Sürüm 9.0.0 Sürüm Notları.

    Xcode proje yapılandırma ayarlarınızdan Çerçeveler, Kitaplıklar, ve yerleştirilmiş içerik gibi diğer özelliklerden de faydalanabilirsiniz. Aşağıdaki çerçeveyi kaldırmak için eksi işaretini(-) kullanın:

    • GoogleMapsBase (Yalnızca 9.0.0'dan önceki sürümlerden yapılan yükseltmeler için)
    • GoogleMapsCore (Yalnızca 9.0.0'dan önceki sürümlerden yapılan yükseltmeler için)
    • GoogleMapsM4B (Yalnızca 9.0.0'dan önceki sürümlerden yapılan yükseltmeler için)
  2. Xcode'dan "File > (Dosya) > Paketler > En Son Paket Sürümlerine Güncelleyin".
  3. Yüklemenizi doğrulamak için Project Navigator'ın Paket Bağımlılıkları bölümüne gidin .

CocoaPods, aşağıdaki adımları uygulayın:

  1. Xcode çalışma alanınızı kapatın. Terminali açın ve aşağıdaki komutu yürütün:
    sudo gem install cocoapods-deintegrate cocoapods-clean 
    pod deintegrate 
    pod cache clean --all
  2. Podfile, Podfile.resolved ve CocoaPods dışında bir şey için kullanmıyorsanız Xcode workspace.

Manuel olarak yüklenmiş olan mevcut iOS için Yerler SDK'sını kaldırmak için şu adımları uygulayın:
  1. Xcode proje yapılandırma ayarlarınızdan Çerçeveler, Kitaplıklar, ve yerleştirilmiş içerik gibi diğer özelliklerden de faydalanabilirsiniz. Aşağıdaki çerçeveyi kaldırmak için eksi işaretini(-) kullanın:
    • GooglePlaces.xcframework
  2. Xcode projenizin üst düzey dizininden GooglePlaces öğesini kaldırın. paket.

CocoaPods

iOS için Yerler SDK'sı CocoaPod olarak kullanıma sunulmuştur. pod'u, GooglePlaces'i içerir.

CocoaPods, Swift ve Objective-C için açık kaynaklı bir bağımlılık yöneticisidir. Kakao projeleri. CocoaPods aracınız yoksa macOS'e aşağıdaki komutu terminalden çalıştırarak erişebilirsiniz. Ayrıntılar için bkz. CocoaPods Başlangıç Kılavuzu'na göz atın.

sudo gem install cocoapods

iOS için Yerler SDK'sı için bir Podfile oluşturun ve aşağıdaki adımları uygulayarak SDK'yı ve bağımlılarını yükleyin:

  1. Henüz bir Xcode projeniz yoksa şimdi bir tane oluşturun ve yerel makinenize bakın. iOS'te geliştirme yapmaya yeni başladıysanız yeni bir proje oluşturun iOS Uygulaması şablonunu seçin.
  2. Proje dizininizde Podfile adlı bir dosya oluşturun. Bu projenizin bağımlılıklarını tanımlar.
  3. Podfile öğesini düzenleyin ve sürümleriyle birlikte bağımlılıklarınızı ekleyin. Burada uygulamanızın hedef adını ve GooglePlaces kapsülü:
    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 eklentisini düzenli olarak çalıştırdığınızdan emin olun. her zaman en yeni sürüme sahip olmanızı sağlar.
  4. Podfile dosyasını kaydedin.
  5. Bir terminal penceresi açın ve şunu içeren dizine gidin: Podfile:

    cd <path-to-project>
  6. pod install komutunu çalıştırın. Bu işlem, Bağımlılıklarla birlikte Podfile öğesinde belirtilen API'ler yardımcı olabilir.

    pod install
  7. Xcode'u kapatın ve ardından projenizin klasörünü açın (çift tıklayın) .xcworkspace dosyasını kullanarak Xcode'u başlatın. Bu andan itibaren, projeyi açmak için .xcworkspace dosyasını kullanmanız gerekir.

Mevcut bir projenin API'sini güncellemek için şu adımları izleyin:

  1. Bir terminal penceresi açın ve Podfile öğesini içeren proje dizinine gidin.
  2. pod update komutunu çalıştırın. Bu işlem tüm API'leri günceller Podfile sürümdeki en son sürüme güncelleyin.

Manuel yükleme

Bu kılavuzda, iOS için Yerler SDK'sını içeren XCFramework'ün ve derleme ayarlarınızı Xcode'da yapılandırın. XCFramework, çeşitli platformlarda kullanabileceğiniz bir ikili programdır. Apple Silicon uygulamasını kullanarak gönderin.

  1. Aşağıdaki SDK ikili program ve kaynak dosyalarını indirin:
  2. XCFramework'e ve kaynaklara erişmek için dosyaları çıkarın.
  3. Xcode'u başlatın ve mevcut bir projeyi açın veya yeni bir proje oluşturun belirler. iOS'te geliştirme yapmaya yeni başladıysanız yeni bir proje oluşturun ve iOS Uygulaması şablonu'nu seçin.
  4. Projenizden önceki sürümlerden tüm Haritalar paketlerini kaldırın.
  5. Genel sekmesini açın. Aşağıdaki XCFramework'ü projenize sürükleyin Çerçeveler, Kitaplıklar ve Yerleştirilmiş İçerikler bölümünde bulabilirsiniz. Şunlardan emin olun: Yerleştirme'yi seçin:
    • GooglePlaces.xcframework
  6. İndirdiğiniz GooglePlacesResources'tan GooglePlaces.bundle simgesini sürükleyin
  7. GooglePlacesResources'tan GooglePlaces.bundle öğesini kopyalayın. dosyayı Xcode projenizin üst düzey dizinine indirin. Şu seçeneği belirlediğinizden emin olun: İstendiğinde öğeleri hedef grubun klasörüne kopyalayın.
  8. Project Navigator'dan projenizi seçin ve hedefi belirleyebilirsiniz.
  9. Derleme Aşamaları sekmesini açın. Şununla İkili Program Arasında Bağlantı Oluştur: Kitaplıklara aşağıdaki çerçeveleri ve kitaplıkları ekleyin:
    • CoreGraphics.framework
    • CoreLocation.framework
    • libc++.tbd
    • libz.tbd
    • QuartzCore.framework
    • UIKit.framework
  10. Belirli bir hedef yerine projenizi seçin ve Derleme Ayarları sekmesi. Bağlantı - Genel -> Diğer Bağlayıcı İşaretler bölümünde, -ObjC öğesini "Hata ayıklama"ya ekleyin ve "Serbest bırak". Bu ayarlar görünmüyor, Derleme Ayarları çubuğundan filtreyi değiştirin Temel'den Tümü'ne.

GooglePlacesSwift

GooglePlacesSwift (Önizleme) SDK'sını Swift Package Manager ve CocoaPods'u kullanarak veya manuel olarak yükleyebilirsiniz. İlgili içeriği oluşturmak için kullanılan adımlarının, kurulum adımlarında belirtilen adımları uygulayarak Aşağıdaki farklılıklarla iOS için Yerler SDK'sı:

Örneğin, CocoaPods kullanıyorsanız düzenlenen Podfile görünümü şu şekilde görünür:

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. Adım: Apple Gizlilik Manifest dosyasını inceleyin

Apple, App Store'daki uygulamalar için uygulama gizlilik ayrıntılarını zorunlu kılar. Güncellemeler ve daha fazla bilgi için Apple App Store Gizlilik Ayrıntıları sayfasını ziyaret edin.

Apple Gizlilik Manifest dosyası, SDK'nın kaynak paketinde yer almaktadır. Gizlilik Manifest Dosyasının dahil edildiğini doğrulamak ve içeriğini incelemek için uygulamanızın arşivini oluşturup arşivden bir gizlilik raporu oluşturun.

4. Adım: API anahtarını uygulamanıza ekleyin

Aşağıdaki örneklerde YOUR_API_KEY öğesini kendi API anahtarınızla değiştirin.

Swift

API anahtarınızı AppDelegate.swift cihazınıza aşağıdaki şekilde ekleyin:

  • Aşağıdaki içe aktarma deyimini ekleyin:
    import GooglePlaces
  • Şunları ekleyin: application(_:didFinishLaunchingWithOptions:) yöntemi yerine YOUR_API_KEY ifadesini API anahtarınızla değiştirin:
    GMSPlacesClient.provideAPIKey("YOUR_API_KEY")

Objective-C

API anahtarınızı AppDelegate.m cihazınıza aşağıdaki şekilde ekleyin:

  • Aşağıdaki içe aktarma deyimini ekleyin:
    @import GooglePlaces;
  • Şunları ekleyin: application:didFinishLaunchingWithOptions: yöntemi yerine YOUR_API_KEY ifadesini API anahtarınızla değiştirin:
    [GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];

GooglePlacesSwift

API anahtarınızı AppDelegate.swift cihazınıza aşağıdaki şekilde ekleyin:

  • Aşağıdaki içe aktarma deyimini ekleyin:
    import GooglePlacesSwift
  • Şunları ekleyin: application(_:didFinishLaunchingWithOptions:) yöntemi yerine YOUR_API_KEY ifadesini API anahtarınızla değiştirin:
    PlacesClient.shared.provideAPIKey("YOUR_API_KEY")

5. Adım: Kod yazmaya başlayın

Aşağıdaki kod örnekleri, geçerli yerin nasıl alınacağını gösterir.

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
  

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

Sonraki adımlar

Projeniz yapılandırıldıktan sonra örnek uygulamalar.