Apple App Store Dışında Uygulama Dağıtma

Sercan Eraslan
3 min readSep 21, 2021

--

Apple Enterprise

For English press 9.

Kurye Mobil uygulamamızın Apple App Store veya Google Play Store üzerinde yayınlamasına gerek olmadığı için ve uygulamayı sadece istediğimiz kişilerin yükleyebilmesi için ürettiğimiz .ipa ve .apk dosyalarını kendimiz dağıtmak istedik. Araştırmaya başladığımızda .apk dosyasını direkt olarak dağıtmakta bir sorun olmadığı fakat .ipa dosyalarını direkt olarak dağıtmanın kolay olmadığını gördük.

.ipa dosyalarını kendinizin dağıtabilmesi için öncelikle Apple Developer Enterprise Program’a şirket bilgileriyle katılmanız gerekiyor ve bunun için her yıl $299 ödenmesi bekleniyor. Onay süreci yaklaşık 1 ay kadar sürebiliyor. Enterprise Program’a katıldıktan sonra da şu adımların izlemesi gerekiyor;

1) Dağıtım Sertifikası Oluşturma

  1. “Certificates” sayfasını açın: https://developer.apple.com/account/resources/certificates/list
  2. “+” butonuna tıklayın.
  3. “Software” başlığı altından “In-House and Ad Hoc”ı seçin.
  4. “Continue” butonuna tıklayın ve Keychain ile Certificate Signing Request (CSR) oluşturma talimatlarını takip edin.
  5. “Continue” butonuna tıklayın ve Member Center’a yükleyin.
  6. “Generate” butonuna tıklayın ve sertifikanızı oluşturun.

2) Dağıtım Kimliği Oluşturma

  1. “Identifiers” sayfasını açın: https://developer.apple.com/account/resources/identifiers/list
  2. “+” butonuna tıklayın.
  3. “App IDs”i seçip “Continue” butonuna basın.
  4. “App Name” ve “Bundle ID”yi doldurup “Continue” butonuna tıklayın.

3) Dağıtım Profili Oluşturma

  1. “Profiles” sayfasını açın: https://developer.apple.com/account/resources/profiles/list
  2. “+” butonuna tıklayın.
  3. “Distribution” başlığı altından “Ad Hoc”ı seçin.
  4. “Continue” butonuna tıklayın ve App ID’nizi seçin.
  5. Daha önce oluşturduğunuz ve Keychain’inizde bulunan sertifikayı seçin.
  6. Tamamlanan profili indirin ve açın.

4) .ipa Dosyası Oluşturma/Sunma

  1. Xcode menüsünden önce “Product” ardından da “Archive”a tıklayın.
  2. Archive işlemi tamamlandıktan sonra “Export”a tıklayın.
  3. Dağıtım yöntemi olarak “Enterprise” seçin.
  4. Export tamamlandıktan sonra .ipa dosyanızı kaydedin.
  5. Oluşturduğunuz .ipa dosyasını HTTPS ile çalışan bir server/CDN üzerinden sunun.

5) manifest.plist Oluşturma

1. Aşağıdaki örnekteki gibi “manifest.plist” adında bir dosya oluşturun.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>items</key>
<array>
<dict>
<key>assets</key>
<array>
<dict>
<key>kind</key>
<string>software-package</string>
<key>url</key>
<string>YOUR_IPA_FILE_URL</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>BUNDLE_ID</string>
<key>bundle-version</key>
<string>1</string>
<key>kind</key>
<string>software</string>
<key>title</key>
<string>APP_NAME</string>
</dict>
</dict>
</array>
</dict>
</plist>

2. YOUR_IPA_FILE_URL, BUNDLE_ID ve APP_NAME alanlarını değiştirin.

3. Yüklediğiniz .ipa dosyanız ile aynı dosya yapısında yan yana duracak şekilde manifest.plist dosyanızı yükleyin.

6) exportOptions.plist Oluşturma

  1. Aşağıdaki örnekteki gibi “exportOptions.plist” adında bir dosya oluşturun.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>method</key>
<string>enterprise</string>
<key>teamID</key>
<string>TEAM_ID</string>
<key>signingStyle</key>
<string>automatic</string>
<key>provisioningProfiles</key>
<dict>
<key>PRODUCTION_BUNDLE_IDENTIFIER</key
<string>PRODUCTION_SCHEME</string
<key>STAGE_BUNDLE_IDENTIFIER</key
<string>STAGE_SCHEME</string>
</dict>
</dict>
</plist>

2) TEAM_ID, PRODUCTION_BUNDLE_IDENTIFIER, PRODUCTION_SCHEME, STAGE_BUNDLE_IDENTIFIER ve STAGE_SCHEME alanlarını değiştirin.

7) Uygulama Linkini Paylaşma

Eğer Uygulama linkini bir web sayfasında ve/veya e-mail’de paylaşmak isterseniz aşağıdaki HTML kodunu kullanabilirsiniz ya da direkt olarak “itms-services://?action=download-manifest&url=YOUR_MANIFEST_FILE_URL” linkini uygulamayı kullanacak kişilere gönderebilirsiniz. “YOUR_MANIFEST_FILE_URL” yerine manifest.plist dosyanızın linkini yazmayı unutmayın.

<a href="itms-services://?action=download-manifest&url=YOUR_MANIFEST_FILE_URL">Uygulamayı İndir</a>

iOS kullanıcıları URL’i tarayıcıda açtığında “Bu sayfa iTunes’ta açılsın mı?” diye soracak. “Evet” dediğinizde uygulamayı arkaplanda yüklemeye başlayacak. Uygulama yüklendikten sonra sırasıyla bir kereye mahsus olmak üzere “Ayarlar > Genel > Aygıt Yönetimi > ŞİRKET_ADI”na dokunulur ve “Güven” denilir. Bu işlem ardından uygulamanız sorunsuz bir şekilde kullanılabilir olacak.

Kapanış

Biz Trendyol GO projesinde 4. , 5. , 6. ve 7. maddelerde yer alan işlemleri otomatik olarak yapan bir kod yazdık. Uygulama dağıtmayı otomatik hale getirdiğimiz kodlarımızı da açık kaynak olarak yakında paylaşacağız.

Edit: Mobile App Automizer adıyla kodlarımızı açık kaynak hale getirdik :)
https://github.com/Trendyol/mobile-app-automizer

App Store harici uygulama yayınlama çok sık tecrübe edilecek bir durum değil, internette de pek fazla yazı olmadığı için sizlerle paylaşmak istedik, bir sonraki yazıda görüşmek üzere hoşçakalın :)

--

--