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

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:
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.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.

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

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.
Single View App yeterlidir.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.
Xcode’un uygulama için bir Provisioning Profile ve Signing Certificate oluşturduğundan emin olun.

Uygulamanın çalıştığını doğruladıktan sonra uygulamayı diskinizde bulun. Derleme konumunu Report Navigator içindeki derleme raporunda görebilirsiniz.

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

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

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.

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.
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.
Bir oyunun dağıtım paketini oluştururken kullanmak istediğiniz motor türünü seçmeniz gerekir. Üç temel seçeneğiniz vardır:
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.
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:
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.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:
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.
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:

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ğı 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:

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

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

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:

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.

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

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.
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:

Next düğmesine tıklayıp projenizi yapılandırmaya devam edin. Product Name alanına bir ad girin:
![]()
İşlemi tamamlamak için Create düğmesine tıklayın. Projeniz artık oluşturuldu; varlık kataloğunu oluşturmaya geçebiliriz:
![]()
Görüntüleri, desteklenen farklı simge boyutlarını temsil eden boş kutulara sürükleyip bırakın:
![]()
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.
![]()
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:
![]()
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.
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:
Devices and Simulators penceresi üzerinden Xcodeios-deploy komut satırı aracıApple Configurator 2Xcode ü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
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.
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:
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.
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.
A: Derlenmiş bir uygulamanın yetkilerini inceleme bölümünden:
codesign -d --ent :- /path/to/the.app
A: Bir profilin yetkilerini inceleme bölümünden:
security cms -D -i /path/to/iOSTeamProfile.mobileprovision