0

-replacePassWithPass:すでにあるパスとまったく同じパスを呼び出して渡すことにより、Passbookのパスを更新しようとしていPKPassLibraryます。メソッドはNO(置換に失敗しました)で戻ります-なぜですか?(ところで:私のデバイスのコンソールはiOSからのログを表示しません)

その場合、のドキュメント-replacePassWithPass:はあまり役に立ちません。

識別子とシリアル番号が一致するパスがライブラリにまだ存在しない場合、またはプロセスがパスにアクセスする資格がない場合、これは失敗します。

と:

パスが正常に置き換えられた場合はYES。それ以外の場合はNO。

私は両方の要件を満たします。

そのようにパスを置き換えることはできませんか?を使用-removePass:して追加する必要がありPKAddPassesViewControllerますか?

私のバックエンドはまだパスの更新をサポートしていないため、ここですべての可能性を確認することはできません(つまり、実際には同じtypeIDとserialNumberで更新されたパスを取得しますが、コンテンツは異なります)。あなたの経験は何ですか?

4

1 に答える 1

1

1つのパスのpassTypeIdentifierとシリアル番号が、別のパスのpassTypeIdentifierシリアル番号と等しい限り、これらは同じパスのインスタンスです。2つのパス間ですべてが同じである場合、それらは1つのパスの1つのインスタンスです。

PKPassLibraryにパスがある場合、最初のケースでは-replacePassWithPassが機能し、2番目のケースでは-removePassとPKAddPassesViewController使用してパスを追加し直します。

パスの更新は常に置き換えです。パスを正常に置き換えるには、基本的に3つの要件を満たす必要があります。

1)同じpassTypeIdentifierとserialNumberのパスがPKPassLibraryにすでに追加されている必要があります。

2)パスの新しいインスタンスには、古いパスと少なくとも1つの違いが必要です(同じままである必要があるpassTypeIndentifierとserialNumberを除く)。

3)アプリには、このpassTypeIdentifierを使用したパスの資格が必要です。

于 2012-12-26T21:56:49.243 に答える