Извините, если это слишком поздно, но может помочь кому-то еще. Таким образом, решение - связаться с Magtek. Если вы покупаете устройство Magtek, попросите у них lib. Я получил libDS247.a от Magtek. Затем импортируйте DS247.h в свой код, внедрите DS247Delegate. Я привожу здесь образец для вас -
(void)deviceDidConnect
{
if (theAlertView.visible)
[theAlertView dismissWithClickedButtonIndex:0 animated:NO];
}
- (void)deviceDidDisconnect
{
theAlertView = [[UIAlertView alloc] initWithTitle:@"Hardware Not Connected!"
message:@"Please connect the device."
delegate:self
cancelButtonTitle:nil otherButtonTitles:nil];
[theAlertView show];
[theAlertView release];
}
- (void)magneticCardReadStart
{
read = YES;
[self.tableView reloadData];
}
- (void)magneticCardReadDidFinish:(NSString *)cardString
{
read = NO;
if (trackMode == 67)
{
NSString *string = [cardString substringWithRange:NSMakeRange(6,20)];
self.pan1 = [[string componentsSeparatedByString:@"^"] objectAtIndex:0];
string = [cardString substringWithRange:NSMakeRange(7+pan1.length,27)];
self.name = [[string componentsSeparatedByString:@"^"] objectAtIndex:0];
string = [cardString substringWithRange:NSMakeRange(8+pan1.length+name.length,4)];
self.ed1 = string;
self.ed2 = @"";
self.pan2 = @"";
}
if (trackMode == 68)
{
NSString *string = [cardString substringWithRange:NSMakeRange(5,20)];
self.pan2 = [[string componentsSeparatedByString:@"="] objectAtIndex:0];
string = [cardString substringWithRange:NSMakeRange(6+pan2.length,4)];
self.ed2 = string;
self.ed1 = @"";
self.name = @"";
self.pan1 = @"";
}
if (trackMode == 69 || trackMode == 70)
{
NSString *string = [cardString substringWithRange:NSMakeRange(7,20)];
self.pan1 = [[string componentsSeparatedByString:@"^"] objectAtIndex:0];
string = [cardString substringWithRange:NSMakeRange(8+pan1.length,27)];
self.name = [[string componentsSeparatedByString:@"^"] objectAtIndex:0];
string = [cardString substringWithRange:NSMakeRange(9+pan1.length+name.length,4)];
self.ed1 = string;
string = [cardString substringWithRange:NSMakeRange(83,20)];
self.pan2 = [[string componentsSeparatedByString:@"="] objectAtIndex:0];
string = [cardString substringWithRange:NSMakeRange(84+pan2.length,4)];
self.ed2 = string;
}
if (trackMode == 71)
{
self.ed1 = @"";
self.ed2 = @"";
self.pan1 = @"";
self.pan2 = @"";
self.name = @"";
}
[self.tableView reloadData];
}
По умолчанию для trackMode должно быть установлено значение 67, а cardString представляет собой необработанные данные карты