2012-12-24 21 views
6

Ich erstelle eine App, in der ich Pässe von der Passbook-App von iOS6 zu meiner App hinzufüge und zeige. Aber wenn ich eine Anwendung auf dem Simulator starte, zeigt es zusätzliche Pässe an, aber wenn ich dieselbe auf dem Gerät laufe, wird angezeigt, dass mein Sparbuch leer ist.Wie kann ich auf Pässe in meiner App zugreifen?

Ich habe iOS6 tutorial integrating passbook your applications Link zum Erstellen, Hinzufügen und Anzeigen von Pässen gefolgt.

für Pässe Ich habe folgenden Code Zugriff verwendet -

NSArray * passArray = [_passLib passes]; 
NSLog(@"number of passes in library are: %d",[passArray count]); 

//if more tha one pass in library, just use the first one. 
if ([passArray count] > 0) 
{ 

    for (int i = 0; i<[passArray count]; i++) 
    {  
    PKPass *onePass = [passArray objectAtIndex:i]; 

    //access general fieldnames 
    NSLog(@"%@",[onePass localizedName]); 
    NSLog(@"%@",[onePass organizationName]); 

    //access a specific field name 
    NSLog(@"%@",[onePass localizedValueForFieldKey:@"rewards"]);  
    } 
} 

Müssen wir Änderungen vornehmen, wenn wir App auf dem Gerät laufen Sparbuch Integration zu unterstützen?

Antwort

6

Erstellen Sie AppId, die PassTypeIdentifier ähnelt. Beispiel: Wenn passTypeIdentifier pass.abc.xyz lautet, muss Ihre AppId com.abc.xyz sein. Wenn Sie ein Bereitstellungsprofil erstellen, verwenden Sie diese appId und verwenden Sie dieses Bereitstellungsprofil für Ihre App. Dann können nur Sie die in Ihrem Sparbuch verfügbaren Pässe unterscheiden.

+0

Ich habe das gleiche getan, immer noch nicht funktioniert –

+1

Perfekte Antwort .. –

3

Wenn Sie eine App auf dem Simulator ausführen, ignoriert es im Grunde passTypeIdentifier die Pässe innerhalb der Passbook App wurden mit erstellt. Wenn die Passbook-App im Simulator mindestens einen Pass enthält, wird sie in Ihrer App angezeigt.

Auf der anderen Seite, die auf dem Gerät PKPassLibrary nur mit den Pässen zu initialisieren, die mit passTypeIdentifier ‚s gleich denen, die Sie in Ihrem Bereitstellungsprofil haben erstellt wurden und in der App-Berechtigung einrichten. Genau genommen - nur mit Pässen, die du besitzt.

Beachten Sie, dass die App-ID, unter der Sie Ihren Code signieren, für Passes auf dem Provisioning-Portal aktivieren soll.

+0

Danke für Ihre Antwort. Trotzdem kann ich das Problem nicht lösen. Ich bekomme nicht, was genau bedeutet - "Passes, die mit PassTypeIdentifier gleich denen in Ihrem Provisioning-Profil erstellt wurden". Kannst du das bitte im Detail erzählen? – Trup

+0

Hallo, zuallererst können Sie nicht auf Pässe zugreifen, die unter anderen Entwicklerkonten erstellt wurden. Nur Pässe, die von Ihnen erstellt wurden, sind auf dem Gerät mit PKPassLibrary-Methoden verfügbar. Außerdem sollten die Bereitstellungsprofile (sowohl dev als auch ad-hoc) mit der App-ID erstellt werden, die in ihrem Namen kein '*' hat. –

Verwandte Themen