APNS
についてもう1つ疑問があります。これは、アプリが最初に起動したときに、アプリがAppleプッシュ通知の許可を要求するときです。ユーザーが通知を受信できることを承認した場合、通知を受信できます。ユーザーがキャンセルした場合、通知を受信できません。クリアしますか? ??
今私の疑問は、
数日後にユーザーがアプリからプッシュ通知サービスをキャンセルした場合(Cancel
ボタンをクリックした)、最初に受け取りたい場合Appleプッシュ通知を有効にすることができます。 Appleアプリから特定のユーザーにもう一度通知をプッシュします。
ユーザーがAppleプッシュ通知サービスを最初に受け入れ、数日後に通知を受け取りたくない場合は、アプリでAPNS
を無効にできますか?私の疑問を理解していただければ幸いです。この疑問を明確にしていただけませんか?
これらの上記のシナリオをiPhoneアプリで実行することは可能ですか?
私を助けてください。前もって感謝します。
残念ながら、アプリのコードからアプリのプッシュ通知を有効または無効にすることはできません。許可を求めるダイアログは一度だけ表示されます。通常、他のアプリは、[設定]-> [通知]-> [アプリ名]に移動して、プッシュ通知を有効または無効にする指示をユーザーに表示します。
UIRemoteNotificationType enabledTypes = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
を使用してアプリの権限を読み取り、さまざまなタイプでビット単位の操作を実行して、どのタイプが有効になっているかを確認できます。 unregisterForRemoteNotifications
を呼び出して通知を無効にすることもできます。ユーザーに指示することはできますが、通知をオンにすることはできません。
私の要件は、UISwitch
を使用してpushnotificatonを有効および無効にすることでした。コードからのプッシュ通知を有効にするボタンアクション内でこれを使用します。
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
無効にするために
[[UIApplication sharedApplication] unregisterForRemoteNotifications];
NSLog(@"UnRegistered for pushnotification");
IPhoneのデバイストークンを初めてAPNサーバーに登録すると、プッシュ通知を受け取ることができます。後で、デバイス設定→通知→アプリから有効/無効にできます。
1.アプリからいいえいいえ、それはユーザーがアプリをインストールした後初めてアプリを開いたときに表示されます..その場合、彼はそれを許可することを決定し、デバイス設定からアクティブ化できます。
2.それはアプリと設定から行うことができます。アプリからそれを無効にしたい場合は、サーバートークン(プッシュ通知を無効にすることに決めた人)をサーバーに送信し、exに保存できます。 「通知リストなし」として、ペイロードを送信するときにこれらのトークンを無視して、通知を受信しないようにします。
3.私はすでに答えました。
幸運を。
実際には、プッシュ通知を登録および登録解除することにより、プッシュ通知を有効および無効にすることができます。
プッシュ通知を有効にする:
if #available(iOS 10.0, *) {
// For iOS 10.0 +
let center = UNUserNotificationCenter.current()
center.delegate = self
center.requestAuthorization(options: [.sound, .alert, .badge]) { (granted, error) in
if error == nil{
DispatchQueue.main.async(execute: {
UIApplication.shared.registerForRemoteNotifications()
})
}
}
}else{
// Below iOS 10.0
let settings = UIUserNotificationSettings(types: [.sound, .alert, .badge], categories: nil)
UIApplication.shared.registerUserNotificationSettings(settings)
//or
//UIApplication.shared.registerForRemoteNotifications()
}
デリゲートメソッド
@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {
}
@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
}
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
// .. Receipt of device token
}
func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) {
// handle error
}
プッシュ通知を無効にする:
UIApplication.shared.unregisterForRemoteNotifications()
このコードを使用して、iOS 9でサポートを提供できます
if ([[UIApplication sharedApplication] respondsToSelector:@selector(currentUserNotificationSettings)]) {
UIUserNotificationType types = [[[UIApplication sharedApplication] currentUserNotificationSettings] types];
if (types == UIUserNotificationTypeNone) {
// Do something
NSLog(@"");
}
} else {
UIRemoteNotificationType types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
if (types == UIRemoteNotificationTypeNone) {
// Do something
NSLog(@"");
}
}
参照 iOS 8ではサポートされていないため、enabledRemoteNotificationTypesを使用してコードを更新する方法?