Pangeran Bottor
Pangeran Bottor

Reputation: 418

Open HealthKit App from another app

I want to build a fitness app that will upload the data to HealthKit. Is there any way to open/navigate to HealthKit from another app?

Upvotes: 17

Views: 6765

Answers (4)

Eido 9oya
Eido 9oya

Reputation: 59

You can open the Settings>Health>Source path in iOS 12 or higher. And you can find MyApp in the list and change the Access permission. You can follow these steps:

extension UIApplication {

    func openAppleHealthSources() {
        guard let url = URL(string: "App-prefs:HEALTH&path=SOURCES"),
              self.canOpenURL(url) else {
            return
        }
        self.open(url)
    }
}

Usage:

UIApplication.shared.openAppleHealthSources()

But this might lead to your app being rejected during the review process...

Your app uses the "prefs:root=" non-public URL scheme, which is a private entity. The use of non-public APIs is not permitted on the App Store because it can lead to a poor user experience should these APIs change. Continuing to use or conceal non-public APIs in future submissions of this app may result in the termination of your Apple Developer account, as well as removal of all associated apps from the App Store.

Upvotes: 0

Kevin Singh
Kevin Singh

Reputation: 421

Swift 5 "Safer way"

func openUrl(urlString: String) {
    guard let url = URL(string: urlString) else {
        return
    }

    if UIApplication.shared.canOpenURL(url) {
        UIApplication.shared.open(url, options: [:], completionHandler: nil)
    }
}

Usage:

openUrl(urlString: "x-apple-health://")

Upvotes: 3

Olivier
Olivier

Reputation: 901

On iOS 10, the Health app URL scheme is x-apple-health. You can open it from within your own app by calling:

Objective-C:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"x-apple-health://"]];

Swift:

UIApplication.shared.open(URL(string: "x-apple-health://")!)

See Open Health app using url scheme | Apple Developer Forums.

Upvotes: 22

Allan
Allan

Reputation: 7353

iOS does not provide a general API for launching other applications and the Health app would need to have support for URL scheme in order for you to launch it from your own application. See Launch an app from within another (iPhone).

Upvotes: 4

Related Questions