iOS: Passbook
Cómo añadir Passbook en nuestras aplicaciones iOS
Ficheros necesarios
Ficheros necesarios
Necesitamos en una carpeta los siguientes ficheros:
icon.png icon@2x.png logo.png logo@2x.png manifest.json pass.json strip.png strip@2x.png
icon.png icon@2x.png logo.png logo@2x.png manifest.json pass.json strip.png strip@2x.png
Los creamos:
Creamos un fichero llamado pass.json con la siguiente información
{
"formatVersion" : 1,
"passTypeIdentifier" : "pass.com.edreams.flights.testpassbook",
"serialNumber" : "001",
"teamIdentifier" : "4W47KRC7HR",
"organizationName" : "eDreams",
"description" : "Coupon for 1 Free Passenger",
"logoText" : "¡Viaja Gratis!",
"foregroundColor" : "rgb(255, 255, 255)",
"backgroundColor" : "rgb(135, 129, 189)",
"labelColor" : "rgb(45, 54, 129)",
"barcode" : {
"message" : "All you need is love",
"format" : "PKBarcodeFormatPDF417",
"messageEncoding" : "iso-8859-1"
}
"coupon" : {
"primaryFields" : [ {
"key" : "offer",
"label" : "for you",
"value" : "Free love"
}]
}
}
Creamos un fichero llamado manifest.json con la siguiente información
{
"strip.png":"25b4c9ff2bafe056f3e28379db0ef3fb460c718b",
"icon.png":"8eaa0896db93f2165fa417df3d002ce9c61fcd92",
"logo.png":"e8c4edfbcae41d9d88fad7137d8ed30ae5f73e67",
"pass.json":"2a28092907dfbcb34c3f1559742824be4bef63b6"
}
Firma Digital
Hay que crear el sha1 que es lo que se incluye en la última línea, para ello usamos este comando
iMac:PassBook ricardo$ openssl sha1 pass.json
SHA1(pass.json)= 2a28092907dfbcb34c3f1559742824be4bef63b6
SHA1(pass.json)= 2a28092907dfbcb34c3f1559742824be4bef63b6
Creamos un certificado para passbook, lo instalamos en el Acceso a Llaveros y lo exportamos con el nombre Certificates.p12
Generamos el certificado passcertificate.pem usando el comando:
iMac:PassBook ricardo$ openssl pkcs12 -in Certificates.p12 -clcerts -nokeys -out passcertificate.pem -passin pass:YOURPASS
MAC verified OK
Generamos el certificado passcertificate.pem usando el comando:
iMac:PassBook ricardo$ openssl pkcs12 -in Certificates.p12 -clcerts -nokeys -out passcertificate.pem -passin pass:YOURPASS
MAC verified OK
Contenido de la carpeta hasta este momento:
iMac:PassBook ricardo$ ls
Certificates.p12 icon@2x.png logo@2x.png pass.json strip.png
icon.png logo.png manifest.json passcertificate.pem strip@2x.png
iMac:PassBook ricardo$ ls
Certificates.p12 icon@2x.png logo@2x.png pass.json strip.png
icon.png logo.png manifest.json passcertificate.pem strip@2x.png
Seguimos firmando
iMac:PassBook ricardo$ openssl pkcs12 -in Certificates.p12 -nocerts -out passkey.pem -passin pass:YOURPASS -passout pass:YOURPASS
MAC verified OK
iMac:PassBook ricardo$ openssl pkcs12 -in Certificates.p12 -nocerts -out passkey.pem -passin pass:YOURPASS -passout pass:YOURPASS
MAC verified OK
Y por último
iMac:PassBook ricardo$ openssl smime -binary -sign -certfile WWDR.pem -signer passcertificate.pem -inkey passkey.pem -in manifest.json -out signature -outform DER -passin pass:YOURPASS
iMac:PassBook ricardo$ openssl smime -binary -sign -certfile WWDR.pem -signer passcertificate.pem -inkey passkey.pem -in manifest.json -out signature -outform DER -passin pass:YOURPASS
Ahora tendremos el archivo signature dentro de nuestra carpeta.
Comprimimos los siguientes archivos:
iMac:PassBook ricardo$ zip -r test.pkpass manifest.json pass.json signature logo.png logo@2x.png icon.png icon@2x.png strip.png strip@2x.png
iMac:PassBook ricardo$ zip -r test.pkpass manifest.json pass.json signature logo.png logo@2x.png icon.png icon@2x.png strip.png strip@2x.png
Añadimos test.pkpass a nuestro proyecto
Source Code
Añadimos PassKit.framework
#import
@interface ConfirmationViewController () <PKAddPassesViewControllerDelegate>
{
NSMutableArray *_passes;
}
-(IBAction)viewPassBook:(id)sender{
if (!_passes)
_passes = [[NSMutableArray alloc] init];
[self openPassWithName:@"test.pkpass"];
}
-(void)openPassWithName:(NSString*)name{
NSString* passFile = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent: name];
NSData *passData = [NSData dataWithContentsOfFile:passFile];
NSError* error = nil;
PKPass *newPass = [[PKPass alloc] initWithData:passData error:&error];
if (error!=nil){
[[[UIAlertView alloc] initWithTitle:@"Passes error"
message:[error localizedDescription]
delegate:nil
cancelButtonTitle:@"Ooops"
otherButtonTitles: nil] show];
return;
}
PKAddPassesViewController *addController = [[PKAddPassesViewController alloc] initWithPass:newPass];
addController.delegate = self;
[self presentViewController:addController animated:YES completion:nil];
}
//Método delegado cuando se baja el controller
-(void)addPassesViewControllerDidFinish: (PKAddPassesViewController*) controller{
[self dismissViewControllerAnimated:YES completion:nil];
}
iOS: Passbook
Reviewed by Unknown
on
17:41
Rating:
No hay comentarios: