1

Pushpad.xyz ライブラリを使用していて、Chrome 通知が機能するようになりました。Firefox では、pushpad('unsupported', callbackFunction) を呼び出し、callbackFunction が正常に実行されます (Firefox がサポートされている必要があるため、個別に把握している別のバグ)。ただし、Safari 通知を機能させることができません。https://pushpad.xyz/docs/pushpad_pro_requirementsで要求されているように、Apple 開発者の証明書を入力しました。

pushpad('init', projectID);
pushpad('uid', signature);
pushpad('subscribe', function(isSubscribed) { alert(isSubscribed); });

pushpad('unsupported', function() { alert('Unsupported browser'); });

Safari では、unsupported へのコールバックが得られず、ドキュメントには Safari がサポートされていると書かれています。ユーザー (私) がこの Web サイトの通知をブロックしたと表示されるのはなぜですか? 「ステータス」へのコールバックは常に false を返します。Apple 証明書が正しく設定されていることを確認する方法はありますか? ありがとう!

4

1 に答える 1

0

Safari の問題は、間違いなくプッシュ パッケージのダウンロードとその署名に関連しています。

pushpad('subscribe')呼び出されると、Safari は Pushpad サーバーから「プッシュ パッケージ」をダウンロードしようとし、その整合性と署名を検証します。エラーが発生した場合 (署名の検証に失敗した場合など)、ユーザーは許可を求められず、許可も求められませんgranted(値は のままですdefault)。

そのため、ユーザーが許可を与えていないという奇妙なメッセージが表示されます。実際、あなたの場合、通知をブロックしているのはユーザーではありません。プッシュ パッケージが無効であるため、プッシュ通知の購読を拒否するのは Safari です。

Pushpad の送信者の設定で APNS 秘密鍵と APNS 証明書を再度生成して修正してください。これで問題は解決するはずです。

APNS については、こちらで説明されている手順に正確に従ってください: https://pushpad.xyz/docs/pushpad_pro_requirements

Web サイトをローカルでテストする場合は、 「ローカルでの作業」セクションで説明されている手順に従ってください。

  • hostnameオプションを渡すinit
  • アドレスが正確にhttp://localhostであることを確認してください (たとえば、 http: //127.0.0.1を使用すると、 Safari はローカルで動作しません) 。
于 2016-06-18T09:33:32.073 に答える