iOS - kuimoani/defold GitHub Wiki
Developing games for iOS
μ΄ λ§€λ΄μΌμ Defoldμμ iOS μ₯μΉμ μ±κ³Ό κ²μμ κ°λ°νλ λ°©λ²μ μ€λͺ ν©λλ€.
iOS κ°λ°μ κ°λ°μ€μλ iOS κΈ°κΈ°μ μ±μ΄λ κ²μμ μ¬λ¦΄ μ μλλ‘ κ°λ°μ λ±λ‘μ ν΄μΌ νλ€λ μ μμ Android κ°λ°κ³Ό λ€λ¦ λλ€. λ iOSλ ν΄λν°μ΄λ νλΈλ μ μλ λͺ¨λ μ±μ΄ Appleμ΄ λ°νν μΈμ¦μ(certificate)μ νλ‘λΉμ Έλ νλ‘νμΌ(provisioning profile)μ μλͺ ν΄μΌ νλ€κ³ μꡬν©λλ€.
Appleβs code signing process
iOS μ±κ³Ό κ΄λ ¨λ 보μμ μ¬λ¬κ°μ§ μμλ‘ κ΅¬μ±λμ΄ μμ΅λλ€. νμν λꡬμ μ‘μΈμ€ νλ €λ©΄ μ°μ Appleβs iOS Developer Programμ κ°μ ν΄μΌ ν©λλ€. λ±λ‘ νμλ Appleβs Developer Member Center λ‘ μ΄λνκΈ° λ°λλλ€.

Certificates, Identifiers & Profiles μΉμ μ νμν λͺ¨λ λꡬλ₯Ό ν¬ν¨νκ³ μμΌλ©° μ¬κΈ°μμ μμ±, μμ , μμ μ΄ κ°λ₯ν©λλ€.
Certificates
Appleμ λΉμ μ κ°λ°μλ‘ μλ³νλ μνΈνλ μΈμ¦μλ₯Ό λ°νν©λλ€. λΉμ μ development λλ production μΈμ¦μλ₯Ό μμ±ν μ μμ΅λλ€. Developer μΈμ¦μλ μλλ°μ€ ν μ€νΈ νκ²½μμ μΈμ±κ²°μ (in-app purchase) κ°μ νΉμ ν κΈ°λ₯μ ν μ€νΈ ν μ μκ² ν΄ μ€λλ€. Production μΈμ¦μλ App Storeμ μμ±λ μ±μ μ λ‘λ νκΈ° μν΄ μλͺ νλλ° μ¬μ©λ©λλ€. ν μ€νΈλ₯Ό νλ €λ©΄ λΉμ μ κΈ°κΈ°μ μ±μ μ€μΉνκΈ° μ μ μΈμ¦μ λΆν° μλͺ ν΄μΌ ν©λλ€.
Identifiers
λ€μν μ©λμ μλ³μ. μ¬λ¬ μ±μμ μ¬μ©ν μ μλ μμΌλμΉ΄λ μλ³μ(μλ₯Ό λ€μ΄ "some.prefix.*")λ₯Ό λ±λ‘ν μ μμ΅λλ€. App IDλ Passbook integrationκ³Ό Game Center λ±μ νμ±ν μ¬λΆμ κ°μ Application Service μ 보λ₯Ό ν¬ν¨ν μ μμ΅λλ€. μ΄λ¬ν App IDλ μμΌλμΉ΄λ μλ³μκ° λ μ μμ΅λλ€. Application Servicesκ° μλνλ €λ©΄ μ΄ν리μΌμ΄μ μ "bundle identifier" κ° App ID μλ³μμ μΌμΉν΄μΌλ§ ν©λλ€.
Devices
κ° κ°λ° μ₯μΉλ UDID (Unique Device IDentifier)λ₯Ό λ±λ‘ν΄μΌ ν©λλ€. μ₯μΉμμ UDIDλ₯Ό μμλ΄λ λ°©λ²μ μλλ₯Ό μ°Έκ³ λ°λλλ€.
Provisioning Profiles
νλ‘λΉμ Έλ νλ‘νμΌμ νΉμ μ₯μΉμ App IDλ₯Ό μ¬μ©ν μΈμ¦μμ κ΄λ ¨λμ΄ μμ΅λλ€. μ΄λ κΈ°λ³Έμ μΌλ‘ μ΄λ€ κ°λ°μκ° μ΄λ€ μ₯μΉμμ μ΄λ€ μ±μ μ¬μ©ν μ μλμ§λ₯Ό μλ €μ€λλ€.
Defoldμμ κ²μμ΄λ μ±μ μλͺ ν λμλ μ ν¨ν μΈμ¦μμ μ ν¨ν νλ‘λΉμ Έλ νλ‘νμΌμ΄ νμν©λλ€.
Member Center ννμ΄μ§μμ ν μ μλ μΌ μ€μ μΌλΆλ XCode κ°λ°νκ²½ λ΄μμλ μνν μ μμ΅λλ€.
Device UDID
iOS μ₯μΉμ UDIDλ μμ΄νμ΄λ μΌμ΄λΈλ‘ μ»΄ν¨ν°μ μ°κ²°ν΄μ μμλΌ μ μμ΅λλ€. iTunes λ₯Ό μ΄μ΄μ μ₯μΉ μμ΄μ½μ ν΄λ¦νκ³ λΉμ μ μ₯μΉλ₯Ό μ ννμΈμ.

Summary νμ΄μ§μμ Serial Number λ₯Ό μ°Ύμ΅λλ€.

Serial Numberλ₯Ό ν΄λ¦ν΄μ μ΄ νλλ₯Ό UDIDλ‘ λ³κ²½ν©λλ€. λ°λ³΅μ μΌλ‘ ν΄λ¦νλ©΄ μ΄ μ₯μΉμ λν μ¬λ¬ μ 보λ€μ΄ νμλλ―λ‘ UDIDκ° λμ¬ λ κΉμ§ κ³μ ν΄λ¦ν΄λ λ©λλ€. κΈ΄ UDID λ¬Έμμ΄μ λ§μ°μ€ μ€λ₯Έμͺ½ ν΄λ¦ν΄μ Copy λ₯Ό λλ¬ μλ³μλ₯Ό ν΄λ¦½λ³΄λλ‘ λ³΅μ¬ν©λλ€. κ·Έλ¬λ©΄ Appleβs Developer Member Centerμμ μ₯μΉλ₯Ό λ±λ‘ν λ UDID νλμ μ½κ² λΆμ¬λ£κΈ° ν μ μμ΅λλ€.

Signing the Defold development app
development appμ μμ΄νμ΄λ₯Ό ν΅ν΄ 컨ν μΈ λ₯Ό μ€μΉν μ μλ μμ£Ό νΈλ¦¬ν λ²μ μ λλ€. μ₯μΉμ development appμ μ€μΉνκ³ μ±μ μμν λ€μ μλν°μμ ν΄λΉ μ₯μΉλ₯Ό λΉλ λμμΌλ‘ μ νν©λλ€.
νμ¬, μ΅μν νμ ν λͺ μ OS Xλ₯Ό μ€ννκ³ λ€λ₯Έ ν λ©€λ²λ₯Ό μν΄ development appλ₯Ό μλͺ νλ €κ³ Apple Developerμ λ±λ‘ν νμκ° μμ΅λλ€. μ°λ¦¬λ μ΄ μ¬λμ μλͺ μΈ(signer)μ΄λΌκ³ λΆλ₯΄λλ‘ νκ² μ΅λλ€.
- μλͺ μΈμ μ»΄ν¨ν°μ μ€μΉλ μΈμ¦μκ° μμ΄μΌ ν©λλ€.
- μλͺ μΈμ μ»΄ν¨ν°μ λͺ¨λ°μΌ νλ‘λΉμ Έλ νλ‘νμΌμ΄ μμ΄μΌ ν©λλ€.
- μλͺ μΈμ λ€λ₯Έ λ©€λ²λ€λ‘λΆν° UDIDλ₯Ό μμ§νκ³ λͺ¨λ°μΌ νλ‘λΉμ Έλ νλ‘νμΌμ μΆκ°ν΄μΌ ν©λλ€.
μλͺ λ development appμ Defold Dashboardμ μ λ‘λ νλ €λ©΄, μλ λ¨κ³κ° νμν©λλ€.
- μλν°μμ, Project > Sign Appβ¦β μ ν
- λΉμ μ code signing identity μ ν
- λΉμ μ mobile provisioning νμΌ μ°ΎκΈ°
- Sign and upload λ²νΌ λλ₯΄κΈ°

Defold dev appμ Dashboardμ νλ‘μ νΈ νμ΄μ§λ‘ μ λ‘λ λ©λλ€. κ° νλ‘μ νΈ λ©€λ²λ λ€μ μμ μ ν μ μμ΅λλ€.
- iOS μ₯μΉμμ Dashboardλ₯Ό νμ
- νλ‘μ νΈμ λͺ©λ‘μμ νλ‘μ νΈ νμ΄μ§λ₯Ό μΌ
- Members μΉμ μλμ μλ Install the Defold App λ§ν¬λ₯Ό ν΄λ¦ν¨
μ΄ λΉλμ€λ μ 체 νλ‘μΈμ€λ₯Ό 보μ¬μ€λλ€. https://www.youtube.com/watch?v=T_igYdHubqA
Launching the game
iOS μ₯μΉμμ κ²μμ μ€ννλ €λ©΄ Defold dev appκ³Ό μλν°κ° κ°μ μμ΄νμ΄ λ€νΈμν¬μμμ μ°κ²° κ°λ₯ν΄μΌ ν©λλ€.
- μλν°κ° μ€νμ€μΈμ§ νμΈνκΈ°
- iOS μ₯μΉμμ Defold dev app μ€ννκΈ°
- μλν°μμ Project > Targets μ μλ λΉμ μ μ₯μΉ μ ν
- κ²μμ μ€ννκΈ° μν΄ Project > Build And Launch μ ννκΈ°. κ²μ 컨ν μΈ κ° λ€νΈμν¬λ₯Ό ν΅ν΄μ μ₯μΉλ‘ μ€νΈλ¦Ό λλ―λ‘ κ²μμ΄ μμλλλ° μκ°μ΄ 걸릴 μ μμ.
- κ²μμ΄ μ€νλλ λμ, νμμ²λΌ ν« λ¦¬λ‘λ(hot-reload)λ ν μ μμ
Creating an iOS application bundle
μλν°μμ κ²μμ© λ 립 μ΄ν리μΌμ΄μ λ²λ€(stand alone application bundle)λ μ½κ² μμ±ν μ μμ΅λλ€. λ©λ΄μμ Project > Bundleβ¦β > iOS Applicationβ¦β λ₯Ό μ ννκΈ°λ§ νλ©΄ λ©λλ€.

λΉμ μ code signing identityλ₯Ό μ ννκ³ λΉμ μ mobile provisioning νμΌμ νμν©λλ€. Package λ²νΌμ λλ₯΄λ©΄ μ»΄ν¨ν°μμ λ²λ€μ΄ μμ±λ μμΉλ₯Ό μ§μ νλΌλ μ°½μ΄ λΉλλ€.

μλν°λ iOS μ΄ν리μΌμ΄μ λ²λ€λ‘ .ipa νμΌμ μμ±ν©λλ€. μ΄ νμΌμ iTunesλ‘ λλκ·Έ-μ€-λλ‘ ν΄μ λ€μ λκΈ°ν μ€μ λΉμ μ μ₯μΉμ μ€μΉνκ² λ©λλ€. "game.project" νλ‘μ νΈ μ€μ νμΌμμ μ€ν μ€ν¬λ¦° μ΄λ―Έμ§λ μ±μμ μ¬μ©ν μμ΄μ½ λ±μ μ§μ ν μλ μμ΅λλ€.
Troubleshooting
μ΄ν리μΌμ΄μ μ λ€μ΄λ‘λ ν μ μμ κ²½μ°
μλͺ μΈ(signer)μ΄ μ±μ μλͺ νλλ° μ¬μ©λλ mobile provisioningμ UDIDλ₯Ό μ λλ‘ μΆκ°νλμ§ νμΈν©λλ€.
λ΄ μ₯μΉκ° Targets λ©λ΄μ λνλμ§ μμ κ²½μ°
λΉμ μ μ₯μΉκ° μ»΄ν¨ν°μ λμΌν μμ΄νμ΄ λ€νΈμν¬μ μ°κ²°λμ΄ μλμ§ νμΈν©λλ€.
λ²μ μ΄ λ§μ§ μλλ€(mis-matching versions)λ λ©μΈμ§λ‘ κ²μμ΄ μμλμ§ μλ κ²½μ°
μ΄ λ¬Έμ λ μλν°λ₯Ό μ΅μ λ²μ μΌλ‘ μ κ·Έλ μ΄λ νμ λ λ°μν©λλ€. Sign and Uploadλ₯Ό λ€μ ν΄μ νμ¬ μμ§ λ²μ μμ μ dev appμ μμ±ν΄μΌ ν©λλ€. λΉμ μ κΈ°κΈ°μ dashboardμμ λ€μ μ±μ λ€μ΄λ‘λ νμΈμ.