[解決済み] アプリが開いていてフォアグラウンドの時にiOS純正の通知バナーを表示させる?
質問
Apple の公式 iOS メッセージ アプリが開いていてフォアグラウンドにある場合、他の連絡先からの新しいメッセージは、iOS のネイティブの通知アラート バナーをトリガーします。以下の画像を参照してください。
これは、App Store のサードパーティ製アプリで可能ですか? アプリのローカルおよび/またはプッシュ通知の間に、アプリが 開いていてフォアグラウンドにいるとき ?
テストするとき 私のアプリ の場合、通知は受信されますが iOSのアラートUIが表示されない .
しかし、この動作は は は、Apple の公式メッセージ アプリで確認できます。
この ローカルおよびリモート通知プログラミングガイド には、こう書かれています。
オペレーティング システムがローカル通知またはリモート通知を配信し、対象アプリが フォアグラウンドで動作していない である場合、その通知は アラート アイコン、バッジ番号、または音によってユーザーに通知することができます。
もしアプリが フォアグラウンド で動作している場合、アプリデリゲートはローカルまたはリモートの通知を受け取ります。
そうです、受信できるのは 通知データ を受け取ることができます。しかし、私は iOS のネイティブの通知アラート UI を表示する .
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
// I know we still receive the notification `userInfo` payload in the foreground.
// This question is about displaying the stock iOS notification alert UI.
// Yes, one *could* use a 3rd party toast alert framework.
[self use3rdPartyToastAlertFrameworkFromGithub]
}
では、MessagesはプライベートAPIを使って、フォアグラウンドにいる間にアラートを表示しているのでしょうか?
この質問の目的のために サードパーティの "トースト" ポップアップ警告を提案しないでください。 を提案しないでください。私は、これが を使用して実行できる場合にのみ興味があります。 純正、ネイティブのiOS ローカルまたはプッシュ通知のアラートUI アプリケーションが開いている間、フォアグラウンドで .
どのように解決するのですか?
iOS 10
は
UNUserNotificationCenterDelegate
プロトコルを追加し、アプリがフォアグラウンドにあるときに通知を処理します。
は
UNUserNotificationCenterDelegate
プロトコルは、通知を受け取り、アクションを処理するためのメソッドを定義しています。アプリがフォアグラウンドにある場合、到着した通知はシステムインターフェースを用いて自動的に表示されるのではなく、デリゲートオブジェクトに配信されます。
Swiftです。
optional func userNotificationCenter(_ center: UNUserNotificationCenter,
willPresent notification: UNNotification,
withCompletionHandler completionHandler: (UNNotificationPresentationOptions) -> Void)
Objective-Cです。
- (void)userNotificationCenter:(UNUserNotificationCenter *)center
willPresentNotification:(UNNotification *)notification
withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler;
この
UNNotificationPresentationOptions
フラグを使用すると
UNNotificationPresentationOptionAlert
を指定して、通知によって提供されるテキストを使用してアラートを表示することができます。
を表示することができるので、これは重要です。 アプリが開いている間、フォアグラウンドで これはiOS 10の新機能です。
サンプルコードです。
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Set UNUserNotificationCenterDelegate
UNUserNotificationCenter.current().delegate = self
return true
}
}
// Conform to UNUserNotificationCenterDelegate
extension AppDelegate: UNUserNotificationCenterDelegate {
func userNotificationCenter(_ center: UNUserNotificationCenter,
willPresent notification: UNNotification,
withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void)
{
completionHandler(.alert)
}
}
関連
-
[解決済み] iOSシミュレータでスクリーンショットを撮る
-
[解決済み] NSOperationとGrand Central Dispatchの比較
-
[解決済み] SwiftでiOSキーボードを任意の場所でタッチして閉じる
-
[解決済み] iOSとWatchKitで画像のtintColorを変更する方法
-
[解決済み] Swiftの配列を文字列に変換するには?
-
[解決済み] iOSアプリをApple Developer Programや脱獄せずにデバイス上でテストすることができます。
-
[解決済み】iOSアプリの名前を変更する方法は?
-
[解決済み】iOSは、ユーザーによって強制終了されたアプリをバックグラウンドで起動するのでしょうか?
-
[解決済み】アプリをフォアグラウンドにした状態でプッシュ通知を受ける iOS
-
[解決済み] iOSのプッシュ通知:アプリがバックグラウンドにあるときにユーザーが通知をタップしたかどうかを検出する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
libc++abi.dylib が NSException 型の捕捉できない例外で終了する理由 エラー
-
[エラー処理】iOSのエラー、アーキテクチャx86_64の未定義シンボルについて
-
dyld: ライブラリがロードされていません。エラーの解決
-
JenkinsがIOSを自動パッケージングしてモミを配布
-
[解決済み] iOSまたはmacOSで、インターネット接続が有効かどうかを確認するにはどうすればよいですか?
-
[解決済み] 奇妙な不要なXcodeログを隠す
-
[解決済み] iOSシミュレータでスクリーンショットを撮る
-
[解決済み] iOSとWatchKitで画像のtintColorを変更する方法
-
[解決済み] iOS 7でステータスバーとナビゲーションバーがビューの境界を越えて表示される
-
[解決済み】アプリをフォアグラウンドにした状態でプッシュ通知を受ける iOS