How to get card.io to scan expiration dates? (iOS 6) - ios

I've been told by others that the card.io SDK can scan expiration dates in addition to card numbers. Yet when I integrate it into my iOS 6 iPad project, I'm only able to scan the card number. Has anyone had success in other implementations? (i.e. iOS 5, iPhone, etc.)
Thanks in advance.

I work at card.io. Newer versions of the card.io SDK (3.x and above) do all the card scanning locally on the client - older versions sent images to our server for scanning. We haven't added expiry scanning to this new version yet, but it's still a better customer experience as it's faster (no waiting for network latency) and more accurate (no more failed reads).

Related

Which minimum iOS version should my app support if creating BLE app?

I am about to start new application and my customer want to support iOS 5 and iPhone 5 also including all latest range devices. I am using swift and official apple doc saying it supports till iOS 7. My app will going to work based on BLE and location update data and basically its a IOT application.Issue is should i start giving support from iOS 7 or 5 or from 9? I do not have any exact clue why I should not choose iOS 7 version and I should start iOS 9.
You can start by checking the device capability table here:
https://developer.apple.com/library/content/documentation/DeviceInformation/Reference/iOSDeviceCompatibility/DeviceCompatibilityMatrix/DeviceCompatibilityMatrix.html
As it states there, the first device compatible with Bluetooth Low Energy is iPhone 4s.
With that in mind you could possibly support the first iOS version which supports iPhone 4s, from here it is iOS 5. As others mentioned Core Bluetooth was introduced a bit later.
Now you should understand that supporting all versions starting from such an old OS version will introduce A LOT of work. Then you have 2 questions which we cannot answer:
Do you want to do that work?
Is your customer willing to pay for it?
As for link for your customer I guess you could use this:
https://mixpanel.com/trends/#report/ios_10
I would say that Mixpanel is quite a big company which tracks iOS distribution numbers pretty precise.
The facetious reply - nonetheless a valid one - is to find another client.
A more rational reply is to speak reasonably to your client with confidence and knowledge of history.
1 iOS underwent a major UI change with iOS 7, what's to be gained by supporting something older?
2 If the device in question is actually running iOS 5 today it probably cannot use iOS 8 or above.
3 As you said, Swift will not run on a device unless it's iOS 7 and above.
4 The historical adoption rate for the next version of iOS - since I believe the start of history in 2007 - is well above 80% in the first year and 90% the year after.
Combining these things, you have several arguments for this client. (And yes, this question and/or answer likely belongs in the freelancing site.)
1 Why the need for iOS 5?
Give them the current numbers of how many devices currently still run iOS 5. Have them defend this reason, or else find another client.
2 If the client is "closed", meaning they aren't looking to market your code, then why are they using devices running iOS 5?
Again, the only reason to use that old a version - understanding that a device running iOS 5 is old enough yet likely new enough to at least run iOS 7 - is that they are cash-strapped. Frankly, that's a client I'd run from. Quick.
3 There's two likely reason for this request. (a) They are testing you to see how you reply. (b) They are not as informed as you about the current state of the iOS market.
Let's take the the latter one first. Be informed and knowledgable and stick with the facts. Use the arguments I lined out above. If they aren't convinced - you probably need to drop them as a client. While the "customer rules", nobody wants a client you cannot reason with.
As for the former - the client is testing you?
Again, give them the facts - you can support iOS5, but with limitations - later versions of iOS may not run those devices, later features introduced in iOS (particularly UI things like auto layout, UICollectionViews, etc.) mean extreme complications in the code base... adding both time and money, and it needs to be written in Objective-C.
iOS 5?! Right now iOS 9 has 92% of active devices so you should definitely choose it or even iOS 10.
For BLE as you mentioned iOS 7 and iPhone 4S is minimum.
You can see from the Documentation that Core Bluetooth was introduced in iOS 5, so you can target that version and still have BLE support but only in Objective-C
However, there will be a number of other enhancements in iOS that you will not be able to take advantage of and this will make development more difficult Andre therefore more expensive.
iOS 5 is very old and probably represents a very small percentage of devices.

Downgrade an iPhone for testing purposes

I am wondering if it is possible to downgrade an iPhone to older versions of iOS even when the firmware is not signed by Apple.
I am a developer and I might need to install iOS6/7 on my iPhone, which currently has iOS8.
Is there a way to do that?
No, if you had an older device and saved the SHSH blobs when Apple were still signing the firmware then you would be able to.
I keep an old device for each major version of the OS from 4 upwards, and you get get them on ebay for quite cheap. iOS 6 is a very small percentage of the overall market now, so unless you are needing to support it for a specific reason it would be best to drop support.
If anyone is still interested in this in 2017, you can save your SHSH2 blobs by following this guide & then using Prometheus from Tihmstar.

Sphero: openConnectionWithSpecificRobot or analog in official SDK for iOS

I don't understand how I can start communication session with specific robot or with all connected (available) robots. I have "availableRobots"=2 and array with both robots. What next? In official SDK for iOS I don't see any method similar to "openConnectionWithSpecificRobot".
Currently the iOS SDK only supports communication with one robot. Prior to iOS 6 Apple only allowed communication with one device of any type. This was supposedly fixed in an iOS 6 update, although we have not had the chance to test this yet. If so we hope to release an update at some point in the future that will support communication with multiple robots on iOS.

Scanning and switching Wifi networks on iOS 4.0 and above

I am trying to find whether the private APIs listed at: http://code.google.com/p/iphone-wireless/wiki/Apple80211Functions still work with iOS 4.0 and above. I am trying to turn the wifi ON, scan the networks available and latch on to one of the networks. I am not going to put the application in appStore and it is just an experiment. I found many applications pulled down from the appStore but they seem to have been developed on iOS versions less than 3.0. I would also like to get an example if possible.
Please Help.
I needed the same thing as you, and after some research I must say that starting from iOS 5 it is possible to scan the network list using private API on a jailbroken device only. This blog post states the following:
Last year Apple has blocked wifi scanners from App Store, however till iOS5 it was still available for private usage via WiFiManager bundle.
In iOS5, WifiManager bundle no more exists however 80211 functions are still available via IPConfiguration bundle.
The API you linked provides an open-source tool Stumbler which seems like something you were seeking. The tool is claimed to work under iOS 5.
Tried stumbler for iOS5 via linking to framework
/System/Library/SystemConfiguration/IPConfiguration.bundle/IPConfiguration
I could link to Apple80211Open, Apple80211BindToInterface, Apple80211Scan. However, I only receive empty WiFi scan results on jailbroken iPhone4S / iOS 5.1.1
The folks from WifiFofum did a good job and have a app on cydia which runs on JB iOS 5.1.1 and does an excellent job for scanning WiFi networks (BSSID, link level, SSID, channels, ...).

"This code is for an app that is not compatible with this device."

We have an app in the Apple App Store that we can't seem to get installed on a Verizon iPhone (from the App Store, not Xcode). This may have nothing to do with the fact that it's a Verizon device, but that is the main difference I see between it and the devices I can get to run it.
We are attempting to install the app using a promotional code, but we receive an error when hitting Redeem, as seen in this picture: (promo code blocked out)
ERROR: This code is for an app that is not compatible with this device. You can redeem it on your desktop computer or a compatible device.
The error device is an iPhone 4 (Verizon) running iOS 4.2.8. This error was received when the app was built for 3.x and the assumption was that Verizon devices would not accept apps not built with at least SDK 4.
However, the app was recently updated (yesterday) to use the 4.3 SDK. The app has its deployment target set to iOS 3.1 and has been successfully installed and tested on a device (iPhone 3G AT&T) running this version. This latest version has also been successfully retrieved and tested on an iPhone 4 (AT&T) running 4.3. We were under the impression that every version in-between (3.1 - 4.3) would then be compatible, perhaps this is not the case?
Unfortunately, the Verizon device is not available for Xcode deployment nor ad hoc distribution.
Now for the actual development question:
Is there a build setting that can explain this behavior? Failing that, I would like to determine if the error is limited to the specific device or all devices either running 4.2.8 or Verizon specific hardware.
I would be willing to share a promotional code or two to people running 4.2.8 (or later) on a Verizon device (This is not a bribe. You are welcome to keep the app of course, but I am offering this only for installation testing purposes, not for promotional reasons). If you think you can help, please indicate your interest in the comments. I have not mentioned the app here, because I don't want to unnecessarily spam my product if the answer can be determined without it, but I have no problem sharing that information if required.
Update:
I followed lxt's suggestion and waited to see if it was a caching issue with the App Store servers. Unfortunately, 40 hours after I was informed the update was ready for sale, we are still receiving the same error.
I have found the following threads in the Apple Developer forums confirming this problem is not limited to our app: (A login may be required)
Promo-code redeemer getting "this code is for an app that is not c...
Promo codes broken on Verizon iPhones ?
I have submitted a bug report to Apple (ID 9905790) concerning the issue. At this time, I am unsure if this issue is related to Verizon devices or iOS 4.2.8. Once I receive a definitive answer I will post it. For now, a workaround that appears to be working for others which we have not yet tried, is to redeem and install through iTunes.
Since this appears to only affect Promo Code redemption and NOT store purchases, the issue has lost much of its urgency. However, if anyone is able to provide more information or a solution, it is still very much appreciated.
Update:
I can confirm that redeeming the codes through iTunes and then installing to a Verizon device works fine. This means the problem is not with the app or the build settings, but with the Verizon device App Store redemption.
I have received one reply from Apple in response to my bug report asking me to verify if this occurs on 5.0b5. Unfortunately, as previously mentioned, we do not have developer access to the Verizon device (which is the entire reason for using a promotional code in this instance). I have asked them to confirm if this is a Verizon/iOS specific issue and will update this issue when I have more information.
According to the Apple documentation, it's just a matter of setting the deployment target:
You have indicated that your binary requires iOS 4.3 or later. Apps that require iOS 4.3 or later will not be available to Verizon iPhone users. If your app could be compatible with earlier iOS versions, you may want to reject your binary and upload a new one that indicates the earliest compatible iOS.
That's the message that's normally appended to App Store emails when you have an app waiting for review.
So in theory it should 'just work'.
However, what would be interesting to know would be:
Did you produce the promotional code before updating the app?
If so, do you get the same results with a promo code generated after updating the app (you never know with the App Store / iTunes Connect...)
After 24 hours are you still seeing the same issue? (24 hours being the normal App Store 'refresh period')
Sorry, I could not provide you with more concrete answers. At times it does feel like the App Store is held together with string, so it wouldn't be completely surprising if it was some value being kept around that should have been knocked back when you updated the app.
That said, it's a little strange that your app wouldn't work on the Verizon phone when you built it for 3.x. Why is the Verizon device not available for Xcode deployment? Is it because you don't have one to hand (understandable), or is it something else? There's no reason why it shouldn't be able to have ad-hocs thrown on it.
This is pure speculation:
Since there's a different build of iOS for the Verizon phone, maybe under the hood all apps on the appstore are available twice - one time signed for use on the AT&T version of iOS and one time signed for the Verizon version. The Appstore would deliver the appropriate version depending on your device.
If this would be the case and since redemption codes existed before the Verizon line of phones, it may be that redemption codes point to one version of the app only, leading the appstore to believe it is incompatible when redeemed on the "wrong" phone.
End of speculation.
I'd suggest instructing your friend to buy the app (if it's not too costly) and paying him the money back. If this works, then cleary what we're dealing with is a bug in Apples gift code system and you should be filing a bug report about this.
Btw: you're not alone with this problem. Although they didn't resolve it, the guys on this forum mention the exact same situation.

Resources