Xcode projesi oluşturma

Faturalandırmayı etkinleştirip bir API anahtarı oluşturduktan sonra uygulamanızı geliştirmek için kullanacağınız Xcode projesini ayarlamaya hazır olursunuz.

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

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

iOS için Yerler SDK'sını kullanarak bir proje oluşturmak üzere şunlara ihtiyacınız vardır:

  • Xcode 15.0 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ı Swift Package Manager aracılığıyla yüklenebilir. SDK'yı eklemek istiyorsanız iOS için mevcut tüm Yerler SDK'sı bağımlılıklarını kaldırdığınızdan emin olun.

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

  1. Xcode project veya workspace cihazınızı açın, ardından File > Add Package Dependencies'e (Dosya > Paket Bağımlılıkları Ekle) gidin.
  2. URL olarak https://github.com/googlemaps/ios-places-sdk girin, paketi çekmek için Enter tuşuna basın 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 tabanlı seçeneklerden birine ayarlayın. Yeni projeler için en son sürümü belirtmenizi ve "Tam Sürüm" seçeneğini kullanmanızı öneririz. İşlem tamamlandığında "Paket Ekle"yi tıklayın.
  4. Paket Ürünlerini Seçin penceresinde, GooglePlaces ürününün belirlediğiniz main hedefine ekleneceğini doğrulayın. İş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şik İçerik'te yüklü paketleri görürsünüz. Paketi ve sürümünü doğrulamak için "Project Navigator"daki "Paket Bağımlılıkları" bölümüne de bakabilirsiniz.

Mevcut bir proje için package öğesini güncellemek üzere şu adımları uygulayın:

  1. Xcode'dan "Dosya > Paketler > En Son Paket Sürümlerine Güncelle"ye gidin.
  2. Yüklemenizi doğrulamak için Project Navigator'ın Paket Bağımlılıkları bölümüne giderek paketi ve sürümünü doğrulayın.

CocoaPods kullanılarak eklenen mevcut iOS bağımlıları için Yerler SDK'sını kaldırmak üzere şu 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 Xcode workspace öğelerini CocoaPods dışında bir şey için kullanmıyorsanız kaldırın.

iOS için manuel olarak yüklenmiş mevcut Yerler SDK'sını kaldırmak üzere şu adımları uygulayın:
  1. Xcode proje yapılandırma ayarlarınızdan Frameworks, Libraries ve Embedded Content'i bulun. Eksi işaretini(-) kullanarak aşağıdaki çerçeveyi kaldırın:
    • GooglePlaces.xcframework
  2. Xcode projenizin en üst düzey dizininden GooglePlaces paketini kaldırın.

Kakaoayaklar

iOS için Yerler SDK'sı, tüm yerler özelliklerini içeren bir CocoaPod kapsülü (GooglePlaces) olarak kullanılabilir.

CocoaPods, Swift ve Objective-C Cocoa projeleri için açık kaynak bir bağımlılık yöneticisidir. Halihazırda CocoaPods aracına sahip değilseniz terminalden aşağıdaki komutu çalıştırarak macOS'e yükleyin. Ayrıntılı bilgi için CocoaPods Başlangıç Kılavuzu'na bakın.

sudo gem install cocoapods

iOS için Yerler SDK'sı için bir Podfile oluşturup bu SDK'yı kullanarak SDK'yı ve bağımlılıklarını yükleyin:

  1. Henüz bir Xcode projeniz yoksa hemen bir proje oluşturun ve yerel makinenize kaydedin. iOS geliştirme konusunda yeniyseniz yeni bir proje oluşturun ve iOS uygulaması şablonunu seçin.
  2. Proje dizininizde Podfile adlı bir dosya oluşturun. Bu dosya projenizin bağımlılıklarını tanımlar.
  3. Podfile öğesini düzenleyin ve bağımlılıklarınızı versions birlikte ekleyin. Uygulamanızın hedef adını ve GooglePlaces kapsülünün adını belirten bir örneği burada bulabilirsiniz:
    source 'https://github.com/CocoaPods/Specs.git'
    
    platform :ios, '15.0'
    
    target 'YOUR_APPLICATION_TARGET_NAME_HERE' do
      pod 'GooglePlaces', '8.3.0'
    end
    
    Her zaman güncel kalmanızı sağlamak için daha yeni bir sürüm olduğunu algılamak amacıyla pod outdated uygulamasını düzenli olarak çalıştırdığınızdan emin olun.
  4. Podfile dosyasını kaydedin.
  5. Bir terminal penceresi açın ve Podfile öğesini içeren dizine gidin:

    cd <path-to-project>
  6. pod install komutunu çalıştırın. Bu işlem, Podfile politikasında belirtilen API'leri ve olabilecek bağımlılıklarını yükler.

    pod install
  7. Xcode'u kapatın ve Xcode'u başlatmak için projenizin .xcworkspace dosyasını açın (çift tıklayın). Bundan sonra, projeyi açmak için .xcworkspace dosyasını kullanmanız gerekir.

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

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

Manuel yükleme

Bu kılavuzda, iOS için Yerler SDK'sını içeren XCFramework'ü projenize manuel olarak nasıl ekleyeceğiniz ve Xcode'da derleme ayarlarınızı nasıl yapılandıracağınız gösterilmektedir. XCFramework, Apple silicon kullanan makineler de dahil olmak üzere birden fazla platformda kullanabileceğiniz bir ikili program paketidir.

  1. Aşağıdaki SDK ikili dosyalarını ve kaynak dosyalarını indirin:
  2. XCFramework 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. iOS'te uygulama geliştirme konusunda yeniyseniz yeni bir proje oluşturun ve iOS uygulaması şablonunu seçin.
  4. Önceki sürümlerde bulunan tüm Haritalar paketlerini projenizden kaldırın.
  5. Genel sekmesini açın. Aşağıdaki XCFramework'ü Frameworks, Libraries and Embedded Content (Çerçeveler, Kitaplıklar ve Yerleştirilmiş İçerik) altındaki projenize sürükleyin. Yerleştirme'yi seçtiğinizden emin olun:
    • GooglePlaces.xcframework
  6. İndirdiğiniz GooglePlacesResources'dan GooglePlaces.bundle öğesini sürükleyin.
  7. İndirdiğiniz GooglePlacesResources'dan GooglePlaces.bundle değerini Xcode projenizin en üst düzey dizinine kopyalayın. İstendiğinde Öğeleri hedef grubun klasörüne kopyala'yı seçtiğinizden emin olun.
  8. Project Navigator'dan projenizi seçin ve uygulamanızın hedefini belirleyin.
  9. Build Stages (Derleme Aşamaları) sekmesini açın. Link Binary with Library (İkili Program ile Kitaplıkları Bağla) bölümünde 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ı sekmesini açın. Bağlantı - Genel -> Diğer Bağlayıcı İşaretleri bölümünde "Hata Ayıklama" ve "Sürüm"e -ObjC ekleyin. Bu ayarlar görünmüyorsa Derleme Ayarları çubuğundaki filtreyi Temel yerine Tümü olarak değiştirin.

Apple Gizlilik Manifest Dosyası Ekle

  1. iOS için Yerler SDK'sı için Gizlilik Manifest paketini indirin: GooglePlacesPrivacy.
  2. GooglePlacesPrivacy.bundle dosyasına erişmek için dosyayı çıkarın.
  3. GooglePlacesPrivacy.bundle dosyasını, Xcode projenizin en üst düzey dizinine kopyalayın.

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

Aşağıdaki örneklerde, YOUR_API_KEY yerine API anahtarınızın kullanın.

Swift

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

  • Aşağıdaki içe aktarma ifadesini ekleyin:
    import GooglePlaces
  • YOUR_API_KEY kısmını API anahtarınızla değiştirerek aşağıdaki kodu application(_:didFinishLaunchingWithOptions:) yönteminize ekleyin:
    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 ifadesini ekleyin:
    @import GooglePlaces;
  • YOUR_API_KEY kısmını API anahtarınızla değiştirerek aşağıdaki kodu application:didFinishLaunchingWithOptions: yönteminize ekleyin:
    [GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];

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

Aşağıdaki kod örnekleri, mevcut yerin nasıl oluşturulacağı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
      

Sonraki adımlar

Projeniz yapılandırıldıktan sonra örnek uygulamaları inceleyebilirsiniz. Cocoapods v1.6.1 sürümünün yüklü olması gerekir.