Giter Site home page Giter Site logo

card.io-ios-sdk's Introduction

card.io logo

card.io SDK for iOS

card.io provides fast, easy credit card scanning in mobile apps.

NEW!!! card.io is now an open-source project!

As of December 2014, all of the source code for card.io is now available at the card.io-iOS-source repo.

What does this mean for you?
  • If you simply wish to integrate card.io into your mobile apps, then you can (and probably should) ignore the existence of card.io-iOS-source.
  • But if you're curious about how card.io performs its magic, or if you'd like to improve the appearance or behavior of card.io, then come visit card.io-iOS-source!

Brought to you by
PayPal logo

Stay up to date

Please keep your app up to date with the latest version of the SDK. All releases follow semantic versioning.

To receive updates about new versions:

You can find and start technical discussions using the Stack Overflow card.io tag.

Sample app

For a quick first look at card.io, we have included a very small sample application that you can build and run.

  1. Download the latest version of the SDK.
  2. Simply open the SampleApp folder or the SampleApp-Swift folder and follow the instructions in the README.md file you find there.

Instructions

The card.io iOS SDK includes header files and a single static library. We'll walk you through integration and usage.

Requirements

  • The latest non-beta version of Xcode. (Older or newer versions might also work.)
  • Supports target deployment of iOS version 6.1+ and instruction set armv7+ (including 64-bit).

Setup

If you use CocoaPods, then add this line to your podfile:
pod 'CardIO'
If you don't use CocoaPods, then:
  1. Download the latest version of the SDK.
  2. Add the CardIO directory (containing several .h files, libCardIO.a, libopencv_core.a, and libopencv_imgproc.a) to your Xcode project.
  3. In your project's Build Settings (in the TARGETS section, not the PROJECTS section), add -lc++ to Other Linker Flags.
  4. Either:
  • Add these frameworks to your project. Weak linking is supported.
    • Accelerate
    • AudioToolbox
    • AVFoundation
    • CoreGraphics
    • CoreMedia
    • CoreVideo
    • Foundation
    • MobileCoreServices
    • OpenGLES
    • QuartzCore
    • Security
    • UIKit
  1. or:
  • Add only these frameworks to your project (as Optional [i.e., weak-linked] libraries):
    • Accelerate
    • AVFoundation
    • AudioToolbox
    • CoreMedia
    • MobileCoreServices
  • and confirm that these two Build Settings are both enabled:
    • Enable Modules (C and Objective-C)
    • Link Frameworks Automatically
With or without CocoaPods:
  1. Add card.io's open source license acknowledgments to your app's acknowledgments.
  2. Refer to the header files for more usage options and information.
  3. You should add the key NSCameraUsageDescription to your app's Info.plist and set the value to be a string describing why your app needs to use the camera (e.g. "To scan credit cards."). This string will be displayed when the app initially requests permission to access the camera.

Sample code

You can use card.io in two ways:

  • As a view controller: Quick and easy. Create a CardIOPaymentViewController and present it modally. The card.io view controller handles all aspects of the UX, including manual entry as a fallback, all transitions, and number confirmation.

  • As a view: More flexible. Create a CardIOView to do card scanning only and manage everything else yourself. This enables a broader range of presentations, such as in-place transitions, but requires that you handle the rest of the UI yourself.

Integrate as a View Controller

Create a class (most likely a subclass of UIViewController) that conforms to CardIOPaymentViewControllerDelegate.

// SomeViewController.h

#import "CardIO.h"
@interface SomeViewController : UIViewController<CardIOPaymentViewControllerDelegate>
// ...

Make an optional call to speed up the subsequent launch of card.io scanning:

// SomeViewController.m

- (void)viewWillAppear:(BOOL)animated {
  [super viewWillAppear:animated];
  [CardIOUtilities preloadCardIO];
}

Start card.io card scanning:

// SomeViewController.m

- (IBAction)scanCard:(id)sender {
  CardIOPaymentViewController *scanViewController = [[CardIOPaymentViewController alloc] initWithPaymentDelegate:self];
  [self presentViewController:scanViewController animated:YES completion:nil];
}

Write delegate methods to receive the card info or a cancellation:

// SomeViewController.m

- (void)userDidCancelPaymentViewController:(CardIOPaymentViewController *)scanViewController {
  NSLog(@"User canceled payment info");
  // Handle user cancellation here...
  [scanViewController dismissViewControllerAnimated:YES completion:nil];
}

- (void)userDidProvideCreditCardInfo:(CardIOCreditCardInfo *)info inPaymentViewController:(CardIOPaymentViewController *)scanViewController {
  // The full card number is available as info.cardNumber, but don't log that!
  NSLog(@"Received card info. Number: %@, expiry: %02i/%i, cvv: %@.", info.redactedCardNumber, info.expiryMonth, info.expiryYear, info.cvv);
  // Use the card info...
  [scanViewController dismissViewControllerAnimated:YES completion:nil];
}

Integrate as a View

CardIOView is new as of card.io Version 3.3.0 (September 2013). We look forward to seeing how creative developers integrate it into their apps. If you do something cool with it, share it with @cardio! We also look forward to quickly resolving any issues that you may discover.

Create a class (most likely a subclass of UIViewController) that conforms to CardIOViewDelegate.

// SomeViewController.h

#import "CardIO.h"
@interface SomeViewController : UIViewController<CardIOViewDelegate>
// ...

Using a CardIOView provides UI flexibility. Here are two sample integration options:

  • Create a CardIOView when you need it, and then delete it when its work is finished.
  • Include a hidden CardIOView in your view, show it when you need it, and then hide it when its work is finished.
Option 1: Create a CardIOView when you need it

Confirm that the user's device is capable of scanning cards:

// SomeViewController.m

- (void)viewDidLoad {
  [super viewDidLoad];

  if (![CardIOUtilities canReadCardWithCamera]) {
    // Hide your "Scan Card" button, or take other appropriate action...
  }
}

Make an optional call to speed up the subsequent launch of card.io scanning:

// SomeViewController.m

- (void)viewWillAppear:(BOOL)animated {
  [super viewWillAppear:animated];
  [CardIOUtilities preloadCardIO];
}

Start card.io card scanning:

// SomeViewController.m

- (IBAction)scanCard:(id)sender {
  CardIOView *cardIOView = [[CardIOView alloc] initWithFrame:CGRECT_WITHIN_YOUR_VIEW];
  cardIOView.delegate = self;
  
  [self.view addSubview:cardIOView];
}

Write the delegate method to receive the results:

// SomeViewController.m

- (void)cardIOView:(CardIOView *)cardIOView didScanCard:(CardIOCreditCardInfo *)info {
    if (info) {
    // The full card number is available as info.cardNumber, but don't log that!
    NSLog(@"Received card info. Number: %@, expiry: %02i/%i, cvv: %@.", info.redactedCardNumber, info.expiryMonth, info.expiryYear, info.cvv);
    // Use the card info...
  }
  else {
    NSLog(@"User cancelled payment info");
    // Handle user cancellation here...
  }
  
  [cardIOView removeFromSuperview];
}

Include a method to cancel card scanning:

// SomeViewController.m

- (IBAction)cancelScanCard:(id)sender {
  [cardIOView removeFromSuperview];
}
Option 2: Include a hidden CardIOView in your view

Make an IBOutlet property:

// SomeViewController.m

@interface SomeViewController ()
@property(nonatomic, strong, readwrite) IBOutlet CardIOView *cardIOView;
@end

In your .xib, include a CardIOView, mark it as hidden, and connect it to the IBOutlet property. (Note: usually you will want to set the background color of the CardIOView to clearColor.)

After confirming that the user's device is capable of scanning cards, set the delegate property of the CardIOView:

// SomeViewController.m

- (void)viewDidLoad {
  [super viewDidLoad];

  if (![CardIOUtilities canReadCardWithCamera]) {
    // Hide your "Scan Card" button, remove the CardIOView from your view, and/or take other appropriate action...
  } else {
    self.cardIOView.delegate = self;
  }
}

Make an optional call to speed up the subsequent launch of card.io scanning:

// SomeViewController.m

- (void)viewWillAppear:(BOOL)animated {
  [super viewWillAppear:animated];
  [CardIOUtilities preloadCardIO];
}

Start card.io card scanning:

// SomeViewController.m

- (IBAction)scanCard:(id)sender {
  self.cardIOView.hidden = NO;
}

Write the delegate method to receive the results:

// SomeViewController.m

- (void)cardIOView:(CardIOView *)cardIOView didScanCard:(CardIOCreditCardInfo *)info {
    if (info) {
    // The full card number is available as info.cardNumber, but don't log that!
    NSLog(@"Received card info. Number: %@, expiry: %02i/%i, cvv: %@.", info.redactedCardNumber, info.expiryMonth, info.expiryYear, info.cvv);
    // Use the card info...
  }
  else {
    NSLog(@"User canceled payment info");
    // Handle user cancellation here...
  }

  cardIOView.hidden = YES;
}

Include a method to cancel card scanning:

// SomeViewController.m

- (IBAction)cancelScanCard:(id)sender {
  self.cardIOView.hidden = YES;
}

Hints & Tips

  • Processing images can be memory intensive, so make sure to test that your app properly handles memory warnings.
  • For your users' security, obscure your app's cached screenshots.
    Note: By default, a CardIOPaymentViewController automatically blurs its own screens when the app is backgrounded. A CardIOView does not do any automatic blurring.
  • The first time that you create either a CardIOPaymentViewController or a CardIOView, the card.io SDK must load resources, which can result in a noticeable delay. To avoid this delay you may optionally call [CardIOUtilities preloadCardIO] in advance, so that this resource loading occurs in advance on a background thread.

card.io-ios-sdk's People

Contributors

bluk avatar braebot avatar burnto avatar egrim avatar intelliot avatar keith avatar lkorth avatar neonichu avatar zhukn1 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

card.io-ios-sdk's Issues

Conflicts with Apple (& Google?) MapKits

Apple's and Google's MapKit both have known bugs where they fail to properly manage their graphics context. It is usually innocuous, but if they are used in an app that performs custom drawing and leaves a context un cleared, it will cause a crash.

Card.io performs custom graphics manipulation in its scanning view. Engaging the scanning view and then popping back to map view controllers can crash.

The workaround is to explicitly clear the context after card.io completes; I simply do so in both delegate methods:

  • (void)userDidCancelPaymentViewController:(CardIOPaymentViewController *)paymentViewController {
    [EAGLContext setCurrentContext:nil]; // Apple MapKit has a bug; it doesn't properly make sure it has its own context. Causes crashes.
    . . .
  • (void)userDidProvideCreditCardInfo:(CardIOCreditCardInfo *)info inPaymentViewController:(CardIOPaymentViewController *)paymentViewController {
    [EAGLContext setCurrentContext:nil]; // Apple MapKit has a bug; it doesn't properly make sure it has its own context. Causes crashes.
    . . .

Presumably this could be done within card.io as well.

Mask credit card number on manual entry

Is there an option to enable masking of credit card numbers (much like a password field) being entered via manual entry in the CardIOPaymentViewController?

Hide card image after scanning

Hi
Would it be possible to hide the credit card image from view after scanning and just display the card number as some of our customers think that we are capturing and saving their card image?

Thanks

Wrong RU localized string

Russian localized string for "scan_guide" key has been changed. it's no good to translate verb "hold" in this way. now strings says that customer should "store card here".

Crash in PKCardNumber.m, line 102

Crash log here

I call this on the call back of - (void)cardIOView:(CardIOView *)cardIOView didScanCard:(CardIOCreditCardInfo *)cardInfo:

PKCardNumber *cardNumber = [PKCardNumber cardNumberWithString:cardInfo.cardNumber];
self.creditCardEditCell.numberField.text = [cardNumber formattedString];

Basically this happens when I get the callback from scanning a credit card. Will continue to debug and report back with new findings. Thanks!

No Diners Club Card Type

In CardIOCreditCardInfo.h in CardIOCreditCardType enum you don't have Diners Club credit card type.

Maybe there is another way to get Diners Club CC logo using [CardIOCreditCardType logoForCardType:] method?

Card Type incorrect.

When getting the card type after the delegate callback

-(void)userDidProvideCreditCardInfo:(CardIOCreditCardInfo *)info inPaymentViewController:(CardIOPaymentViewController *)scanViewController

Logging the cardType returns the incorrect value according to CardIOCreditCardType e.g Visa = 4 but returns 52

Card IO issue for IOS 6.0.1 during integration

We have built the iPhone application. Now we have started latest card-io library integration. After integration it successfully build but on launch/run
it directly crashed.when I checked it is throwing the exception "Thread1: signal SIGABRT".

My primary understanding is after adding following packages application get crashed on launch.

  1. CoreVideo.framework
  2. OpenGLES.framework
  3. Security.framework .

The following devolpment environment detail:
1.xCode 4.6.2
2.iPhone 5.1.3 and 6.0.1
3. card-io lib 3.2.

Linker Error with PhoneGap plugin

I am running Phonegap cardio plugin. I am stuck on the linker error corefoundation not found. I installed the corefoundation framework but that didn't help. Any suggestions is appreciated. I am using the latest Cardio plugin(3.2) and plugin.

Setting navigationBarStyle to UIBarStyleBlackTranslucent breaks manual entry layout.

Relevant code:

# In a UIViewController
CardIOPaymentViewController *ctrl = [[CardIOPaymentViewController alloc] initWithPaymentDelegate:self scanningEnabled:YES];
[ctrl setAppToken:@"(app token)"];
[ctrl setKeepStatusBarStyle:YES];
[ctrl setNavigationBarStyle:UIBarStyleBlackTranslucent];
[ctrl setModalTransitionStyle:UIModalTransitionStyleCrossDissolve];
[self presentViewController:ctrl animated:YES completion:nil];

Tap "Manual Entry" and you'll see this: img_0001

Amex doesn't scan

I'm not able to scan American Express cards (with the green background) like these (just grabbed an image from Google), I would guess because the number is obscured by the middle logo.

Is this a known issue? Have others had problems with these cards? Just wanted to see if it's something that can be fixed. It seems that Jumio, another card scanner, does work with these cards.

Try to use Card.io in a Static library

Hello, i try to set Card.io in a static library project but when i set the linker flag to -lc++ i get a Mach-O Librarian Error: "file: -lc++ is not an object file (not allowed in a library)", i was wonder if is possible to use card.io within a static library project?

Tnx for your help.

x86_64 support

Attempting to compile for arm64 results in error.

ld: warning: ignoring file /Users/kain/src/myproj/Pods/CardIO/CardIO/libCardIO.a, missing required architecture x86_64 in file /Users/kain/src/myproj/Pods/CardIO/CardIO/libCardIO.a (3 slices)
Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$_CardIOPaymentViewController", referenced from:
      objc-class-ref in ABIPlansViewController.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Feature Request: Increase customizability of UI.

[Aug 9, 2013: issue title made more general (dgoldman-ebay)]

It would be great if we had the option to do this. CardIO is great but it doesn't really "fit" with the rest of my app's design. A big win would be if I could specify a custom UINavigationBar subclass.

For example, UINavigationController offers an API like this:

initWithNavigationBarClass:[MyCustomNavBar class] toolbarClass:[UIToolbar class]]

[CardIOGPURenderer dealloc] crash

Hi, I'm using card.io and I'm getting the following crash

SIGSEGV
Yaxi-[CardIOGPURenderer dealloc]

occurrences five. In five different devices.

This app is already on sale, apparently it is not a recurrent crash but still.

Do you guys know what could be causing this ?

Add Billing Address Capture

It would be nice if Card.io had the ability to capture the billing address on the cvv screen. And if it only asked for the billing address on the card types that need it.

iOS7 Support

I'm noticing some UI glitches in iOS7 Beta5 (mainly the table view's content offset is wrong, hiding the postal code field). I know you already have UI customization requests, but the bottom toolbar on the camera screen should also have customizable text and tint colors in iO7.

Will you guys have something ready for the gold master? I'm sure there are quite a few of us who have apps to ship for iOS7 very soon...

Neither code nor project is actually in the repository

As far as I can tell, there is no actual code in the repository (?). This makes updating a chore, to say the least, and loses all the benefits of . . . . well, source control and package maintenance.

Am I missing something? Is there a reason for this unusual configuration?

Thanks.

Suggestion: Add a version number in the header file

After I've installed card.io in my project, it would be helpful to be able to look up what version I'm running, especially after an email like you sent out today. Unfortunately, the current header doesn't include it.

Is there some other way to determine what version I have installed?

disableManualEntryButtons = YES property not working

Hello,

I'm integrating the 3.6.2 version of the SDK, and even if I set the property disableManualEntryButtons to YES the CardIOPaymentViewController still shows the "Enter Manually" button.

I've read the documentation and it seems this is the only way to achieve this, but apparently it doesn't work.

Thanks.

return card image - top part only

Hi guys, this is a follow-up on a question that i asked on stackoverflow. I understand returning the full card image is a no-go, but for some user applications that only store an user's cards, the top of the card image would be fantastic. I experimented with a 600x120 pixels image, it looks great. So please consider this as a replacement for the abandoned card image function. Thanks.

Mach-O Linker Error

I was trying to build my project and failed with the following error message

duplicate symbol _kGPUImageGaussianBlurFragmentShaderString in:
    /.../libGPUImage.a(GPUImageGaussianBlurFilter.o)
    /.../CardIO/libCardIO.a(CardIOGPUGaussianBlurFilter.o)
duplicate symbol _kGPUImageGaussianBlurVertexShaderString in:
    /.../libGPUImage.a(GPUImageGaussianBlurFilter.o)
    /.../CardIO/libCardIO.a(CardIOGPUGaussianBlurFilter.o)
ld: 2 duplicate symbols for architecture armv7s
clang: error: linker command failed with exit code 1 (use -v to see invocation)

I fixed it by renaming those constants in GPUImage's library. I would suggest changing those constant names to something CardIO exclusive in your next update. It would help avoid confusions.

Undefined symbols for architecture x86_64:

Using 3.4.3, Xcode 5.0.2, iOS 7.0

Undefined symbols for architecture x86_64:
  "std::terminate()", referenced from:
      ___clang_call_terminate in libCardIO.a(libCardIO.a-x86_64-master.o)
  "___cxa_begin_catch", referenced from:
      ___clang_call_terminate in libCardIO.a(libCardIO.a-x86_64-master.o)
  "___gxx_personality_v0", referenced from:
      Dwarf Exception Unwind Info (__eh_frame) in libCardIO.a(libCardIO.a-x86_64-master.o)
      Dwarf Exception Unwind Info (__eh_frame) in libCardIO.a(libCardIO.a-x86_64-master.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

iOS8 issues

I just tried our app that uses card.io 3.6.3 on iOS8 and its not giving me a camera image. The app does have camera permission.

Unfortunately I can provide much else in the way of details because I have an Xcode problem that doesn't allow me to debug any iOS8 devices.

Anyone else having problems with iOS8?

Suggestion: Cocoapods Specs

Can you submit this as a cocoapod spec? It'd make card.io easier for projects using cocoapods for its dependency management. It also has the plus of clearer versioning.

https://github.com/CocoaPods/Specs/

Should be something like this:

Pod::Spec.new do |s|
  s.name         = "card.io-iOS-SDK"
  s.version      = "3.2.0"
  s.summary      = "card.io provides fast, easy credit card scanning in mobile apps."
  s.homepage     = "https://github.com/card-io/card.io-iOS-SDK"
  s.author       = 'card.io'

  s.license      = 'BSD'
  s.source       = { :git => "[email protected]:card-io/card.io-iOS-SDK.git", :commit => "69b9414df74678e936abc4f3bb5cacf435c33379" }

  s.platform     = :ios, '5.0'
  s.source_files = 'CardIO/*.{h,m,a}'
end

What do you think?
Thanks!

Undefined symbols for architecture i386: "_UIFontTextStyleBody", referenced from:

CardIO updated using cocoapods and now my app won't build where it did before without any issue.

I haven't changed any code in my app, I was just adding another library and CardIO updated as well, here is the error I get when trying to build:

Undefined symbols for architecture i386:
"_UIFontTextStyleBody", referenced from:
+[CardIOTableViewCell defaultTextLabelFontForCellStyle:fontSize:] in libCardIO.a(libCardIO.a-i386-master.o)
+[CardIOTableViewCell defaultDetailTextLabelFontForCellStyle:fontSize:] in libCardIO.a(libCardIO.a-i386-master.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)

Is there something I need to change in this version versus the previous versions?

changing the guideColor doesn't work

I have an issue with changing the guideColor of card.io's scanning brackets. I was told it was a bug on card.io's end - are there any updates on changing the guide color? - here is my code as well

here is my code -

self.readCardInfo = [[CardIOPaymentViewController alloc] initWithPaymentDelegate:self];
self.readCardInfo.appToken = @"xxxxxxxxxxxxxxx";
;
[self.readCardInfo setGuideColor:[UIColor colorWithRed:.310 green:.671 blue:.890 alpha:1.0]];
self.readCardInfo.scanOverlayView = guideView;
self.readCardInfo.hideCardIOLogo = YES;
self.readCardInfo.detectCardOnly = NO;
self.readCardInfo.showsFirstUseAlert = NO;
self.readCardInfo.collectZip = NO;
self.readCardInfo.scanInstructions = @"Scan the front of your card";
[self presentViewController:self.readCardInfo animated:NO completion:nil];

AppStore submission warning about non-public API use

Yesterday, I submitted an update of my app to the AppStore with the Card.io iOS SDK included but not used. Upon submission, I received a warning from Apple about detecting the use of non-public API's ("decode" was identified as the call). After doing some research, I ran the following command in my project directory (with the following results):

find . | grep -v .svn | grep ".a" | grep -v ".app" | xargs grep decode
Binary file ./vendor/card.io_ios_sdk_3.4.3/CardIO/libCardIO.a matches

I won't know for a couple of days if this causes my app to be rejected, but it was suggested to let you guys know about it, so you can assure that your library is AppStore submission safe.

Thanks!

Crash on card capture

device: iPhone 5
OS : 6.1.4

first time we've seen this crash while using card.io. we were not doing anything special, simply bringing up card.io and attempting to scan a card. we've performed the action hundreds of times with no issues, until now. Unfortunately, it seems to be fluke, as we cannot replicate on a normal basis.

see details below :

0 CoreFoundation 0x324d53e2 exceptionPreprocess + 158
1 libobjc.A.dylib 0x3a1d095e objc_exception_throw + 26
2 AVFoundation 0x3165a782 -[AVCaptureSession stopRunning] + 190
3 Qgiv VT 0x001670fa -[CardIOVideoStream stopSession] + 174
4 Qgiv VT 0x00176976 -[CardIOCameraView stopVideoStreamSession] + 118
5 Qgiv VT 0x00164614 -[CardIOCameraViewController stopSession] + 116
6 Qgiv VT 0x00164b7a -[CardIOCameraViewController didScanCard:] + 102
7 Qgiv VT 0x00164e74 -[CardIOCameraViewController videoStream:didProcessFrame:] + 176
8 Qgiv VT 0x00179b6a -[CardIOCameraView videoStream:didProcessFrame:] + 610
9 Qgiv VT 0x00167294 -[CardIOVideoStream sendFrameToDelegate:] + 172
10 Foundation 0x32ded49c __NSThreadPerformPerform + 456
11 CoreFoundation 0x324aa8f2 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION
+ 10
12 CoreFoundation 0x324aa158 __CFRunLoopDoSources0 + 208
13 CoreFoundation 0x324a8f2a __CFRunLoopRun + 642
14 CoreFoundation 0x3241c238 CFRunLoopRunSpecific + 352
15 CoreFoundation 0x3241c0c4 CFRunLoopRunInMode + 100
16 GraphicsServices 0x35ffb336 GSEventRunModal + 70
17 UIKit 0x343382b4 UIApplicationMain + 1116
18 Qgiv VT 0x0007d942 main (main.m:15)
19 libdyld.dylib 0x3a5fdb1c start + 0

silver cards

The IOS sdk does not seem to be able to scan silver cards such as american express platinum, etc. Is this a limitation?

Version tags for versions before 3.4.0

Hi,

Can you add versions tags for versions 3.2.0, 3.2.1, 3.2.2, 3.2.3, 3.2.4, and 3.3.0? These versions of the CardIO library are installable through CocoaPods but are currently referenced by commit hashes, which we would like to convert over to using tags instead. Using tags to reference version numbers is important because it definitively indicates which commits belong to which version.

Here is an ongoing discussion regarding CardIO's presence in CocoaPods. CocoaPods/Specs@a318bf5

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.