私はSwift 3.0を使用しており、アプリにバッジ番号を追加しようとしています。これを行う正しい方法は、以下のものと同様です。
application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: UIUserNotificationType.Sound | UIUserNotificationType.Alert |
UIUserNotificationType.Badge, categories: nil
))
application.applicationIconBadgeNumber = 5
ただし、「|」を使用するとエラーが発生します最初にUIUserNotificationType.badge
しかない場合、UIUserNotificationSettings
に対してUIUserNotificationSettings
ブロックでエラー「引数ラベル(forTypes、カテゴリ)が利用可能なオーバーロードのいずれにも一致しません」を受け取ります。引数。 Swift 3.0はこのステートメントの構文を変更しましたか?
Swift 2とSwift 3.の両方で更新されました。この行で問題が修正されるはずです。また、UIUserNotificationTypeを持つ他の行で変数が切り替えられていることを確認してください小文字に。
let settings = UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
私の理解から、UIUserNotificationSettings
はiOS 10.0で非推奨になりました。 UNUserNotificationCenter
を使用することをお勧めします。
これが私のコードが最新であることを確認するために私がしたことです:
1)UserNotifications
フレームワークをAppDelegate
にインポートします
import UserNotifications
2)didFinishLaunchingWithOptions
内のAppDelegate
関数内に、以下を追加します。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
UNUserNotificationCenter.current().requestAuthorization(options:[.badge, .alert, .sound]) { (granted, error) in
if granted {
UIApplication.shared.registerForRemoteNotifications()
}
}
return true
}
通知を登録して許可したら、いつでもバッジ番号を変更できます。
UIApplication.shared.applicationIconBadgeNumber = value
これは私にとってはうまくいきました、私は私の電話にリモート通知を送信することによってそれをテストしました、そしてそれはうまくいきました。お役に立てれば。
「rawValue」で使用できます|オペレーター。
このコードはSwift3で機能しますが、その必要はありません。
let types = UIUserNotificationType(rawValue:UIUserNotificationType.alert.rawValue | UIUserNotificationType.sound.rawValue | UIUserNotificationType.badge.rawValue)
application.registerUserNotificationSettings(UIUserNotificationSettings(types: types, categories: nil))