Manuals
Manuals




This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English

iOS için geliştirme

iOS için oyun paketleme yalnızca Defold düzenleyicisinin Mac sürümünde kullanılabilir.

iOS, derlediğiniz ve telefonunuzda veya tabletinizde çalıştırmak istediğiniz her uygulamanın Apple tarafından verilmiş bir sertifika ve sağlama profiliyle (provisioning profile) imzalanmasını zorunlu kılar. Bu kılavuz, oyununuzu iOS için paketlerken izlemeniz gereken adımları açıklar. Geliştirme sırasında oyununuzu geliştirme uygulaması üzerinden çalıştırmak genellikle tercih edilir; çünkü bu yöntem, içeriği ve kodu doğrudan cihazınızda çalışma sırasında yeniden yüklemenize (hot reload) olanak tanır.

Apple’ın kod imzalama süreci

iOS uygulamalarının güvenliği birkaç bileşenden oluşur. Apple’ın iOS Developer Program programına kaydolarak gerekli araçlara erişebilirsiniz. Kaydolduktan sonra Apple Developer Member Center sayfasına gidin.

Apple Member Center

Certificates, Identifiers & Profiles bölümü, ihtiyacınız olan tüm araçları içerir. Buradan aşağıdakileri oluşturabilir, silebilir ve düzenleyebilirsiniz:

Certificates
Sizi geliştirici olarak tanımlayan, Apple tarafından verilmiş kriptografik sertifikalardır. Geliştirme veya üretim sertifikaları oluşturabilirsiniz. Geliştirici sertifikaları, uygulama içi satın alma mekanizması gibi belirli özellikleri yalıtılmış bir test ortamında denemenize olanak tanır. Üretim sertifikaları, App Store’a yüklenecek son uygulamayı imzalamak için kullanılır. Uygulamaları test amacıyla cihazınıza koymadan önce imzalamak için bir sertifikaya ihtiyacınız vardır.
Identifiers
Çeşitli amaçlarla kullanılan tanımlayıcılardır. Birden çok uygulamayla kullanılabilen joker karakterli tanımlayıcılar (ör. some.prefix.*) kaydedebilirsiniz. App ID’ler, uygulamanın Passbook entegrasyonunu, Game Center’ı vb. etkinleştirip etkinleştirmediği gibi Application Service bilgilerini içerebilir. Bu tür App ID’ler joker karakterli tanımlayıcılar olamaz. Application Services işlevlerinin çalışması için uygulamanızın paket tanımlayıcısı (bundle identifier), App ID tanımlayıcısıyla eşleşmelidir.
Devices
Her geliştirme cihazının kendi UDID değeriyle (Unique Device IDentifier, aşağıya bakın) kaydedilmesi gerekir.
Provisioning Profiles
Sağlama profilleri, sertifikaları App ID’ler ve bir cihaz listesiyle ilişkilendirir. Hangi geliştiricinin hangi uygulamasının hangi cihazlarda bulunmasına izin verildiğini belirtir.

Defold’da oyunlarınızı ve uygulamalarınızı imzalarken geçerli bir sertifikaya ve geçerli bir sağlama profiline ihtiyacınız vardır.

Member Center ana sayfasında yapabileceğiniz işlemlerin bazılarını, kuruluysa Xcode geliştirme ortamından da yapabilirsiniz.

Cihaz tanımlayıcısı (UDID)
Bir iOS cihazının UDID değerini bulmak için cihazı Wi-Fi veya kabloyla bir bilgisayara bağlayın. Xcode’u açın ve Window ▸ Devices and Simulators seçeneğini seçin. Cihazınızı seçtiğinizde seri numarası ve tanımlayıcısı görüntülenir.

Xcode cihazları

Xcode kurulu değilse tanımlayıcıyı iTunes’da bulabilirsiniz. Cihazlar simgesine tıklayın ve cihazınızı seçin.

iTunes cihazları

  1. Summary sayfasında Serial Number alanını bulun.
  2. Alanın UDID olarak değişmesi için Serial Number alanına bir kez tıklayın. Art arda tıklarsanız cihazla ilgili çeşitli bilgiler gösterilir. UDID görünene kadar tıklamaya devam edin.
  3. Uzun UDID dizesine sağ tıklayın ve tanımlayıcıyı panoya kopyalamak için Copy seçeneğini seçin. Böylece cihazı Apple Developer Member Center’da kaydederken UDID alanına kolayca yapıştırabilirsiniz.

Ücretsiz Apple geliştirici hesabıyla geliştirme

Xcode 7’den itibaren herkes Xcode’u kurup ücretsiz olarak cihaz üzerinde geliştirme yapabilir. iOS Developer Program programına kaydolmanız gerekmez. Bunun yerine Xcode, geliştirici olarak sizin için otomatik olarak bir sertifika (1 yıl geçerli) ve belirli cihazınızdaki uygulamanız için bir sağlama profili (bir hafta geçerli) oluşturur.

  1. Cihazınızı bağlayın.
  2. Xcode’u kurun.
  3. Xcode’a yeni bir hesap ekleyin ve Apple ID’nizle giriş yapın.
  4. Yeni bir proje oluşturun. En basit Single View App yeterlidir.
  5. Team seçeneğini (sizin için otomatik oluşturulur) seçin ve uygulamaya bir paket tanımlayıcısı verin.

Defold projenizde aynı paket tanımlayıcısını kullanmanız gerektiğinden bu tanımlayıcıyı not edin.

  1. Xcode’un uygulama için bir Provisioning Profile ve Signing Certificate oluşturduğundan emin olun.

  2. Uygulamayı cihazınızda derleyin. İlk seferde Xcode, Developer mode seçeneğini etkinleştirmenizi ister ve cihazı hata ayıklayıcı desteğiyle hazırlar. Bu işlem biraz zaman alabilir.
  3. Uygulamanın çalıştığını doğruladıktan sonra uygulamayı diskinizde bulun. Derleme konumunu Report Navigator içindeki derleme raporunda görebilirsiniz.

  4. Uygulamayı bulun, sağ tıklayın ve Show Package Contents seçeneğini seçin.

  5. embedded.mobileprovision dosyasını diskinizde daha sonra bulabileceğiniz bir yere kopyalayın.

Bu sağlama dosyası, kod imzalama kimliğinizle birlikte Defold’da uygulamaları bir hafta boyunca imzalamak için kullanılabilir.

Sağlama dosyasının süresi dolduğunda uygulamayı Xcode’da yeniden derlemeniz ve yukarıda açıklandığı gibi yeni bir geçici sağlama dosyası almanız gerekir.

iOS uygulama dağıtım paketi oluşturma

Kod imzalama kimliğini ve sağlama profilini edindikten sonra, düzenleyiciden oyununuz için bağımsız bir uygulama dağıtım paketi (bundle) oluşturmaya hazırsınız. Menüden Project ▸ Bundle... ▸ iOS Application... seçeneğini seçin.

iOS dağıtım paketini imzalama

Kod imzalama kimliğinizi seçin, mobil sağlama dosyanızı bulup seçin ve derleme çeşidini (Debug veya Release) belirleyin. İsterseniz Sign application onay kutusunun işaretini kaldırarak imzalama işlemini atlayabilir ve daha sonraki bir aşamada elle imzalayabilirsiniz. Cihaz dağıtım paketi yerine iOS Simulator için bir arm64_sim-ios dağıtım paketi oluşturmak üzere Simulator seçeneğini işaretleyin.

Simülatör dağıtım paketleri yalnızca Apple Silicon Mac’lerdeki iOS Simulator üzerinde çalışır. İmzalama kimliği veya sağlama profili kullanmadıklarından, Simulator işaretlendiğinde imzalama, kurma ve başlatma seçenekleri devre dışı bırakılır. Dağıtım paketini aşağıda açıklandığı gibi xcrun simctl ile kurun.

Create Bundle düğmesine basın; ardından dağıtım paketinin bilgisayarınızda nerede oluşturulacağını belirtmeniz istenir.

ipa iOS uygulama dağıtım paketi

Uygulamada kullanılacak simgeyi, açılış ekranının arayüz taslağını (storyboard) ve benzeri ayarları game.project proje ayarları dosyasının iOS bölümünde belirtirsiniz.

Özel Info.plist ve yerel hedef keşfi

Yerleşik iOS Info.plist dosyası, yayıma yönelik olmayan derlemelerde düzenleyicinin hedefleri otomatik keşfetmesi için gereken Bonjour hizmetini ve yerel ağ kullanım açıklamasını içerir. Özel bir Info.plist, bu yerleşik temel bildirimin yerini alır. Bir hata ayıklama derlemesinde özel bildirim kullanıyorsanız ve yerel ağ üzerinden hedef keşfine, profil çıkarmaya, çalışma sırasında yeniden yüklemeye veya günlük akışına ihtiyacınız varsa şu girdileri ekleyin:

{{^variant_release}}
<key>NSBonjourServices</key>
<array>
    <string>_defold._tcp</string>
</array>
<key>NSLocalNetworkUsageDescription</key>
<string>Discover Defold targets on the local network.</string>
{{/variant_release}}

Mustache koşulu, keşif girdilerinin yayıma yönelik dağıtım paketlerine dahil edilmesini önler. Kullanım açıklaması dizesi iOS tarafından kullanıcıya gösterilir ve düzenlenebilir veya yerelleştirilebilir. Koşulu yalnızca yayıma yönelik uygulamanın kendisi aynı Bonjour hizmetini ve yerel ağ işlevlerini kullanıyorsa kaldırın.

Derleme çeşitleri

Bir oyunun dağıtım paketini oluştururken kullanmak istediğiniz motor türünü seçmeniz gerekir. Üç temel seçeneğiniz vardır:

  • Debug
  • Release
  • Headless

Bu farklı sürümler derleme çeşitleri (Build variants) olarak da adlandırılır.

Project ▸ Build seçeneğini seçtiğinizde her zaman hata ayıklama sürümünü elde edersiniz.

Debug

Bu tür yürütülebilir dosyalar, birkaç yararlı hata ayıklama özelliği içerdiği için genellikle oyun geliştirme sırasında kullanılır:

  • Profil çıkarıcı (profiler) - Performans ve kullanım sayaçlarını toplamak için kullanılır. Profil çıkarıcının nasıl kullanılacağını Profil çıkarma kılavuzundan öğrenin.
  • Günlüğe kaydetme (logging) - Günlüğe kaydetme etkinleştirildiğinde motor, sistem bilgilerini, uyarıları ve hataları günlüğe kaydeder. Motor ayrıca Lua’nın print() işlevinden ve dmLogInfo(), dmLogError() gibi işlevlerle günlüğe kaydeden yerel kod eklentilerinden (native extension) gelen günlükleri de çıktıya yazar. Bu günlükleri nasıl okuyacağınızı Oyun ve sistem günlükleri kılavuzundan öğrenin.
  • Çalışma sırasında yeniden yükleme (hot reload) - Çalışma sırasında yeniden yükleme, geliştiricinin oyun çalışırken bir kaynağı (resource) yeniden yüklemesini sağlayan güçlü bir özelliktir. Bunu nasıl kullanacağınızı Çalışma sırasında yeniden yükleme kılavuzundan öğrenin.
  • Motor hizmetleri (engine services) - Çeşitli açık TCP bağlantı noktaları ve hizmetler aracılığıyla bir oyunun hata ayıklama sürümüne bağlanmak ve bu sürümle etkileşim kurmak mümkündür. Bu hizmetler, yukarıda sözü edilen çalışma sırasında yeniden yükleme özelliğini, uzaktan günlük erişimini ve profil çıkarıcıyı, ayrıca motorla uzaktan etkileşim kurmaya yönelik başka hizmetleri de içerir. Motor hizmetleri hakkında daha fazla bilgi için geliştirici belgelerine bakın.

Release

Bu çeşitte hata ayıklama özellikleri devre dışıdır. Oyun, uygulama mağazasında yayımlanmaya veya başka yollarla oyuncularla paylaşılmaya hazır olduğunda bu seçeneğin seçilmesi önerilir. Bir oyunu hata ayıklama özellikleri etkin durumdayken yayımlamak çeşitli nedenlerle önerilmez:

  • Hata ayıklama özellikleri ikili dosyada az da olsa yer kaplar ve yayımlanan bir oyunun ikili dosya boyutunu olabildiğince küçük tutmaya çalışmak iyi bir uygulamadır.
  • Hata ayıklama özellikleri az da olsa CPU süresi de kullanır. Kullanıcının donanımı düşük özelliklere sahipse bu durum oyunun performansını etkileyebilir. Cep telefonlarında artan CPU kullanımı, ısınmaya ve pilin tükenmesine de katkıda bulunur.
  • Hata ayıklama özellikleri, güvenlik, hile veya dolandırıcılık açısından oyuncuların görmesi amaçlanmayan oyun bilgilerini açığa çıkarabilir.

Headless

Bu yürütülebilir dosya herhangi bir grafik veya ses olmadan çalışır. Bu, oyunun birim/duman testlerini (unit/smoke tests) bir sürekli tümleştirme (CI) sunucusunda çalıştırabileceğiniz, hatta bu dosyayı bulutta bir oyun sunucusu olarak kullanabileceğiniz anlamına gelir.

Bağlı bir iPhone’a dağıtım paketi kurma ve başlatma

Derlenen dağıtım paketini, düzenleyicinin Bundle iletişim kutusundaki Install on connected device ve Launch installed app onay kutularını kullanarak kurabilir ve başlatabilirsiniz:

iOS dağıtım paketini kurma ve başlatma

Bu özelliğin çalışması için ios-deploy komut satırı aracının kurulu olması gerekir. Kurmanın en basit yolu Homebrew kullanmaktır:

$ brew install ios-deploy

Düzenleyici ios-deploy aracının kurulum konumunu algılayamazsa bu konumu Preferences bölümünde belirtmeniz gerekir.

Arayüz taslağı oluşturma

Arayüz taslağı dosyasını Xcode kullanarak oluşturursunuz. Xcode’u başlatın ve yeni bir proje oluşturun. iOS ve Single View App seçeneklerini seçin:

Proje oluşturma

Next düğmesine tıklayıp projenizi yapılandırmaya devam edin. Product Name alanına bir ad girin:

Proje ayarları

İşlemi tamamlamak için Create düğmesine tıklayın. Projeniz artık oluşturuldu; arayüz taslağını oluşturmaya geçebiliriz:

Proje görünümü

Bir görüntüyü projeye içe aktarmak için sürükleyip bırakın. Ardından Assets.xcassets öğesini seçin ve görüntüyü Assets.xcassets içine bırakın:

Görüntü ekleme

LaunchScreen.storyboard dosyasını açın ve artı düğmesine (+) tıklayın. ImageView bileşenini bulmak için iletişim kutusuna imageview yazın.

Görüntü görünümü ekleme

Image View bileşenini arayüz taslağına sürükleyin:

Arayüz taslağına ekleme

Daha önce Assets.xcassets içine eklediğiniz görüntüyü Image açılır listesinden seçin:

Görüntüyü konumlandırın ve ihtiyaç duyduğunuz diğer ayarlamaları yapın; örneğin bir Label veya başka bir arayüz öğesi ekleyebilirsiniz. Bitirdiğinizde etkin şemayı Any iOS Device (arm64) (veya Generic iOS Device) olarak ayarlayın ve Product ▸ Build seçeneğini seçin. Defold, 64 bit cihazlarda iOS 15.0 ve sonraki sürümleri destekler; bu nedenle dağıtıma alma hedefini 15.0 veya daha yeni bir sürümde tutun. Derleme işleminin tamamlanmasını bekleyin.

Arayüz taslağında görüntü kullanırsanız bunlar LaunchScreen.storyboardc dosyanıza otomatik olarak dahil edilmez. Kaynakları dahil etmek için game.project dosyasındaki Bundle Resources alanını kullanın. Örneğin, Defold projesinde LaunchScreen klasörünü ve bunun içinde ios klasörünü oluşturun (ios klasörü, bu dosyaların yalnızca iOS dağıtım paketlerine dahil edilmesi için gereklidir), ardından dosyalarınızı LaunchScreen/ios/ içine koyun. Bu yolu Bundle Resources alanına ekleyin.

Son adım, derlenmiş LaunchScreen.storyboardc dosyasını Defold projenize kopyalamaktır. Finder’da aşağıdaki konumu açın ve LaunchScreen.storyboardc dosyasını Defold projenize kopyalayın:

/Library/Developer/Xcode/DerivedData/YOUR-PRODUCT-NAME-cbqnwzfisotwygbybxohrhambkjy/Build/Intermediates.noindex/YOUR-PRODUCT-NAME.build/Debug-iphonesimulator/YOUR-PRODUCT-NAME.build/Base.lproj/LaunchScreen.storyboardc

Forum kullanıcısı Sergey Lerg, bu süreci gösteren bir video öğretici hazırladı.

Arayüz taslağı dosyasını edindikten sonra game.project dosyasından ona başvurabilirsiniz.

Simge varlık kataloğu oluşturma

Varlık kataloğu (asset catalog) kullanmak, uygulamanızın simgelerini yönetmek için Apple’ın tercih ettiği yöntemdir. Hatta App Store listelemesinde kullanılan simgeyi sağlamanın tek yolu budur. Varlık kataloğunu, arayüz taslağıyla aynı şekilde Xcode kullanarak oluşturursunuz. Xcode’u başlatın ve yeni bir proje oluşturun. iOS ve Single View App seçeneklerini seçin:

Proje oluşturma

Next düğmesine tıklayıp projenizi yapılandırmaya devam edin. Product Name alanına bir ad girin:

Proje ayarları

İşlemi tamamlamak için Create düğmesine tıklayın. Projeniz artık oluşturuldu; varlık kataloğunu oluşturmaya geçebiliriz:

Proje görünümü

Görüntüleri, desteklenen farklı simge boyutlarını temsil eden boş kutulara sürükleyip bırakın:

Simge ekleme

Notifications, Settings veya Spotlight için simge eklemeyin.

Bitirdiğinizde etkin şemayı Build -> Any iOS Device (arm64)(veya Generic iOS Device) olarak ayarlayın ve Product -> Build seçeneğini seçin. Derleme işleminin tamamlanmasını bekleyin.

Any iOS Device (arm64) veya Generic iOS Device için derlediğinizden emin olun; aksi halde derleme çıktınızı yüklerken ERROR ITMS-90704 hatasını alırsınız.

Projeyi derleme

Son adım, derlenmiş Assets.car dosyasını Defold projenize kopyalamaktır. Finder’da aşağıdaki konumu açın ve Assets.car dosyasını Defold projenize kopyalayın:

/Library/Developer/Xcode/DerivedData/YOUR-PRODUCT-NAME-cbqnwzfisotwygbybxohrhambkjy/Build/Products/Debug-iphoneos/Icons.app/Assets.car

Varlık kataloğu dosyasını edindikten sonra game.project dosyasından kataloğa ve simgelere başvurabilirsiniz:

game.project dosyasına simge ve varlık kataloğu ekleme

App Store simgesine game.project dosyasından başvurmanız gerekmez. Simge, iTunes Connect’e yükleme sırasında Assets.car dosyasından otomatik olarak çıkarılır.

iOS uygulama dağıtım paketi kurma

Düzenleyici, iOS uygulama dağıtım paketi olan bir .ipa dosyası yazar. Dosyayı cihazınıza kurmak için aşağıdaki araçlardan birini kullanabilirsiniz:

Xcode üzerinden kullanılabilen iOS simülatörleriyle çalışmak için xcrun simctl komut satırı aracını da kullanabilirsiniz:

# show a list of available devices
xcrun simctl list

# boot an iPhone X simulator
xcrun simctl boot "iPhone X"

# install your.app to a booted simulator
xcrun simctl install booted your.app

# launch the simulator
open /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app

Apple gizlilik bildirimi

Gizlilik bildirimi (privacy manifest), uygulamanız veya üçüncü taraf SDK tarafından toplanan veri türlerini ve kullanılan, kullanım gerekçesi bildirilmesi zorunlu API’leri kaydeden bir özellik listesidir (property list). Uygulamanız veya üçüncü taraf SDK, topladığı her veri türü ve kullandığı, kullanım gerekçesi bildirilmesi zorunlu her API kategorisi için gerekçeleri, kendi paketine dahil edilen gizlilik bildirimi dosyasına kaydetmelidir.

Defold, game.project dosyasındaki Privacy Manifest alanı aracılığıyla varsayılan bir gizlilik bildirimi sağlar. Bir uygulama dağıtım paketi oluşturulurken gizlilik bildirimi, proje bağımlılıklarındaki tüm gizlilik bildirimleriyle birleştirilir ve uygulama dağıtım paketine eklenir.

Gizlilik bildirimleri hakkında daha fazla bilgi için Apple’ın resmî belgelerini okuyun.

İhracat uygunluğu bilgileri

Oyununuzu App Store’a gönderirken oyununuzdaki şifreleme kullanımıyla ilgili ihracat uygunluğu bilgileri sağlamanız istenir. Apple bunun neden gerekli olduğunu açıklıyor:

“Uygulamanızı TestFlight’a veya App Store’a gönderdiğinizde uygulamanızı Amerika Birleşik Devletleri’ndeki bir sunucuya yüklersiniz. Uygulamanızı ABD veya Kanada dışında dağıtıyorsanız tüzel kişiliğinizin merkezinin nerede olduğuna bakılmaksızın uygulamanız ABD ihracat yasalarına tabidir. Uygulamanız şifreleme kullanıyor, şifrelemeye erişiyor, şifreleme içeriyor, uyguluyor veya bünyesine dahil ediyorsa bu, şifreleme yazılımı ihracatı olarak kabul edilir. Bu da uygulamanızın, dağıtımını yaptığınız ülkelerin ithalat uygunluğu gerekliliklerinin yanı sıra ABD ihracat uygunluğu gerekliliklerine de tabi olduğu anlamına gelir.”

Defold oyun motoru, şifrelemeyi aşağıdaki amaçlarla kullanır:

  • Güvenli kanallar üzerinden çağrı yapmak (ör. HTTPS ve SSL)
  • Lua kodunun telif hakkını korumak (çoğaltılmasını önlemek için)

Defold motorundaki bu şifreleme kullanımları, Amerika Birleşik Devletleri ve Avrupa Birliği yasaları kapsamında ihracat uygunluğu belgesi gerekliliklerinden muaftır. Çoğu Defold projesi muaf kalır; ancak başka kriptografik yöntemlerin eklenmesi bu durumu değiştirebilir. Projenizin bu yasaların gerekliliklerini ve App Store kurallarını karşıladığından emin olmak sizin sorumluluğunuzdadır. Daha fazla bilgi için Apple’ın İhracat uygunluğuna genel bakış belgesine bakın.

Projenizin muaf olduğunu düşünüyorsanız projenin Info.plist dosyasında ITSAppUsesNonExemptEncryption anahtarını False olarak ayarlayın. Daha fazla ayrıntı için Uygulama bildirimleri kılavuzuna bakın.

Sık sorulan sorular

Q: Ücretsiz bir Apple Developer hesabıyla Defold oyunumu kuramıyorum.

A: Defold projenizde, mobil sağlama profilini (provisioning profile) oluştururken Xcode projesinde kullandığınız paket tanımlayıcısının (bundle identifier) aynısını kullandığınızdan emin olun.

Q: Paketlenmiş bir uygulamanın yetkilerini (entitlements) nasıl kontrol edebilirim?

A: Derlenmiş bir uygulamanın yetkilerini inceleme bölümünden:

codesign -d --ent :- /path/to/the.app

Q: Bir sağlama profilinin yetkilerini nasıl kontrol edebilirim

A: Bir profilin yetkilerini inceleme bölümünden:

security cms -D -i /path/to/iOSTeamProfile.mobileprovision