web-dev-qa-db-ja.com

1回のプッシュで2回表示されるiOSプッシュ通知バナー

プッシュ通知を送信すると、次の動作が発生することに気付きました。

Push Banner is shown twice?

少し遅れて、バナーが2度目に表示される様子をご覧ください。

最初は、バックエンドが誤って2つのプッシュ通知を次々と送信していると思いました。

ただし、これは、単一のプッシュ通知に対するデフォルトのiOS動作のようです。バナーが表示され、すぐに「再表示」されます。これにより、gifに表示されるこの不安定なUIが生成されます。バナーが2回受信されているようです。

IOS 9.0.2を使用してテスト済み。

プッシュ通知を送信する他のアプリからこの動作を見たことを覚えていません。バナーが2回表示されるような間違ったことをしていますか?

レーダー:

エンジニアリングは、バグレポート(23133694)が別の問題(23130766)の複製であり、クローズされると判断しました。

42
pkamb

同様の質問に関する この回答 によると、この問題はrdar:// 23569779として報告されており、iOS 9.3パブリックリリースで修正する必要があります。

iOS 9.3以降でこの問題を再現する場合は、コメントを残してください

おそらく次の場所で修正されました:

iOS 9.2.1ベータ(ビルド:13D11)

0
pkamb

私は同じ問題を経験していましたが、デバッグしようとして数え切れないほどの時間を経て、registerUserNotificationSettings(settings)を_didFinishLaunchingWithOptions:_で2回呼び出していることに気付きました。同じことをしていないことを確認してください

32
RukyO

すべてのセットアップを正しく行っていますか?
より多くのコードを提供すると、バグを見つけやすくなります。 これは間違いなくiOSのバグではありません。


サーバー通知に問題がある場合の基本的な確認事項:

1。プロビジョニングプロファイルを確認し、未使用の証明書をすべてクリーンアップします。
2。サーバー構成が正常であることを確認してください。繰り返しますが、完全な回答を得るにはさらに詳細が必要です。

3

バージョンios 9.3.3およびios 9.2で使用していた2つのデバイスでこの問題が発生しました。しかし、この問題はiOS 8.2を実行しているデバイスとiOS 10を実行しているデバイス(10.3でテスト済み)では発生していませんでした

新規インストールのたびに、9.3.3および9.2のデバイスで問題が発生しました。しかし、デバイスを再起動すると問題は解決したようです。これは解決策ではありませんが、お客様に提案することはできます。

システムのコンソールログで、これが発生したときに「SBBannerButtonViewControllerの外観の遷移を開始/終了するための不均衡な呼び出し」メッセージが表示されました。

これは、9.xバージョンの一部のデバイスでは問題のようで、iOS 10.0以降を実行しているデバイスでは正常に動作するはずです。

3
Swasidhant

ここで間違った答えが受け入れられると思います(これがParseからOneSignalへの移行に関する場合)。 OneSignalの場合、これに対する適切な解決策はないようです。誰かが持っている場合、私は解決策も探しています。これに対する唯一の回避策は、電話を再起動することでした。

しかし、その奇妙な。すべてのユーザーにデバイスの再起動を依頼することはできません。

2
Bhumi Goklani

データベースを使用してデバイスIDを保存していますか?

はいの場合、デバイスIDを2回保存することができます。

2
Nasir Munda

IOS 9.3.1で同じ問題に直面していました

私たちは通知を管理するために都市の飛行船を使用し、これが私たちのセットアップでした

let config = UAConfig.default()

UAirship.setLogging(false)
UAirship.takeOff(config)
UAirship.Push().userPushNotificationsEnabled = true
UAirship.Push().notificationOptions = [.alert, .badge, .sound]
UAirship.Push().backgroundPushNotificationsEnabled = false
UAirship.Push().pushNotificationDelegate = self

多くの試みの後、次の行を削除するだけで機能しました!

UAirship.Push().notificationOptions = [.alert, .badge, .sound]

これが誰かの助けになることを願っています。

1
Melvin John

この回答は元の投稿から数年後であることを知っていますが、万が一の場合に役立ちます...

私の場合、CloudKit通知を使用していて、同じレコードタイプを追跡する2つのサブスクリプションを誤って作成していました。

1
mlecoz