Create Web Clip for App.
As the demo IcePack shows:
-
Define a URL Scheme in Info.plist of your app
<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLName</key> <string>com.nixWork.IcePack</string> <key>CFBundleURLSchemes</key> <array> <string>icepack</string> </array> </dict> </array>
-
Create AppClip for a specific URL Scheme
@IBAction func createAppClip(_ sender: UIButton) { AppClip.create(title: "First View", icon: #imageLiteral(resourceName: "icon_circle"), urlScheme: "icepack://com.nixWork.IcePack/tab1") }
-
Handle open URL
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool { guard let tabVC = window?.rootViewController as? UITabBarController else { return false } switch url.lastPathComponent { case "tab1": tabVC.selectedIndex = 0 case "tab2": tabVC.selectedIndex = 1 default: break } return true }
It's done!
When user tap the button in your app to perform the action createAppClip(_:)
, AppClip will start a HTTP server, then open Safari to send a HTTP request.
The server will respond a 301 redirection, but the location is a data url.
This data url show a web page, and guide user to add it to the Home Screen.
When user tap the web clip in Home Screen, the JavaScript Code in it will perform to request the URL Scheme, it will open your app.
github "nixzhu/AppClip"
pod 'AppClip'
NIX @nixzhu
AppClip is available under the MIT license. See the LICENSE file for more info.