iOS Question Install app without the App Store

ThePuiu

Active Member
Licensed User
Longtime User
I have no experience with IOS and I would like to know if I can install on an iPhone an application made with B4I other than downloading it from the App Store. Thank you!
 

Yvon Steinthal

Active Member
Licensed User
You can compile as a Release on your iPhone. It will stay as long as you don't delete it. There are a few certificate steps i believe to make sure your iPhone is recognized though...

Y.
 
Upvote 0

ThePuiu

Active Member
Licensed User
Longtime User
but if i want to install to another's iphone? I would like to make an application that will run on a customer's phones.
 
Upvote 0

Yvon Steinthal

Active Member
Licensed User
I dont think you can, but im no expert. Your devices need to be specified in the certificate when you install a release version on your iphone. I believe there is a limit of 100 devices on the apple developper side....
 
Upvote 0

ThePuiu

Active Member
Licensed User
Longtime User
The application is customized and will work on up to 10 phones. Can the App Store account not be public? I just can provide a link to the app ... I need to know if I need to buy an App Store account because the client has to bear all the expenses. I want to know all the details before buying the B4I license.
 
Upvote 0

nwhitfield

Active Member
Licensed User
Longtime User
If it's very small scale, your app may not be approved for the store anyway - one of the common reasons for rejection Apple cits is "If your app doesn’t offer much functionality or content, or only applies to a small niche market, it may not be approved." They don't, of course, say how small is small. I guess I'll find out when I've done all the hours of coding.

Anyway, you can install over the air on a small number of phones provided:

1. You have an Apple Developer account
2. You know the UDID of all the phones on which you want to install the app (get it via iTunes or have the owner visit get.udid.io on the phone's browser)
3. You add the UDID of each device to your developer account
4. You create a Provisioning Profile which includes each of those UDIDs
5. You use that Provisioning Profile when you build the app in release mode
6. After building, if using the Hosted Mac Builder, you download the latest build, which will pop a .ipa file in the Objects sub-folder
7. You can use the B4J OTA Deployer tool to upload that to Erel's servers; it will give you a link that can be emailed to the people who want to install the app.
8. Users will be asked if they want to install the app from the IP address of the server.

There are issues with this. Notably, Apple's limit on the number of test devices you can have on your account. With ten, you should be fine. However, be aware that you cannot delete a device, so if for example half the people lost their phones, or upgraded, and got a new phone, you'd have to add the new UDIDs, and the old ones would still be taking up space in the list, counting towards the quota of 100. If you had a larger user base, and people upgrading or breaking phones, you could quite easily reach the limit, which applies to your developer account as a whole, not per app.

The only time you can remove devices from the list is when you renew your account once a year, at which point Apple allows you to remove the ones you don't want to use - but do it before you start adding any more, because then the list is apparently locked again.

The description of using the OTA deployer is here: https://www.b4x.com/android/forum/t...ly-distribute-your-app-to-beta-testers.61672/

You can also distribute from your own server, which is what I'm doing for a test app at the moment, mostly so that when people click the link, they're asked if they want to install from 'BLUF.com' rather than from an IP address. That was actually reasonably easy to set up, as long as your site is served over HTTPS. If anyone wants, I can post the details of that.
 
Upvote 0

ThePuiu

Active Member
Licensed User
Longtime User
Thanks for the detailed explanations!
I wonder what solutions are used by all small software developers ...I understand the reasons, but there are so many particular cases ...

You can also distribute from your own server, which is what I'm doing for a test app at the moment, mostly so that when people click the link, they're asked if they want to install from 'BLUF.com' rather than from an IP address. That was actually reasonably easy to set up, as long as your site is served over HTTPS. If anyone wants, I can post the details of that.

Please explain! If my server does not have HTTPS I can not use it? My server is an Windows 7 Pro with IIS 7.
 
Upvote 0

nwhitfield

Active Member
Licensed User
Longtime User
Apps can only be installed over a secure connection, which is a sensible precaution these days. Your server will obviously also need to be accessible to the outside world, so that people can connect to it, and it'll need a permanent name and IP address, so that you can configure a certificate. You can do that reasonably easily with LetsEncrypt, which doesn't cost anything. I use LetsEncrypt certificates on bluf.com, so can confirm they don't cause any problem with app deployment.

That said, if your server doesn't have HTTPS already, and since it's running Windows 7 with IIS 7, in my view it would be inviting disaster to let that anywhere near the public internet. It's an old operating system and an old web server, both of which have been superseded by newer, more secure versions.

If it's essential to serve the installation file from a system you control, buy a really cheap virtual server with HTTPS. But since this is only for ten people, I'd say that using Erel's deployment tool is the best option, as long as things like the ipa only being available for 30 days isn't a problem (which, again, with ten users, it shouldn't be).

For developers wanting to do more than this, Apple does have their TestFlight system, and there are threads here about that and b4i. And if you want to distribute apps privately, you can have an Enterprise developer account, but that costs $299 a year, instead of $99, and I'm afraid I don't know the mechanics of how exactly the private app distribution is done with it.
 
Upvote 0

RVP

Active Member
Licensed User
Longtime User
You have to buy an Apple developer account anyway, at which point you have access to use the apple Store to distribute your app.

Otherwise if you use the steps above you can create an app that you simply send to the user, then they can install it using ITunes.
 
Upvote 0

RVP

Active Member
Licensed User
Longtime User
So apparently Apple removed the Apps function in Itunes 12.7, so you can no longer use that to install.
 
Upvote 0

OliverA

Expert
Licensed User
Longtime User
Upvote 0

nwhitfield

Active Member
Licensed User
Longtime User
In case it's useful to anyone else who wants to do this, this is the minimalist mainfest.plist file that I use on my server to allow our testers to download the beta versions of the app from there

B4X:
<?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://bluf.com/apps/Navigator.ipa</string>
  </dict>
  </array>
  <key>metadata</key>
  <dict>
  <key>bundle-identifier</key>
  <string>com.bluf.navigator</string>
  <key>bundle-version</key>
  <string>0.6.0</string>
  <key>kind</key>
  <string>software</string>
  <key>title</key>
  <string>Navigator</string>
  </dict>
  </dict>
  </array>
</dict>
</plist>

Obviously, you'd need to change the package name (com.bluf.navigator), the version (0.6.0), the title ('Navigator') and the download URL to match your own server and app details. And remember this must be served over https.

You can then send your testers a link, which would look something like

itms-services://?action=download-manifest&url=https%3A%2F%2Fbluf.com%2Fapps%2Fmanifest.plist
 
Upvote 0
Top