Recently, we received a lot of feedback from developers about their app rejections from Apple App Store Review Team for apps using Bluetooth to connect with Zebra printers. In this blog, I'll address Apple's MFi whitelisting, the process and a way to avoid the unnecessary rejection/resubmission cycle.

 

All Zebra Link-OS mobile printers and most of the Link-OS desktop printers provide Bluetooth connectivity. This allows apps on Android or iOS devices to connect with Zebra printers and the ability to print out receipts or labels easily and conveniently. Bluetooth on Zebra mobile and desktop printers is Apple MFi certified. If you plan on building an iOS app using Bluetooth to communicate with Zebra printers, there are a few extra steps you'll need to take, due to Apple MFi requirement on using Bluetooth accessories with iOS devices. Follow these steps:

 

1. Link the Xcode project of the app with the ExternalAccessory framework. This allows app to use Bluetooth APIs defined in EA framework.

2. Add the External Accessory Protocol string (com.zebra.rawport) to the Info.plist. All Link-OS printers share the same EA Protocol string. This allows your app to communicate with Zebra printers. Otherwise Bluetooth framework on iOS would block com.zebra.rawport. If your application supports additional Bluetooth accessories, you can add their EA Protocol strings here as well.

3. When the app is ready for publishing, you need to refer to iOS App White Listing FAQ and send us the app information specified in the Appendix A on the FAQ. We will review, test and verify your app. Then we'll submit your app info to Apple MFi registration for whitelisting. The app info needed by Apple MFi registration is: App Name, Version Number, Bundle ID, EA Protocol String(s), Zebra Printer Model(s) and App Description.

 

4. Once Apple approves the app for whitelisting, we will notify you with the MFi PPID(s) (Product Plan ID) of the Zebra printer model(s) that your app is designed to work with. After you receive our notification, you can then go ahead to submit your app to Apple App Store for review. Note, you must provide the MFi PPID(s) approved for your app  in the metadata Review Notes field, otherwise your app will be rejected by Apple. The unique MFi PPID is a ten digit number for the particular model of Zebra printer that your app was just whitelisted for.

The above process usually takes a day or two, depending on if there is a smooth review, test & verify phases. If we follow the above steps correctly, we would avoid the rejection/resubmission cycles with Apple App Store review process.

 

Here are the cases you do not need to go through for the MFi whitelisting.

  1. If your app uses Bluetooth Low Energy and does not use Bluetooth Classic to communicate with Zebra printers, you don't need to follow the MFi whitelisting procedures because Bluetooth Low Energy is outside MFi.
  2. If your app is intended for Enterprise distribution and is not for standard App Store distribution, then you don't need MFi whitelisting. Apple MFi doesn't require apps for Enterprise distribution to be whitelisted.
  3. “If we publish a new version of the app, do we need to go through the above process again?” is a commonly asked question. If the previous version of the app has already been whitelisted and there are no changes in App Name, Bundle ID, EA Protocol string and no new Zebra printer model added in the new version, then there is no need to go through the whitelisting process again for the new version. If there is a change in App Name, Bundle ID, EA Protocol string or a new Zebra printer model added in the new version, then we will have to go through the whitelisting process again, otherwise the new version of the app will be rejected by Apple.

 

I hope this blog addresses any questions you may have regarding Apple MFi whitelisting. As always, your comments and questions are welcome. Happy coding!