HomeGuidesRecipesAPI
HomeGuidesAPILog In

Offline App Customization

Customising the SmartIQ Go application requires that the app (either iOS or Android) be re-signed. This involves stripping the application of its digital signature, applying edits and then re-signing with the digital signature with a new certificate.

While re-signing the application, you can change the following:

  • The name of the app
  • Launch screens
  • App icon
  • Every image used within the app
  • The certificate that the app runs under

📘

Note

To change what colours are used throughout the app, you must configure these through Manage.

Re-sign SmartIQ Offline App in iOS

Requirements

  • Mac OSX
  • Apple developer account
  • An enterprise or app store certificate (created through Apple)
  • Provisioning profile - This will be referred to as provision.mobileprovision (created through Apple)
  • You will also need the following from Apple. These can be found on the App IDs page within Apple Developer account.
    • App ID e.g. com.company.myapp
    • App Prefix e.g. D7MEWDXWWW
    • App Display name e.g. MyApp

Ensure that your app certificate has been imported into the Mac OSX KeyChain. To execute the remaining steps, you will need the following:

  • WORKSPACE – The base folder where work will be performed
  • APP_ID (created within the apple developer account)
  • APP_PREFIX (created within the apple developer account)
  • APP_DISPLAYNAME (created within the apple developer account)
  • CERTFRIENDLY – Used to access the certificate from the command line on MacOSX machine.(obtain how to)
  • Provision.mobileprovision file
  • Entitlements.plist file - example attached.
  • The folder location of Newimages(the folder where replacement images are kept.)

unzip IPA for modification

Open Terminal on your Mac and navigate to the directory of the .ipa file

unzip -o -q WORKSPACE/Infiniti.ipa -d WORKSPACE/IPA

Explore this package and look at the different images. As we will be resigning the app with a new certificate you are able to replace any image. It is best practice to replace any image with the same size icon.

Remove SmartIQ code signature

rm -r WORKSPACE/IPA/Payload/Infiniti.app/_CodeSignature/

Copy in new mobile provision

rm -r WORKSPACE/IPA/Payload/Infiniti.app/embedded.mobileprovision
cp WORKSPACE/Provision.mobileprovision WORKSPACE/IPA/Payload/Infiniti.app/embedded.mobileprovision

Copy in new images – If you have any (optional)

chmod -R 0755 WORKSPACE/IPA/Payload/Infiniti.app/
find WORKSPACE/NewImages -name \*.png -exec cp {} WORKSPACE/IPA/Payload/Infiniti.app/ \;

Update plist configuration file – Creating your app

/usr/libexec/PlistBuddy -c "Set :CFBundleIdentifier APP_ID" "WORKSPACE/IPA/Payload/Infiniti.app/Info.plist"
/usr/libexec/PlistBuddy -c "Set :CFBundleDisplayName APP_DISPLAYNAME" "WORKSPACE/IPA/Payload/Infiniti.app/Info.plist"
/usr/libexec/PlistBuddy -c "Set :CFBundleName APP_DISPLAYNAME" "WORKSPACE/IPA/Payload/Infiniti.app/Info.plist"

Entitlements.plist – An example attached

/usr/libexec/PlistBuddy -c "Set :application-identifier APP_PREFIX.APP_ID" "entitlements.plist"
/usr/libexec/PlistBuddy -c "Set :keychain-access-groups:0 APP_PREFIX.APP_ID" "entitlements.plist"

rm -r WORKSPACE/IPA/Payload/Infiniti.app/archived-expanded-entitlements.xcent
cp -f entitlements.plist WORKSPACE/IPA/Payload/Infiniti.app/archived-expanded-entitlements.xcent

Code sign – Signing the personalised app with your supplied certificate

cp entitlements.plist IPA/entitlements.plist
cd IPA
codesign --deep --force -s "CERTFRIENDLY" --verbose --entitlements entitlements.plist -v Payload/*.app/

zip -q -r -y "APP_DISPLAYNAME.ipa" Payload

IPA file has been re-signed using your certificate. The IPA file is now ready for distribution by either a mobile device management solution or via submitting to apple to be made available on the app store.

Entitlements file example

<?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>application-identifier</key>
  <string> D7MEWDXWWW.com.company.myapp</string>
  <key>aps-environment</key>
  <string>production</string>
  <key>keychain-access-groups</key>
  <array>
    <string> D7MEWDXWWW.com. company.myapp</string>
  </array>
</dict>
</plist>

Launch Options

SmartIQ Go has several configuration options which can be changed while re-signing the application. The app reads these options from 'fixedoptions.txt'. The options must be on one line, separated by a comma with no carriage return at the end.

Url

This will load the Url into the Produce Url text box.

Lock

This will lock the Produce Url to the Url specified in the Url option. When a user logs out, they will be taken to the username and password box and won't be able to change the Produce Url.

Example

url=http://1.1.1.1/producev10;lock