通帳にパスが追加されたときに通知を受け取ろうとしているだけです。
注意すべきことの 1 つは、アプリが使用しているものとは異なる Apple dev アカウントを使用して生成したパスも使用しようとしていることです。それが問題の一部であるかどうかを把握しようとしています。
これは 3 タブ アプリケーションの 1 つの VC です。
ViewController.m:
@interface ViewController ()
{
PKPassLibrary *_passLibrary;
NSArray *_passes;
}
@end
"viewDidLoad":
- (void)viewDidLoad
{
//init passbook
_passLibrary = [[PKPassLibrary alloc] init];
_passes = [_passLibrary passes];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(passLibraryDidChange:) name:PKPassLibraryDidChangeNotification object:_passLibrary];
}
そして私の通知ハンドラ:
- (void)passLibraryDidChange:(NSNotification *)notification
{
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"%@", @"passes added");
});
}
iOS シミュレーターでアプリを実行すると、すべてが期待どおりに動作し、Xcode のコンソールにログ出力が表示されます。
デバイスで実行すると、パスが追加されたときに通知が呼び出されません。デバイスでは、パスをリストすることさえできません。
さらに奇妙なのは、通帳からパスを削除してアプリに再度入ると、通知が呼び出されることです。
ps:ここに欠けているのは単純なものであることを本当に願っています。
EDIT:より多くの情報とより完全なコードサンプルで更新