Verifone e355 iOS integration - unable to trigger barcode scanner with soft mode - ios

I'm working in a POS(iPad) application where we are using Verifone E355 for payments. Now I have a requirement to trigger the barcode scanner of verifone e355 device(https://www.verifone.com/en/us/devices/mpos/e355) through software from iPad.
VMF(Verifone mobile framework) iOS sdk is being used to communicate calls with E355.
I have followed the framework docs and initialised the barcode scanner API. To activate the barcode scanner and scan the below code snippet is used.
I always get a return of -9 (which is an error code, description as per docs - Value returned when command was sent when device is connected but not connection not initialized) upon calling startScan and sendTriggerEvent: api's.
[self.barcodeScanner initDevice];
int startScanResult = [self.barcodeScanner startScan]
int setSoftTrigger = [self.barcodeScanner sendTriggerEvent:true];
The above code block is what I have tried till now. If anyone has experience working with e355 integration, please help out here.

you need to confirm to the delegate of VFIBarcode and once you scan you will get response from barcodeScanData delegate method.

Related

Sinch SDK - iOS app does not receive immediate callback when callee reject the call

I integrated Sinch SDK into iOS application (Capacity plugin which works under ionic).
Main use case so far is to make call from App to phone.
I followed instructions from here: https://developers.sinch.com/docs/in-app-calling/getting-started/ios/create-app/ and everything works correctly - I can call from the app to phones using Sinch platform.
The problem which I noticed is when callee rejects the call then app does not receive immediate notification about it. Sometimes notification (func callDidEnd(_ call: SinchRTC.SinchCall)) is triggered after some delay (10-20s). However sometimes when callee rejects the call app is still calling and second connection appears on callee's phone - then when second time callee rejects the call app correctly receive callback about it and close the connection.
Do you have any hints what can be the issue here?
We will review the tutorial to see if the issue can be replicated.
However using the VideoCallKitSwift Swift sample you can change the following to the sinch client on start and call invocation to make a PSTN call:
In CallKitMediator
add the cli:<YOURCLI> after userId in the SinchRTC.client (In this case I have put a placeholder +4100000000 in the cli)
From
do {
self.client = try SinchRTC.client(withApplicationKey: APPLICATION_KEY,
environmentHost: ENVIRONMENT_HOST,
userId: userId)
To
do {
self.client = try SinchRTC.client(withApplicationKey: APPLICATION_KEY,
environmentHost: ENVIRONMENT_HOST,
userId: userId,
cli:"+4100000000")
In CallKitMediator+CXProviderDelegate Here remove the withId: and change the client method to callPhoneNumber instead of videoCallToUser
From
let callResult = self.client!.callClient.videoCallToUser(withId: action.handle.value)
To
let callResult = self.client!.callClient.callPhoneNumber(action.handle.value)
Testing to a PSTN connection via this method yields no delay in the callDidEnd. If your issues persist, I would recommend to open a ticket with Sinch support who can analyse the PSTN leg of the call for you.

ISO14443 - React Native NFC sometimes "Tag connection lost" - only on iOS

Context & Problem:
I’m writing a React Native application which has to communicate with NFC MiFare Ultralight tags. I have NXP NTAG I2C PLUS ISO14443-3 tags.
I’m using the react-native-nfc-manager library for this. On android I didn’t notice any problems just on the iOS side. I’m testing on iOS 13 and 14 and my device is an iPhone 7.
I am able to find and connect to NFC Mifare Ultralight tags (can read and write them too), but in the 75% of the situations I get the following error during the communications:
[CoreNFC] 00000002 803f43f0 -[NFCTagReaderSession transceive:tagUpdate:error:]:771 Error Domain=NFCError Code=100 "Tag connection lost" UserInfo={NSLocalizedDescription=Tag connection lost}
This problem only appears on iOS. Android works fine.
How I communicate:
I added the NDEF and TAG formats to the entitlements file to the …readersession.formats.
I also added value to the info.plist for the Privacy - NFC Scan Usage Description.
I’m requesting NfcTech.MifareIOS tech and calling the NfcManager.sendMifareCommandIOS() method as the library’s MiFare example shows. I’ve tried to use other transmitter methods and requesting other tech types, but in those situations I didn’t even get any responses.
This is how I create the writing commands and how I call my transmit method:
// WRITE COMMAND looks like: [0xA2, Addr, datas]
const writeCommand = [0xa2, offset, data[0], data[1], data[2], data[3]];
const response = await this.transmit(writeCommand);
This is how I create the reading commands:
// FAST_READ COMMAND looks like: [0x3A, StartAddr, EndAddr]
const readCommand = [0x3a, offset, offset + readLength];
And here is my transmit method:
private async transmit(msg: number[]): Promise<number[]> {
...
const cmd = Platform.OS === 'ios' ? NfcManager.sendMifareCommandIOS : NfcManager.transceive;
return await cmd(msg);
}
What I noticed and tried:
I noticed that the iPhone is very sensitive for the positioning. If I hold the device in a certain position I can also achieve 80% success. I noticed too that if I leave the phone on the tag I get this error more often. I got better results when I took away the phone after a communication and then put it back again.
When I added some sleep after the communication for example 100 ms, the communication seemed to be more stable. Because of the number of communications, I can't wait that much. Even if I wait I get the error, but fewer times.
I saw a very similar issue which describes a CRC problem, which appears when you try to send CRC, but that has been automatically added already by the iOS. I’m not sending the CRC (which was the solution in the mentioned issue), so that shouldn't be a problem.
Also saw the following issue with similar problem, but I have another type of tags - ISO-14443 and I'm also able to connect and communicate with the tags which wasn't the case in the mentioned issue.
Tried to invalidate the session after each communication, but didn’t help to stabilize the connection.
Tried with multiple tags (but with the same tag type), but got the same results.
I'd appreciate very much any ideas that could help me solve this problem.
At the end I managed to try out our app on multiple iPhones and the NFC worked properly.
We also found out that our test device is a refurbished unit and we think that maybe that is the problem's cause.

Monaca Push Debug App

I am working on an app using Monaca where I need to be able to push notifications to users of the app. I tried getting the monaca push back-end working, and that wouldn't work, the app didn't register. I then moved to using the standard cordova plugin, so I can push directly from my servers, without using monaca's back-end. when I call the init function, normally a register event will fire, this works fine when I build the app. However I very much want to get the custom debugger working, I am able to build the custom debugger, and I see the plugin properly installed. Also the init function gets called, as soon as it is called I get the standard IOS security alert to grant the app permission, however the register event is not fired, therefore I am unable to get the device ID to push to the custom debugger app. Has anyone been able to use push notifications with the custom debugger application?
Best,
Peter
(https://github.com/phonegap/phonegap-plugin-push)
P.S, i calls to set the badge count setApplicationIconBadgeNumber works fine in the debugger. I think this is something simple, maybe with the certs? I dont get any errors fired, no notifications no clues using the standard debugger, how can I hunt down what the issue is?
I can get it work using ngCordova, which is AngularJS integration.
http://ngcordova.com/docs/plugins/pushNotifications/
Then, inject it like
var app = ons.bootstrap('myApp', ['onsen', 'ngCordova']);
Get back to me if you need further clarification.

com.google.GCKError Code=2 when connecting to ChromeCast device

I'm working on an iOS app where I now want to integrate ChromeCast support. I use the HelloGoogleVideoCast example to test my hardware setup and get inspiration for my app.
I have now stumbled on a problem that is present both in my app and in HelloGoogleVideoCast. When I connect to a device (connectToDevice method in HelloGoogleVideoCast) I get error "The operation couldn’t be completed. (com.google.GCKError error 2.)". I have power-cycled the device with no change in behavior. I never get to the callback deviceManagerDidConnect, instead deviceManager:didFailToConnectWithError is called with this error. Still, I can connect with the iOS YouTube app.
I can't find anything with substance if I google it and I can't find any good ChromeCast developer forums.
Is there anybody who has an inroad to how to solve this?
I m not sure it will help but u can try:
Download the Chromecast app from app store:
chromecast link
After u see your chromecast -> select your chromecast -> General -> make sure both check box are selected (I know the text is nothing to do with your problem).
Try now.
If the error still occur, try to reboot your chromecast.
If your error still occur, try to reset your chromecast, and then check the boxes again (don't forget!).
Make sure that you initialize the Receiver Manager in your receiver app as soon as possible. Don't wait for the window.onload. If the receiver takes too long to load and initialize the receiver manager, the connection is automatically torn down.
I had the same problem as you did and making the following changes on receiver worked for me:
I've put the script src="//www.gstatic.com/cast/sdk/libs/receiver/2.0.0/cast_receiver.js" inside head tag and before title tag;
I've put my script file which managed all cast functions after
body tag (actually I've put all script declarations, except for cast_receiver, after body tag, including jQuery);
I hope it can help you yet :)

"session receiveSignalType" is never get called in opentok 2.1.7 version

I am working on video/audio/chat application by using opentok 2.1.7 version. I am able to send the signal but unable to listen signals in the code below:
_session receiveSignalType:#"signal" withHandler:^(NSString *type, id data, OTConnection *connection)
I have called function which will receive different signals once session is connected. Is there any specific mechanism need to follow to receive signals?
Please update your iOS SDK, there are numerous bug fixes. Delegate for receiving signal has been changed to received signal type.

Resources