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
Pakietowanie gry na iOS jest dostępne tylko w wersji edytora Defold na Maca.
iOS wymaga, aby każda aplikacja, którą zbudujesz i chcesz uruchomić na telefonie lub tablecie, była podpisana certyfikatem wydanym przez Apple i profilem provisioningowym. Ta instrukcja opisuje kroki potrzebne do utworzenia pakietu gry na iOS. Podczas tworzenia często lepiej jest uruchamiać grę przez aplikację deweloperską, ponieważ umożliwia ona szybkie przeładowywanie zawartości i kodu bezpośrednio na urządzenie.
Bezpieczeństwo związane z aplikacjami iOS składa się z kilku elementów. Dostęp do wymaganych narzędzi uzyskasz po zapisaniu się do Programu Apple iOS Developer. Gdy już się zarejestrujesz, przejdź do Apple Developer Member Center.

Sekcja Certificates, Identifiers & Profiles zawiera wszystkie narzędzia, których potrzebujesz. Stąd możesz tworzyć, usuwać i edytować:
some.prefix.*, które można używać z kilkoma aplikacjami. App ID mogą zawierać informacje o Application Services, takie jak włączenie integracji z Passbookiem, Game Center itd. Takie App ID nie mogą być identyfikatorami wieloznacznikowymi. Aby Application Services działały, bundle identifier Twojej aplikacji musi zgadzać się z identyfikatorem App ID.Podczas podpisywania gier i aplikacji w Defold potrzebujesz poprawnego certyfikatu i poprawnego profilu provisioningowego.
Niektóre rzeczy, które możesz zrobić na stronie głównej Member Center, możesz też wykonać z poziomu środowiska deweloperskiego Xcode, jeśli masz je zainstalowane.

Jeśli nie masz zainstalowanego Xcode, identyfikator znajdziesz w iTunes. Kliknij ikonę urządzeń i wybierz swoje urządzenie.

Od Xcode 7 każdy może zainstalować Xcode i tworzyć na urządzeniu za darmo. Nie musisz rejestrować się w iOS Developer Program. Zamiast tego Xcode automatycznie wystawi certyfikat deweloperski (ważny 1 rok) oraz profil provisioningowy dla Twojej aplikacji (ważny 1 tydzień) dla konkretnego urządzenia.
Zanotuj bundle identifier, ponieważ musisz użyć tego samego bundle identifier w projekcie Defold.
Upewnij się, że Xcode utworzył dla aplikacji Provisioning Profile i Signing Certificate.

Gdy potwierdzisz, że aplikacja działa, znajdź ją na dysku. Lokalizację kompilacji zobaczysz w raporcie budowania w “Report Navigator”.

Znajdź aplikację, kliknij ją prawym przyciskiem i wybierz Show Package Contents.


Ten plik provisioningowy możesz wykorzystać razem z tożsamością podpisywania kodu, aby podpisywać aplikacje w Defold przez tydzień.
Gdy profil wygaśnie, musisz ponownie zbudować aplikację w Xcode i uzyskać nowy tymczasowy plik provisioningowy, jak opisano powyżej.
Gdy masz tożsamość podpisywania kodu i profil provisioningowy, możesz utworzyć samodzielny pakiet aplikacji dla swojej gry z poziomu edytora. Po prostu wybierz Project ▸ Bundle... ▸ iOS Application... z menu.

Wybierz tożsamość podpisywania kodu i wskaż plik profilu provisioningowego. Wybierz także, dla jakich architektur chcesz spakować aplikację (32-bit, 64-bit i symulator iOS) oraz wariant (Debug lub Release). Opcjonalnie możesz odznaczyć pole wyboru Sign application, aby pominąć proces podpisywania i podpisać pakiet ręcznie później.
Musisz odznaczyć pole Sign application, gdy testujesz grę na symulatorze iOS. Aplikację będzie można zainstalować, ale nie uruchomi się.
Naciśnij Create Bundle, a potem zostaniesz poproszony o wskazanie miejsca na komputerze, w którym pakiet ma zostać utworzony.

Ikonę aplikacji, storyboard ekranu startowego i inne ustawienia określasz w pliku ustawień projektu game.project w sekcji iOS.
Gdy tworzysz pakiet gry, musisz wybrać, którego wariantu silnika chcesz użyć. Masz trzy podstawowe opcje:
Te różne wersje są też określane jako Build variants.
Gdy wybierzesz Project ▸ Build, zawsze otrzymasz wersję debug.
Ten typ pliku wykonywalnego jest zwykle używany podczas tworzenia gry, ponieważ zawiera kilka przydatnych funkcji debugowania:
print() oraz z natywnych rozszerzeń korzystających z dmLogInfo(), dmLogError() i podobnych. Dowiedz się, jak czytać te logi w podręczniku logów gry i systemu.Ten wariant ma wyłączone funkcje debugowania. Tę opcję należy wybrać, gdy gra jest gotowa do publikacji w sklepie z aplikacjami lub udostępnienia graczom w inny sposób. Nie zaleca się wydawania gry z włączonymi funkcjami debugowania z kilku powodów:
Ten plik wykonywalny działa bez grafiki i dźwięku. Oznacza to, że możesz uruchamiać testy jednostkowe i smoke testy gry na serwerze CI, a nawet używać go jako serwera gry w chmurze.
Zbudowany pakiet możesz zainstalować i uruchomić, używając w oknie Bundle pól wyboru edytora Install on connected device i Launch installed app:

Do działania tej funkcji wymagane jest zainstalowane narzędzie wiersza poleceń ios-deploy. Najprościej zainstalować je przez Homebrew:
$ brew install ios-deploy
Jeśli edytor nie może wykryć lokalizacji instalacji narzędzia ios-deploy, musisz podać ją w Preferences.
Storyboard tworzysz w Xcode. Uruchom Xcode i utwórz nowy projekt. Wybierz iOS i Single View App:

Kliknij Next i przejdź do konfiguracji projektu. Wpisz nazwę produktu:

Kliknij Create, aby zakończyć proces. Projekt jest już utworzony i możemy przejść do tworzenia storyboardu:

Przeciągnij i upuść obraz, aby zaimportować go do projektu. Następnie wybierz Assets.xcassets i upuść obraz do Assets.xcassets:

Otwórz LaunchScreen.storyboard i kliknij przycisk plusa (+). Wpisz “imageview” w oknie dialogowym, aby znaleźć komponent Image View.

Przeciągnij komponent Image View na storyboard:

Wybierz obraz, który wcześniej dodałeś do Assets.xcassets, z listy rozwijanej Image:

Ustaw pozycję obrazu i wprowadź inne potrzebne poprawki, na przykład dodając Label albo inny element UI. Gdy skończysz, ustaw aktywny schemat na Build -> Any iOS Device (`arm64`, `armv7`) (albo Generic iOS Device) i wybierz Product -> Build. Poczekaj, aż proces budowania się zakończy.
Jeśli w opcji “Any iOS Device (arm64)” masz tylko arm64, zmień iOS Deployment target na 10.3 w ustawieniach “Project -> Basic -> Deployment”. Dzięki temu storyboard będzie zgodny z urządzeniami armv7 (na przykład iPhone5c).
Jeśli używasz obrazów w storyboardzie, nie zostaną one automatycznie uwzględnione w LaunchScreen.storyboardc. Aby dołączyć zasoby, użyj pola Bundle Resources w game.project. Na przykład utwórz folder LaunchScreen w projekcie Defold oraz folder ios wewnątrz niego (ios jest potrzebny, aby dołączać te pliki tylko dla bundli iOS), a następnie umieść pliki w LaunchScreen/ios/. Dodaj tę ścieżkę w Bundle Resources.

Ostatnim krokiem jest skopiowanie skompilowanego pliku LaunchScreen.storyboardc do projektu Defold. Otwórz Finder w następującej lokalizacji i skopiuj plik LaunchScreen.storyboardc do projektu Defold:
/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
Użytkownik forum Sergey Lerg przygotował samouczek wideo pokazujący ten proces.
Gdy masz już plik storyboardu, możesz odwołać się do niego w game.project.
Wymagane od Defold 1.2.175.
Korzystanie z katalogu zasobów jest preferowanym przez Apple sposobem zarządzania ikonami aplikacji. W praktyce jest to jedyny sposób na dostarczenie ikony używanej w App Store. Katalog zasobów tworzysz tak samo jak storyboard, używając Xcode. Uruchom Xcode i utwórz nowy projekt. Wybierz iOS i Single View App:

Kliknij Next i przejdź do konfiguracji projektu. Wpisz nazwę produktu:
![]()
Kliknij Create, aby zakończyć proces. Projekt jest już utworzony i możemy przejść do tworzenia katalogu zasobów:
![]()
Przeciągnij i upuść obrazy do pustych pól odpowiadających różnym obsługiwanym rozmiarom ikon:
![]()
Nie dodawaj żadnych ikon dla Notifications, Settings ani Spotlight.
Gdy skończysz, ustaw aktywny schemat na Build -> Any iOS Device (arm64) (albo Generic iOS Device) i wybierz Product -> Build. Poczekaj, aż proces budowania się zakończy.
Upewnij się, że budujesz dla Any iOS Device (arm64) albo Generic iOS Device, bo w przeciwnym razie podczas wysyłania builda pojawi się błąd ERROR ITMS-90704.
![]()
Ostatnim krokiem jest skopiowanie skompilowanego pliku Assets.car do projektu Defold. Otwórz Finder w następującej lokalizacji i skopiuj plik Assets.car do projektu Defold:
/Library/Developer/Xcode/DerivedData/YOUR-PRODUCT-NAME-cbqnwzfisotwygbybxohrhambkjy/Build/Products/Debug-iphoneos/Icons.app/Assets.car
Gdy masz już plik katalogu zasobów, możesz odwołać się do niego i do ikon w game.project:
![]()
Ikony App Store nie muszą być odwoływane w game.project. Są automatycznie wyodrębniane z pliku Assets.car podczas wysyłania do iTunes Connect.
Edytor zapisuje plik .ipa, który jest pakietem aplikacji iOS. Aby zainstalować ten plik na urządzeniu, możesz użyć jednego z poniższych narzędzi:
ios-deploy command line toolApple Configurator 2 z macOS App StoreMożesz też użyć narzędzia wiersza poleceń xcrun simctl, aby pracować z symulatorami iOS dostępnymi przez Xcode:
# pokaż listę dostępnych urządzeń
xcrun simctl list
# uruchom symulator iPhone X
xcrun simctl boot "iPhone X"
# zainstaluj your.app na uruchomionym symulatorze
xcrun simctl install booted your.app
# uruchom symulator
open /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app
Manifest prywatności to plik listy właściwości, który zapisuje typy danych zbieranych przez aplikację lub SDK firm trzecich oraz używane przez nie interfejsy API wymagające podania uzasadnienia. Dla każdego typu danych zbieranego przez aplikację lub SDK firm trzecich oraz dla każdej kategorii używanego interfejsu API wymagającego podania uzasadnienia aplikacja lub SDK firm trzecich musi zapisać powody w dołączonym pliku manifestu prywatności.
Defold udostępnia domyślny manifest prywatności za pośrednictwem pola Privacy Manifest w pliku game.project. Podczas tworzenia pakietu aplikacji manifest prywatności jest scalany z manifestami prywatności w zależnościach projektu i dołączany do pakietu aplikacji.
Więcej informacji o manifestach prywatności znajdziesz w oficjalnej dokumentacji Apple.
Gdy zgłaszasz grę do App Store, zostaniesz poproszony o podanie informacji o zgodności eksportowej dotyczącej użycia szyfrowania w grze. Apple wyjaśnia, dlaczego jest to wymagane:
“Gdy zgłaszasz aplikację do TestFlight lub App Store, przesyłasz ją na serwer w Stanach Zjednoczonych. Jeśli dystrybuujesz aplikację poza USA lub Kanadą, podlega ona amerykańskim przepisom eksportowym, niezależnie od miejsca rejestracji Twojej firmy. Jeśli aplikacja używa, uzyskuje dostęp do, zawiera, implementuje lub włącza szyfrowanie, jest to traktowane jako eksport oprogramowania szyfrującego, co oznacza, że aplikacja podlega wymaganiom zgodności eksportowej USA oraz wymaganiom importowym krajów, w których ją dystrybuujesz.”
Silnik Defold używa szyfrowania w następujących celach:
Te zastosowania szyfrowania w silniku Defold są zwolnione z wymogu dokumentacji zgodności eksportowej na mocy prawa Stanów Zjednoczonych i Unii Europejskiej. Większość projektów Defold nadal będzie zwolniona, ale dodanie innych metod kryptograficznych może zmienić ten status. To Twoja odpowiedzialność, aby upewnić się, że Twój projekt spełnia wymagania tych przepisów i reguły App Store. Więcej informacji znajdziesz w Export Compliance Overview.
Jeśli uważasz, że Twój projekt jest zwolniony, ustaw klucz ITSAppUsesNonExemptEncryption na False w pliku Info.plist projektu. Więcej szczegółów znajdziesz w Application Manifests.
O: Upewnij się, że w projekcie Defold używasz tego samego identyfikatora bundla, którego użyłeś w projekcie Xcode podczas generowania profilu provisioning dla urządzeń mobilnych.
O: Zobacz Sprawdzanie uprawnień zbudowanej aplikacji:
codesign -d --ent :- /path/to/the.app
O: Zobacz Sprawdzanie uprawnień profilu provisioning:
security cms -D -i /path/to/iOSTeamProfile.mobileprovision