TabBarControllerに[通知]タブがあり、アプリのバッジ数と同じバッジ数を表示したいと思います。アプリがフォアグラウンドにある場合を除いて、すべてのシナリオで機能します。
これを行うために、UIApplicationWillEnterForeground通知に登録し、[通知]タブのバッジをアプリのバッジと等しくなるように設定するTabBarControllerのカスタムクラスを作成しました。これはOnLoad()関数でも行います。
アプリがすでにフォアグラウンドにある場合、通知タブのバッジを更新するにはどうすればよいですか?AppDelegate関数で通知をキャプチャします。
application(_:didReceiveRemoteNotification:fetchCompletionHandler:)
私は知っているかもしれタブバーコントローラを見つけることrootViewControllerを周りに掘ることができますが、私のルートコントローラは、私のエントリポイントである小切手のアプリにユーザーがいずれかのログイン・ビュー・コントローラにキーチェーンとseguesにトークンのログインを持っている場合か、タブバーコントローラー。それで、それがセグエであることを考えると、これがオプションであるかどうかはわかりませんか?
UIApplicationWillEnterForegroundの通知を登録するのと同じように、UIを「プッシュ通知」通知に登録することはできますか?これは理想的ですが、私はそのような通知を見つけることができませんでした。
アドバイスやヒントをいただければ幸いです。
ポストからの通知didReceiveRemoteNotification
でAppDelegate
、カスタムにオブザーバーを追加しTabBarController
、以下のようなUIを聞いて、更新します、
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
return true
}
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) {
NotificationCenter.default.post(Notification(name: Notification.Name("didReceiveNotification")))
}
}
class TabBarController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
NotificationCenter.default.addObserver(
self,
selector: #selector(updateBadgeCount),
name: Notification.Name(rawValue: "didReceiveNotification"),
object: nil
)
}
@objc private func updateBadgeCount() {
// Update badge count
}
deinit {
NotificationCenter.default.removeObserver(self)
}
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加