iPhone App Minus App Store?
Official Developer Program
For a standard iPhone you'll need to pay the US$99/yr to be a member of the developer program. You can then use the adhoc system to install your application onto up to 100 devices. The developer program has the details but it involves adding UUIDs for each of the devices to your application package. UUIDs can be easiest retrieved using Ad Hoc Helper available from the App Store. For further details on this method, see Craig Hockenberry's Beta testing on iPhone 2.0 article
Jailbroken iPhone
For jailbroken iPhones, you can use the following method which I have personally tested using the AccelerometerGraph sample app on iPhone OS 3.0.
Create Self-Signed Certificate
First you'll need to create a self signed certificate and patch your iPhone SDK to allow the use of this certificate:
Launch Keychain Access.app. With no items selected, from the Keychain menu select Certificate Assistant, then Create a Certificate.
Name: iPhone Developer
Certificate Type: Code Signing
Let me override defaults: YesClick Continue
Validity: 3650 days
Click Continue
Blank out the Email address field.
Click Continue until complete.
You should see "This root certificate is not trusted". This is expected.
Set the iPhone SDK to allow the self-signed certificate to be used:
sudo /usr/bin/sed -i .bak 's/XCiPhoneOSCodeSignContext/XCCodeSignContext/' /Developer/Platforms/iPhoneOS.platform/Info.plist
If you have Xcode open, restart it for this change to take effect.
Manual Deployment over WiFi
The following steps require openssh
, and uikittools
to be installed first. Replace jasoniphone.local
with the hostname of the target device. Be sure to set your own password on both the mobile
and root
users after installing SSH.
To manually compile and install your application on the phone as a system app (bypassing Apple's installation system):
Project, Set Active SDK, Device and Set Active Build Configuration, Release.
Compile your project normally (using Build, not Build & Go).
In the
build/Release-iphoneos
directory you will have an app bundle. Use your preferred method to transfer this to /Applications on the device.scp -r AccelerometerGraph.app root@jasoniphone:/Applications/
Let SpringBoard know the new application has been installed:
ssh mobile@jasoniphone.local uicache
This only has to be done when you add or remove applications. Updated applications just need to be relaunched.
To make life easier for yourself during development, you can setup SSH key authentication and add these extra steps as a custom build step in your project.
Note that if you wish to remove the application later you cannot do so via the standard SpringBoard interface and you'll need to use SSH and update the SpringBoard:
ssh root@jasoniphone.local rm -r /Applications/AccelerometerGraph.app &&
ssh mobile@jasoniphone.local uicache
Excluding specific iPhone types from App Store submission
Unfortunately, there is no support from Apple for this kind of thing. But you can do something like detecting whether the user's device is an iPhone SE and if so show a full screen alert saying "App is not supported for this device" and block the UI (which is not recommended unless it's required).
Just a thought:
If you are lucky to find out one device capability which distinguish iPhone SE, you can set that to value in UIDeviceRequiredCapabilities key in info.plist.
Example: Adding an item to UIRequiredDeviceCapabilities in your Info.plist with the requirement of "bluetooth-le" should limit your app to iPhone 4S/5 and iPad 3, 4 and mini. You could also throw in a "camera-flash" requirement to limit the app to iPhones only, should you need that.
More info: Device Compatibility Matrix
Create an IOS application without using App-Store
- Create Archive
- Export for Ad Hoc Development
- Distribute by uploading it using testflightapp.com
It also doesn't need a Distribution Profile
, however a Developer Profile
is required
Private iPhone App, without App Store?
Your company can pay $299/yr to join the enterprise program which allows you to deploy app without going through the AppStore.
You can create Ad Hoc distributions for ≤ 100 users.
You can jailbreak all the target iPhones and do whatever you want.
how to delete app from app store
You go to iTunes Connect, select manage applications, select the app you want to delete > rights and pricing> deselect all app stores.
This will set your app to 'developer removed from sale'.
I believe you can delete the app entirely after this, and the 'delete app' button should now be added to the first screen after you select the app. If you do delete the app, you will never be able to use the app name again. If you plan on using it, just 'developer removed from sale'.
How to create or setup private app store for iPhone/iPad applications
You might be interested in the iOS Developer Enterprise Program, although it doesn't fit your description exactly.
why I can’t open a App Store link inside a web view?
Some links on tapping them might activate actions / redirect with url schemes that are non HTTPs like
_blank
to open a new tabmailto
to launch the mail application- some other deep link techniques familiar to device OSs
I believe the app store link uses a combination of the above and WKWebView cannot handle non HTTPs schemes.
What you can do is to listen to URLs that fail using WKNavigationDelegate
and handle them accordingly
I am not using SwiftUI but I think you can get the picture.
Set up using the same HTML as you with both the links
class ViewController: UIViewController, WKNavigationDelegate
{
override func viewDidAppear(_ animated: Bool)
{
super.viewDidAppear(animated)
let html = """
<a href="https://apps.apple.com/us/app/directorio-notarios-cdmx/id1544000342"> Appstore link dont open</a></span></span><br />
<a href="https://landercorp.mx" rel="noopener"> Normal link </a></span></span><br />
"""
let webview = WKWebView()
webview.frame = view.bounds
webview.navigationDelegate = self
view.addSubview(webview)
webview.loadHTMLString(html, baseURL: nil)
}
}
Then I implement these WKNavigationDelegate
functions
decidePolicyFor navigationAction
(documentation link) to allow even urls that do not follow the HTTPs scheme to be allowed to be processedthis navigation fail delegate function
webView didFailProvisionalNavigation
and check if iOS can handle the open in a new tab, mail, deep link etc so in your case it would open the app storeYou could also implement the same logic as point 2 in this
WKNavigationDelegate function just in case
// MARK: WKNavigationDelegates
func webView(_ webView: WKWebView,
decidePolicyFor navigationAction: WKNavigationAction,
decisionHandler: @escaping (WKNavigationActionPolicy) -> Void)
{
decisionHandler(.allow)
}
func webView(_ webView: WKWebView,
didFailProvisionalNavigation navigation: WKNavigation!,
withError error: Error)
{
manageFailedNavigation(webView,
didFail: navigation,
withError: error)
}
func webView(_ webView: WKWebView,
didFail navigation: WKNavigation!,
withError error: Error)
{
manageFailedNavigation(webView,
didFail: navigation,
withError: error)
}
private func manageFailedNavigation(_ webView: WKWebView,
didFail navigation: WKNavigation!,
withError error: Error)
{
// Check if this failed because of mailto, _blank, deep links etc
// I have commented out how to check for a specific case like open in a new tab,
// you can try to handle each case as you wish
if error.localizedDescription
== "Redirection to URL with a scheme that is not HTTP(S)"
//let url = webView.url, url.description.lowercased().range(of: "blank") != nil
{
// Convert error to NSError so we can access the url
let nsError = error as NSError
// Get the url from the error
// This key could change in future iOS releases
if let failedURL = nsError.userInfo["NSErrorFailingURLKey"] as? URL
{
// Check if the action can be handled by iOS
if UIApplication.shared.canOpenURL(failedURL)
{
// Request iOS to open handle the link
UIApplication.shared.open(failedURL, options: [:],
completionHandler: nil)
}
}
}
}
Give this a go and check if this fixes your issue. On my side, both links seem to work fine:
Related Topics
How to Embed a Custom Font in an Iphone Application
How to Associate File Types With an Iphone Application
How to Change Status Bar Text Color in Ios
Test iOS App on Device Without Apple Developer Program or Jailbreak
Programmatically Get Own Phone Number in Ios
How to Do Base64 Encoding on Ios
Looking to Understand the iOS Uiviewcontroller Lifecycle
Nsattributedstring Click Event in Uilabel Using Swift
How to Programmatically Scroll Through a Collection View
Passing Data Between View Controllers
Using Auto Layout in Uitableview For Dynamic Cell Layouts & Variable Row Heights
What Are Unwind Segues For and How to Use Them
How to Sort an Nsmutablearray With Custom Objects in It
Symbolicating Iphone App Crash Reports
How to Add Exception Breakpoint in Xcode
How to Load an Http Url With App Transport Security Enabled in iOS 9
What's the Difference Between the Atomic and Nonatomic Attributes