Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Document advertisement data for each sensor to allow third party apps to use Apple AccessorySetupKit in iOS 18 #473

Open
6 of 13 tasks
edorphy opened this issue Jul 9, 2024 · 3 comments
Labels
question Further information is requested

Comments

@edorphy
Copy link

edorphy commented Jul 9, 2024

Platform your question concerns:

  • Android
  • iOS
  • Other
  • Platform is not relevant for this question

Device:

  • Polar OH1
  • Polar Verity Sense
  • Polar H10
  • Polar H9
  • Other
  • Device is not relevant for this question

Description:
Apple introduced a new framework for 'associating' Bluetooth sensors to an app coming out this fall in iOS 18. I got it to work finally with my Polar devices that I own, but I can't confirm it will work with your other devices without some info.

In order enable Bluetooth enabled fitness apps to use your sensors with the new AccessorySetupKit, please document the following:

  • Local Name of each device in the advertisement payload
  • Advertisement Data payload format, as much as possible. Looking specifically for Mfg Data record
  • What official images should developers use for each of your products to present to our users

Please find the documentation here:
https://developer.apple.com/documentation/accessorysetupkit/discovering-and-configuring-accessories

The accompanying WWDC24 video here:
https://developer.apple.com/wwdc24/10203

And finally the sample code here:
https://developer.apple.com/documentation/accessorysetupkit/authorizing-a-bluetooth-accessory-to-share-a-dice-roll

For demonstration purposes, I took a screenshot of your product from a product page to get this code to show your device in the new picker UI:

    private static let polarVeritySense: ASPickerDisplayItem = {
        let descriptor = ASDiscoveryDescriptor()
        descriptor.bluetoothServiceUUID = CBUUID(string: "180D")
        descriptor.bluetoothNameSubstring = "Polar Sense"

        return ASPickerDisplayItem(name: "Polar Sense", productImage: UIImage(named: "PolarVeritySense")!, descriptor: descriptor)
    }()

    private static let polarH10: ASPickerDisplayItem = {
        let descriptor = ASDiscoveryDescriptor()
        descriptor.bluetoothServiceUUID = CBUUID(string: "180D")
        descriptor.bluetoothNameSubstring = "Polar H10"

        return ASPickerDisplayItem(name: "Polar H10", productImage: UIImage(named: "PolarH10")!, descriptor: descriptor)
    }()
<?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>NSAccessorySetupBluetoothServices</key>
	<array>
		<string>180D</string>
	</array>
	<key>NSAccessorySetupKitSupports</key>
	<array>
		<string>Bluetooth</string>
	</array>
	<key>NSAccessorySetupBluetoothCompanyIdentifiers</key>
	<array>
		<string>006B</string>
	</array>
</dict>
</plist>

IMG_520E7E94F743-1

@edorphy edorphy added the question Further information is requested label Jul 9, 2024
@OmniPrecedence
Copy link

@edorphy Thank you so much, can you possibly provide me the exact steps to implement real time heart data to my personal app using 'Polar Ignite 3'. If have a general guideline that would help, I would mostly likely be happy as Im tight on schedule and I want to be able to see my heart rate data on my custom application on iPhone and be able to send it to my contacts using Twilio. I'm asking because you seem to know what your doing and worked with iOS and SDK before, Thank you.

@edorphy
Copy link
Author

edorphy commented Jul 14, 2024

@edorphy Thank you so much, can you possibly provide me the exact steps to implement real time heart data to my personal app using 'Polar Ignite 3'. If have a general guideline that would help, I would mostly likely be happy as Im tight on schedule and I want to be able to see my heart rate data on my custom application on iPhone and be able to send it to my contacts using Twilio. I'm asking because you seem to know what your doing and worked with iOS and SDK before, Thank you.

Are looking for guidance specifically on how to associate the Polar Ignite 3 with your app using the new AppleAccessoryKit framework available in iOS 18 beta and publicly available in the fall? Or are you just looking for information to connect your Ignite product to any iOS app today as-is?

If the first, I can't help because I don't own one to look at its advertisement data to know what to supply to Apple for the new framework. That is exactly what this GitHub issue was asking for. Presumably you'd be able to use my sample code above, but that makes unconfirmed assumptions about the advertisement of the Ignite device.

If the second, according to this SDK readme, Ignite 3 is supported. You should be able to scan, discover, and connect to your sensor all directly using this framework. I would check out the documentation Polar provides and their example project.

Regardless of which you're looking for help with, I would highly recommend that you carefully review Apple's "App Review Guidelines" against your use case. You should be fine so long as the user understands your app will transmit the health data off device; informing your users of this behavior in in your app UI experience and your privacy statement is a good start. It doesn't sound like you're using HealthKit which would have more rules and instead you want to get heart rate directly from the sensor. Even so, the best guidance I can share is read the App Review Guidelines.

@OmniPrecedence
Copy link

OmniPrecedence commented Jul 15, 2024 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

2 participants