As an iOS app developer, you would be very disappointed when your app gets rejected by Apple, saying “We are unable to post your app to the App Store at this time because your app has not been authorized by the accessory manufacturer to work with the MFi accessory.” These type of rejections not only cast doubt and confusion for developers who are unfamiliar with the accessory, but it also delays the launch schedule of the app unexpectedly..

 

Since we posted the How To Whitelist Your iOS Apps for Zebra Printers blog, we’ve seen a decline of app rejections as our developers comprehend a better whitelisting process for Zebra printers. For the MFi certified Zebra scanners, however, we still see confusion arise from time to time among some developers regarding the MFi scanners and their respective External Accessory Protocols. In this blog, I’ll address the differences of External Accessory Protocols, their applicability to their associated MFi scanners and their use cases.

 

1. MFi certified Zebra scanner models

Zebra has three scanner models that are Apple MFi certified. They can connect to an iPhone, iPad or iPod through Bluetooth.

Zebra CS4070 – Pocket-sized 1D & 2D barcode scanner, with Bluetooth certified by Apple MFi.

Zebra DS8178 – Handheld 1D & 2D barcode scanner, with Bluetooth certified by Apple MFi.

Zebra RFD8500 – RFID reader and 1D & 2D barcode scanner, with Bluetooth certified by App MFi.

 

2. The External Accessory Protocol (a.k.a. Device Protocol, or EA Protocol)

Unlike MFi certified Zebra printer models that share the same EA Protocol string (i.e. com.zebra.rawport), the three MFi scanner models listed above use different EA Protocol strings because of their legacy with Symbol and Motorola. The following table lists the EA Protocol strings used by the three scanner models.

EA Protocol

MFi Zebra Scanner Product

Description

com.zebra.rfd8x00_easytext

RFD8500

Protocol used to transfer RFID data for RFD8500.

com.symbol.rfd8x00_easytext

RFD8500

Protocol used to transfer RFID data for older RFD8500 demo models. (Superseded by com.zebra.rfd8x00_easytext).

com.zebra.scanner.SSI

RFD8500

DS8178

Protocol used to transfer Barcode data for RFD8500, DS8178.

com.motorolasolutions.scanner

RFD8500

Protocol used to transfer Barcode data for older RFD8500 demo models. (Superseded by com.zebra.scanner.SSI).

com.motorolasolutions.CS4070_ssi

CS4070

Protocol used to transfer Barcode data for CS4070.

 

3. Whitelisting

The overall process of whitelisting for Zebra scanners is the same as for Zebra printers. The process is well documented and explained in iOS App White Listing FAQ. When it’s time to request Zebra to whitelist your app, you will send us the required information about the app as specified in the Appendix A in the FAQ.

 

For scanners, however, you need to pay attention to the EA Protocols used by the scanners. Here are a few examples to help you on what EA Protocol to use in your app.

  • Example 1 – An app that gets the Barcode data only from RFD8500 scanner.

In this case, your app only needs to include the EA Protocol com.zebra.scanner.SSI for RFD8500 in the info.plist. If you expect your app to work with the older RFD8500 demo models, you will need to include com.motorolasolutions.scanner protocol in the info.plist as well.

 

  • Example 2 An app that gets the RFID data only from RFD8500 scanner.

In this case, your app only needs to include EA Protocol com.zebra.rfd8x00_easytext in the info.plist. If you expect your app to work with the older RFD8500 demo models for RFID data, you will need to include com.symbol.rfd8x00_easytext protocol in the info.plist as well.

 

  • Example 3 – An app that gets the Barcode data from RFD8500, DS8178 & CS4070 scanners.

In this case, your app needs to include com.zebra.scanner.SSI and com.motorolasolutions.CS4070_ssi protocols in the info.plist. If you expect your app to work with the older RFD8500 demo models, you will need to include com.motorolasolutions.scanner protocol in the info.plist as well.

 

  • Example 4 – An app that gets both RFID and Barcode data from RFD8500, and Barcode data from DS8178 & CS4070.

In this case, your app needs to include com.zebra.rfd8x00_easytext, com.zebra.scanner.SSI and

com.motorolasolutions.CS4070_ssi protocols in the info.plist. If you expect your app to work with the older RFD8500 demo models, you will need to include com.symbol.rfd8x00_easytext and com.motorolasolutions.scanner protocols in info.plist as well.

 

4. Conclusion

When requesting Zebra to whitelist your app for the MFi scanners, please provide the correct list of the EA Protocol strings used in your app's info.plist that matches the intended use cases for the desired MFi Zebra scanner models. I hope this blog addresses any questions you may have regarding Apple MFi whitelisting. As always, your comments and questions are welcome. Happy coding!