6

iOS6の通帳アプリから自分のアプリにパスを追加して表示するアプリを作成しています。しかし、シミュレーターでアプリケーションを実行すると、追加されたパスが表示されますが、デバイスで同じように実行すると、通帳が空であることが示されます。

パスを作成、追加、表示するためのパスブックとアプリケーションのリンクを統合する iOS6 チュートリアルに従いました。

パスにアクセスするために、次のコードを使用しました-

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"]);    
    }
}

通帳の統合をサポートするためにデバイスでアプリを実行する場合、変更を加える必要はありますか?

4

2 に答える 2

8

passTypeIdentifierに似たAppIdを作成します。たとえば、passTypeIdentifierがpass.abc.xyzの場合、AppIdはcom.abc.xyzである必要があります。プロビジョニングプロファイルを作成するときは、このappIdを使用し、アプリにこのプロビジョニングプロファイルを使用します。そうすれば、あなただけがあなたの通帳で利用可能なパスを区別することができます。

于 2013-01-25T05:21:10.647 に答える
4

シミュレーターでアプリを実行している場合、Passbookアプリ内のパスが作成されたpassTypeIdentifierは基本的に無視されます。したがって、シミュレーターのPassbookアプリに少なくとも1つのパスがある場合、それはアプリに表示されます。

一方、デバイスPKPassLibraryでは、プロビジョニングプロファイルにあり、アプリのエンタイトルメントに設定されているものと同じpassTypeIdentifierで作成されたパスのみで初期化されます。厳密に言えば、あなたが所有するパスでのみ。

コードに署名する際のアプリIDは、プロビジョニングポータルでもパスに対して有効にする必要があることに注意してください。

于 2012-12-24T22:33:43.063 に答える