If you are submitting your branded application under your own developer account or through your own distribution system, you will need to sign the application files with your distribution certificates and create the certificates needed to allow us to send push notifications to your application. The iOS and Android applications have separate re-signing processes which are outlined below.
While there are typically developer resources available to handle the process of re-signing an application, this is not something that a mobile app developer will frequently run into and the information needed to accomplish this task is sparse throughout the web. The purpose of this document is to condense this information and walk a developer through the process of re-signing their guidebook-built application file. It will walk you through how to re-sign the application for both Android and iOS including both the resources needed and steps you need to take from when you receive your branded application built by Guidebook to end up with the re-signed application file. This document assumes that you are familiar with both the iTunes Developer Portal and iTunes Connect, and are comfortable using the command line.
Re-signing an iOS App
- A macOS computer. This is a requirement from Apple in order to be able to work with iOS apps (including re-signing and uploading them to iTunes).
- Credentials to a registered Apple Developer Account (this account needs to be associated to the team that you will be submitted the app with). The account will also need to have access to your team's Apple Developer Portal
- Your team's Application Signing Certificate in your keychain (https://developer.apple.com/library/content/documentation/IDEs/Conceptual/AppDistributionGuide/MaintainingCertificates/MaintainingCertificates.html)
- An Apple Certificate Signing Request File to create your application's push certificate (https://developer.apple.com/library/content/documentation/IDEs/Conceptual/AppDistributionGuide/MaintainingCertificates/MaintainingCertificates.html)
Create Your App ID
Each app that you submit has to be signed with a provisioning profile that originates from your account to verify the authenticity of the application being submitted. Because our apps utilize push notifications, you will need to create an explicit app id. Instructions on how to do this can be found in the "Registering App IDs" section of this page. This application identifier also needs to be configured with push messages enabled for the production environment. You can input whatever name you would like for the application ID.
Create Your Provisioning Profile
Once your app id has been created, you'll need to create a provisioning profile for that app id (which is used to verify that you are uploading the application file to iTunes Connect). Distributing on iTunes Connect: If you're going to distribute the app on iTunes Connect, create your provisioning profile by following the "Creating Store Provisioning Profiles" section here (https://developer.apple.com/library/content/documentation/IDEs/Conceptual/AppDistributionGuide/MaintainingProfiles/MaintainingProfiles.html#Registering App IDs)
Distributing on your private app store / MDM system: If you will be uploading your app to your own private app store or Mobile Device Management solution, please check the requirements for your system to create the provisioning profile needed for that solution.
Create Push Certificate
Our applications utilize push messaging. In order for our system to send push messages through the app, you will need to create a push certificate for the app and send it to the Guidebook team.
Navigate to the app id that you created in the iTunes Developer Portal. Click "edit", and under "Push Notifications" select "Create Certificate" under "Production SSL Certificate." Upload your Apple Certificate Signing Request File (CSRF) and download your certificate once it's been created. Once you have this certificate, please send it to your point of contact at Guidebook so that we can register it in our system and enable push notifications for your app.
Re-Sign Your App
If you have a resigning tool that you are comfortable with, please feel free to use that to resign your app with the provisioning profile that you created previously for your app.
If you do not, we recommend using the re-signing command available through Fastlane. Once you install Fastlane, follow their documentation steps to re-sign your application.
Upload Your App
If you're going to submit the application to iTunes Connect, do the following:
- Follow the steps in this article to create your app listing in iTunes Connect (if you have not already).
- Once that listing is created, use the "Application Loader" tool (which comes bundled with Xcode) to upload your app.
If you're using a private store or MDM solution, follow the steps to distribute your app as recommended by your solution provider.
Re-signing an Android App
- A keystore to sign your app with. If you do not already have a keystore file for signing your android applications, see the section "Build and sign your app from command line" of this page
- Android SDK build tools revision 24.0.3 or higher.
Re-Sign Your App
Run the following command to re-sign your application file:
apksigner sign --ks release.jks com.myguidebookapp.android.apk
where "release.jks" is your keystore file and "com.myguidebookapp.android.apk" is your guidebook application file. This will re-sign your application that you can then upload to the Google Play store or the distribution source of your choice.
Enable Google Services
In order to enable access to Google Services (include services like Google Maps), we will need the public SHA-1 fingerprint of your signing key. To obtain the SHA-1 fingerprint of your signing key, run the following command:
apksigner verify --print-certs /absolute/path/to/your/android/app.apk
where "/absolute/path/to/your/android/app.apk" is the absolute path to your re-signed application file. Once you have obtained the SHA-1 fingerprint for your app's certificate, send this to your point of contact at Guidebook so that we can enable access to the Google Cloud Services that the app needs.