-1

I am working on a ble projekt which is also planned to be released for iOS and Android. To have the best functionality in my concept for both operation systems I need a common Manufacturer ID. Since this is not changable for iOS my idea was to use the Apple Manufacturer ID also for the Android devices. I tested it and it works perfect.

My question is is it legal to use the Apple Manufacturer ID for my App with a Android device or not? If its not legal I have to change my complete concept and it will be not performant as it is with that solution.

Thank you!

  • 1
    I’m voting to close this question because legal questions are off-topic on Stack Overflow. You can ask about legal questions on https://law.stackexchange.com – TylerH Jan 19 '23 at 21:45
  • I don't think the word "legal" here should be treated as allowed by law, but rather as allowed by the Bluetooth specification. – Emil Jan 20 '23 at 00:34

1 Answers1

1

The company behind a manufacturer id is the only one that is allowed to specify how its manufacturer id may be used and the data format of the manufacturer data.

You may not use a manufacturer id in a way that is not approved by the corresponding company.

Apple has for example approved the use of their iBeacon format where the first byte must then start with 0x02 (https://en.wikipedia.org/wiki/IBeacon). If you follow their specification you can let any device advertise using this data format.

If you are a member of Bluetooth SIG, you can request a manufacturer id at https://support.bluetooth.com/hc/en-us/articles/360062030092-Requesting-Assigned-Numbers.

If you are not a member but need your custom advertising data format, you can use a custom 128-bit GATT service UUID and use the Service Data advertising type, which however takes up more bytes.

Now, CoreBluetooth (compared to Android) does not seem to have any API for custom advertisement data except for advertising a GATT service UUID. So to make your app behave the same on both platforms, you should do the iOS app first and then mimic the advertisement data when making the Android app. Just make sure you follow whatever specification set up by Apple if you use their manufacturer id.

Emil
  • 16,784
  • 2
  • 41
  • 52
  • In my case I am not a Bluetooth SIG member and want to simply use iOS and Android operation systems. I also use already a custom 128-bit GATT service UUID for both operation systems. As you saied at CoreBluetooth its not possible to change the manufacturer ID and therefore it is for Apple. For Android I simply used the manufacturer ID of Apple to synchronize them for my usecase (did you mean this with mimic?). Do you have an idea from where I can get this information from your last sentence? – HaniMontana Jan 17 '23 at 19:25
  • How do you format the advertisement data currently? What does the manufacturer data contain? – Emil Jan 17 '23 at 20:18
  • In general it looks like I have the possibility to write whatever I want. currently it looks like 0x4C0000. The first byte is 4C = Apple and the rest is currently at 0000. I am not interested at the Data of the manufacturer ID. I only need the ID itself. The first byte with 00 after 4C are reserved. The next 6 bytes I can fullfill with data in combination with my 128-bit UUID. – HaniMontana Jan 18 '23 at 16:16
  • When I check the Manufacturer Data from a iPhone it looks like following. If there is no 128-bit UUID: e.g. 0x4C001005441C253234. I dont know based on what this number is generated, but I assume its the unique iPhone device ID. If the iPhone has a 128-bit UUID: 0x4C000100000000000000100000000000000000. Do you think its legal if I just write nothing (0000) into the data? – HaniMontana Jan 18 '23 at 16:20
  • No. If Apple has not specified any legal use for 0000, then you are not allowed to use that in your own advertisement data. If you want to use a manufacturer's manufacturer id in advertising data, you must follow their guidelines. If you can't find any guidelines, you are not allowed to use it. Per the BLE spec: "The interpretation of any other octets within the data shall be defined by the manufacturer specified by the company identifier". I'm not sure what you can achieve anyway using that. You'd be better off advertising a custom 128-bit service uuid. – Emil Jan 18 '23 at 17:19