Cannot connect Epson printers on iOS14

It worked on iOS 13. Even thought I got an entitlement. I still cannot connect to Epson printers.

Cannot connect Epson printers on iOS14

Can you provide some more background to this? To start, what protocol is the printer speaking on the wire? And what API are you using to implement that protocol?

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@apple.com"
Thanks for you reply. The code is the below.

Code Block objective c
//Starts searching
Epos2FilterOption *filterOption = nil;
filterOption = [[Epos2FilterOption alloc] init];
filterOption.porttype = EPOS2_PORTTYPE_ALL;
filterOption.broadcast = @"255.255.255.255";
filterOption.deviceModel = EPOS2_MODEL_ALL;
filterOption.deviceType = EPOS2_TYPE_ALL;
result = [Epos2Discovery start:filterOption Delegate:self];
if (result != EPOS2_CODE_SUCCESS) {
//Displays error messages
}

PORTYE is tcpip


Code Block objective c
int result = EPOS2_SUCCESS;
result = [printer connect:@"TCP:192:168.192.168", timeout:EPOS2_PARAM_DEFAULT]; if (result != EPOS2_SUCCESS) {
//Displays error messages
}


We did everything we could including updating info.plist and applying an entitlement.


I have the same problem as you, but the magical thing is that I can connect to the printer and print with the Xcode simulator, but not after installing it on the actual device, but obviously the code is exactly the same
This is almost certainly a local network privacy issue. You wrote:

the magical thing is that I can connect to the printer and print with
the Xcode simulator

That’s not magical, but simple because local network privacy is not supported on the simulator. See FAQ-12 in the Local Network Privacy FAQ.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@apple.com"
Hi
I read the FAQ you provided
I learned that I want to add items in Bonjour Service
But I use Epson ePOS SDK for iOS(Ver Ver.2.16.0) directly, so I don’t know what service name to enter
I also asked Epson, but they didn’t give me a clear answer.
I'm pretty sure that Nootfly is also using Epson ePOS SDK for iOS (Ver.2.16.0).
I don’t know why I can’t directly paste the URL of this SDK here for your reference. I have used all the methods, but I still can’t deal with the Local Network Privacy issue that occurred on Epson Printer on ios 14.
I see two choices here:
  • You can talk to your vendor to get advice on how to use their SDK in the local network privacy world.

  • You can look at what their SDK is doing on the wire and try to figure it out based on that. Clearly this won’t work on an iOS 14 device, so you can either use an iOS 13 device or the iOS 14 simulator.

Share and Enjoy

Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@apple.com"
After a day of searching I found a solution 🎉
  1. Select your projects target

  2. Select "Signing & Capabilities"

  3. Change the option "iOS Deployment Target" to 11.4 or less



The App must be compiled with "iOS Deployment Target" < 11.4. It still runs under iOS 13 or higher.
Our business (Tock) is also experiencing this exact situation with the discovery library that Epson provides. It works fine when installed for iOS 13, but when built with the latest XCode for iOS 14 and installed on a physical device, the discovery portion no longer works.

What is interesting is that everything works correctly when installing Epson's own ePOS_Discovery sample app that comes with their latest iOS SDK download. We build that with the same Xcode and install onto the same device. Once the Local Network Privacy option is agreed to, it can find the Epson printers without issue.

But, for some reason, when this library is used within our application, after agreeing to the Local Network Privacy option, we are unable to discover printers and were able to do it before without issue. Our app in the AppStore which wasn't built with the latest XCode can install onto iOS 14 devices and works without issue as well.

So, yeah, a big mystery here. I'll let everyone know if I find anything interesting, but if anyone has pointers to potential fixes, please let this thread know.




Working at a Swedish POS company named Leeroy, and I experienced the same thing two days ago. I figured out that the cause of the printer (Epson TM-T88VI) not being discovered was that the project was built using Xcode 12.2. Looking at the Epson SDK's version details you can see under "[Development Environment]" that the highest supported Xcode version for the current highest SDK version (2.17.0 as of writing this) is Xcode 12.1.

I then reverted back to building the project with an earlier Xcode version we used recently that is <= 12.1 (namely, for some unrelated reasons we use Xcode 11.5), and the printer is again being discovered, hooray. So, if you are using Epson SDK 2.17.0 you should probably be using Xcode <= 12.1.

Also, good to know is that there are some caveats with having to build with an Xcode version < 12 and running and debugging the build on an iOS 14+ device. There is a very good article about this, and how to work with the situation on Medium named "Debugging on iOS 14 With Xcode 11".

Hope this can be of any help.
Best, Victor
You have to add the following capability to your app's entitlements: com.apple.developer.networking.multicast

To do so, the account holder of the developer program has to request this entitlement for the team, before it can be assigned to an app. See this page for details and a link the request form: com.apple.developer.networking.multicast

After I have added the entitlement, pairing and printing via NFC scan is possible and makes up a great user experience!

Hope this help.
Cannot connect Epson printers on iOS14
 
 
Q