I am using some iPads in a museum exhibition, running an app developed by others. Even though we've covered the Home button, I'm finding that occasionally the app crashes, leaving the user at the Home screen. From here they can access other unauthorised apps.
The museum is not averse to jailbreaking the iPad if that will give us the solution we require, so I have been doing some research into the idea of using launchd with the KeepAlive tag and putting the .plist file into the /Library/LaunchAgents directory to prevent the app closing or re-spawning it if it crashes
So far I have had success making it work with the default apps that come with the iPad and also Cydia installed apps but I can't get it to restart the app that we want. I have tried it from the /User/Applications directory and also /Applications, which someone suggested might make a difference but no joy. Can someone suggest a possible solution or am I wasting my time? I've inserted the XML from my plist file below.
<?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>Label</key>
<string>com.MVFieldguide.launchd</string>
<key>ProgramArguments</key>
<array>
<string>/Applications/Field Guide 2010.app/Field Guide 2010</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<dict>
<key>SuccessfulExit</key>
<true/>
</dict>
This won't work because App Store applications are not kept in the Applications folder. I can think of two options.
Install AppLinks in Cydia. This will create symlinks of every App Store app and puts them in /var/mobile/AppLinks. Then in your plist file put the path to the application as
/var/mobile/AppLinks/Field Guide 2010/Field Guide 2010
Instead of installing the app onto the iPad conventionally, you can get the ipa from Xcode and extract the .app bundle. Then manually install it into /Applications/ and you'll be able to use your launchd plist the way you have it.
I recommend the first option because it will allow you update the app without manually putting the .app bundle into the Applications folder. Using the first option won't change your workflow for updating the app at all.
Also, just be aware that if you do this, you'll have to remove the plist before updating the app to quit it, as I don't think you can update an app while it's running.
iOS 6.0 may have some kind of fix for locking the device into a mode... I DON"T KNOW (NDA)
a hacked iOS 5.1 can still do the following:
user the app with the bundle identifier....
you can open calculator with com.apple.calculator.... no need for folders!
here is the script you put into launchd folder...
Install the Open app from cydia first so you can use the "open com.apple.calculator" terminal command
<?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>Disabled</key>
<false/>
<key>Label</key>
<string>com.perceptdev.tink</string>
<key>ProgramArguments</key>
<array>
<string>open</string>
<string>com.orbitusrobotics.thegatekeeper</string>
<string></string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StartInterval</key>
<integer>10</integer>
<key>WatchPaths</key>
<array/>
</dict>
</plist>
Related
I'm working on an iPad application that allows users to log in using Touch ID. Also I've included a preference called "Touch ID" in application settings bundle where users can switch on/off that option to enable or disable Touch ID authentication.
The following plist file is what I used to set up the settings bundle.
<?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>StringsTable</key>
<string>Root</string>
<key>PreferenceSpecifiers</key>
<array>
<dict>
<key>Type</key>
<string>PSToggleSwitchSpecifier</string>
<key>Title</key>
<string>Touch ID</string>
<key>Key</key>
<string>settingsTouchID</string>
<key>DefaultValue</key>
<false/>
</dict>
</array>
</dict>
</plist>
The following image is the screenshot of the application settings screen.
However, certain iPads feature "Face ID" instead of "Touch ID," and I'd like to provide the option name (title field in the Plist file) for setting bundle to "Face ID" instead of "Touch ID" for those devices.
Could someone kindly inform me if dynamic titles for the application settings options are possible?
Note: I have got some alternative solutions like, creating a settings screen within my app itself, renaming the setting name to a generic one, etc.
there is no way to edit plist files at run time
I have an iOS project in bitrise in which I have set manually manage signing.
So I have to provide my certificate in bitrise code signing section.
I put my certificate and provisioning profile in each subsection and now I have to provide the path from which me workflow step will take these certificates.
The step I use is the Certificate and profile installer
This is what it says:
URL of the certificate to download. Multiple URLs can be specified,
separated by a pipe (|) character.
You can specify a local path as well, using the file:// scheme. For
example file://./Cert.p12
In my case I want to take the local path but whatever I tried didn't work
(for example I tried with file://cert_id or file://cert_id.mobileprovision or file://cert_name etc)
Note: I don't want to do it via GENERIC FILE STORAGE.
Thank you in advance
As bitrise support helped me you cannot take the path like this.
My problem started when I had to provide more than one profile and certificate as I had more than one target and bitrise support up to 5 generic files.
So the answer is:
First of all upload all of your provisioning profiles (ad-hoc development appstore enterprise, if you will use one you can upload just one) in code signing section (you don't need anything in generic file storage).
Then add only one certificate and profile installer step and don't change anything.
Finally in Xcode Archive & Export for iOS step you have to navigate in Debug section and add a value in Custom export options plist content (this can be found when you archive and export an ipa locally in your machine by opening ExportOptions.plist file).
This is a sample of the value you will have to put:
<?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>destination</key>
<string>export</string>
<key>method</key>
<string>app-store</string>
<key>provisioningProfiles</key>
<dict>
<key>bundleID</key>
<string>bundleID-provisioning profile</string>
<key>target-bundleID</key>
<string>target-bundleID-provisioning profile</string>
<key>target2-bundleID</key>
<string>target2-bundleID-provisioning profile</string>
</dict>
<key>signingCertificate</key>
<string>Apple Distribution</string>
<key>signingStyle</key>
<string>manual</string>
<key>stripSwiftSymbols</key>
<true/>
<key>teamID</key>
<string>yourTeamID</string>
<key>uploadBitcode</key>
<true/>
<key>uploadSymbols</key>
<true/>
</dict>
</plist>
I'm using ReactNative + Expo
As what i know ios now required the transport is using HTTPS, when using HTTP it doesn't render the image.
HTTPS: tested is working render properly
HTTP: test is not working
from google, it required this code into the project.
<?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>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
</dict>
</plist>
My question is I do not have /ios project this is pure reactnative, how to make it work in expo? if not able where should i put this info.plist?
I have try put under /src/ios/{projectname}/Info.plist is not working.
Look here, it says that expo disables the ATS. And for the Info.plist you can modified in two ways. First one is with app.json check this link, but it is little bit restricted. The second way is to eject project from expo and to modify everything that you want.
I think this should be the answer of your question.
"Allow app and Book Assignment" pop up appears while trying to install device assignable VPP app on supervised ios devices. It happening only for very few customers. After confirming the first message all apps get installed silently. But it re appears while trying to install again.
XML response generated for installing VPP app is given below.
Apps license assignment is also completed successfully before trying to install on phone. All these devices are with os version greater than 9.
<?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>Command</key>
<dict>
<key>ChangeManagementState</key>
<string>Managed</string>
<key>ManagementFlags</key>
<integer>1</integer>
<key>Options</key>
<dict>
<key>PurchaseMethod</key>
<integer>1</integer>
</dict>
<key>RequestType</key>
<string>InstallApplication</string>
<key>iTunesStoreID</key>
<integer>111111111</integer>
</dict>
<key>CommandUUID</key>
<string>aaaaaaaa-ffff-aaaa-aaaa-editeduuiddd</string>
</dict>
</plist>
I am dealing with MDM development. Please help me to figure out this odd behavior.
I am testing VPP deployment on supervised devices, I also had this error message. When I turned on the setting "Force license association to device" within XenMobile the application could be deployed without the error message. Hope this Helps.
In xcode 6 when I create an ipa for distribution enterprise is no longer created the file .plist be included in the website for distribution.
Also on some ipad when I open a link "itms-service" the app is installed normally, in others nothing happens and in others I get an error message. Documentation of the apple method itms-service has disappeared (it seemed to me that there was a paragraph in the distribution app guides), safari will no longer close automatically when launching the installation of an app.
Do you think that is still valid installation via web page or apple has decided to remove it giving space to other methods (MDM)?
If you need to distribute apps via OTA with both enterprise or developer you can use you old .plist files.
You have to edit the .plist file name in both the .plist and your "youSiteName.html".
The plist has to be edited on 3 places:
<?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>https://MY_SERVER_NAME/MY_APP_FOLDER_NAME/MY_APP_NAME.ipa</string>
</dict>
</array>
<key>metadata</key>
<dict>
<key>bundle-identifier</key>
<string>MY_BUNDLE_IDENTIFIER_FROM_XCODE_PROJECT_SETTINGS</string>
<key>bundle-version</key>
<string>1.0</string>
<key>kind</key>
<string>software</string>
<key>title</key>
<string>MY_CUSTOM_APP_NAME</string>
</dict>
</dict>
</array>
</dict>
</plist>
So far I have tested this both on ENT and DEV accs on the following devices:
iPad 2
iPad 3
iPad Air
From iOS versions 7.1 - 8.1 it always worked with Xcode versions 5.1.1 and 6.0.1. Hope this helps you for the cases that don't work in your problem.
I really don't know if it is still valid but this approach works. Xcode 6.0.1. had bugs... this may have been one of them. Personally I haven't been looking into why apple did it because of the fact that nowhere in the docs & release notes was stated that the ENT OTA server has to be with an SSL certificate (upon iOS update). I found out by goolging. One developer tried by force to solve the problem and ended up losing 5 work days to find it on google. Therefore, just wait it out.