[解決済み] iOS 8でUILocalNotificationsを受け取るためにユーザーの許可を得ること
質問
App Delegateでローカル通知を設定しています。
- (void)applicationDidEnterBackground:(UIApplication *)application
{
UILocalNotification *notification = [[UILocalNotification alloc]init];
[notification setAlertBody:@"Watch the Latest Episode of CCA-TV"];
[notification setFireDate:[NSDate dateWithTimeIntervalSinceNow:5]];
[notification setTimeZone:[NSTimeZone defaultTimeZone]];
[application setScheduledLocalNotifications:[NSArray arrayWithObject:notification]];
}
アプリを実行してから終了すると、次のようなエラーが表示されます。
2014-06-07 11:14:16.663 cca-tv[735:149070] です。 ローカル通知のスケジュールを試行中 {fire date = 2014年6月7日土曜日 11:14:21 太平洋夏時間, time zone = America/Los_Angeles (PDT) offset -25200 (Daylight), repeat interval = 0, repeat count = UILocalNotificationInfiniteRepeatCount, 次の火災の日付 = 土曜日、6月7日、2014 11:14:21 太平洋夏時間で 時刻, ユーザー情報 = (null)}. アラートを表示する許可をユーザーから得ていない 警告を表示する許可をユーザから得ていない
アラートを表示するために必要な権限を取得するにはどうすればよいですか?
どのように解決するのですか?
iOS 8以降、アプリから通知を表示するにはユーザーの許可を得る必要があり、これはリモート/プッシュとローカル通知の両方に適用されます。Swift では、次のようにすることができます。
Swift 2.0へのアップデート
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: NSDictionary?) -> Bool {
// Override point for customization after application launch.
if(UIApplication.instancesRespondToSelector(Selector("registerUserNotificationSettings:")))
{
let notificationCategory:UIMutableUserNotificationCategory = UIMutableUserNotificationCategory()
notificationCategory.identifier = "INVITE_CATEGORY"
notificationCategory.setActions([replyAction], forContext: UIUserNotificationActionContext.Default)
//registerting for the notification.
application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes:[.Sound, .Alert, .Badge], categories: nil))
}
else
{
//do iOS 7 stuff, which is pretty much nothing for local notifications.
}
return true
}
Swift 3.2
if(UIApplication.instancesRespond(to: #selector(UIApplication.registerUserNotificationSettings(_:)))){
let notificationCategory:UIMutableUserNotificationCategory = UIMutableUserNotificationCategory()
notificationCategory.identifier = "INVITE_CATEGORY"
notificationCategory.setActions([replyAction], forContext: UIUserNotificationActionContext.Default)
//registerting for the notification.
application.registerUserNotificationSettings(UIUserNotificationSettings(types:[.sound, .alert, .badge], categories: nil))
}
else{
//do iOS 7 stuff, which is pretty much nothing for local notifications.
}
Objective Cの文法も非常によく似ています。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
if ([UIApplication instancesRespondToSelector:@selector(registerUserNotificationSettings:)]){
[application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]];
}
// Override point for customization after application launch.
return YES;
}
現在登録されている通知の種類を確認するには、UIApplicationクラスのメソッドを使用します。
- (UIUserNotificationSettings *)currentUserNotificationSettings
もしユーザーがアプリに「No」と言ったのであれば、この関数は型がない設定を返すべきです。
私はこれについてのチュートリアルを書きました。 ここで .
関連
-
XCode のコンパイル例外を解決する clang: error: linker command failed with exit code 1
-
[解決済み] iOSまたはmacOSで、インターネット接続が有効かどうかを確認するにはどうすればよいですか?
-
[解決済み] Xcode 7のエラーです。"Missing iOS Distribution signing identity for ..." (iOS配布用署名IDがありません)
-
[解決済み] UINavigationBarの1px下の行を非表示にする方法
-
[解決済み] iOS - UITextFieldの外側をタッチするとキーボードが外れる。
-
[解決済み] NSOperationとGrand Central Dispatchの比較
-
[解決済み] アプリのプレビュー用にiOSシミュレータのビデオをキャプチャー
-
[解決済み] iPadマルチタスクのサポートには、これらの方向が必要です。
-
[解決済み] UITableView - トップにスクロールする
-
[解決済み] Swiftのプロトコルでオプションのメソッドを定義するには?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
iOSコンパイルポッドでエラー CocoaPods could not find compatible versions for pod "XXXXX" が報告される。
-
JenkinsがIOSを自動パッケージングしてモミを配布
-
[解決済み] フレームワークを使用したiOSアプリがデバイス上でクラッシュ、dyld: ライブラリがロードされない、Xcode 6 Beta
-
[解決済み] iPhone UITextField - プレースホルダーの文字色を変更する
-
[解決済み] IBOutletsはARCのもとで強くなるべきか、弱くなるべきか?
-
[解決済み] UIDevice uniqueIdentifierは非推奨 - どうしたらいいの?
-
[解決済み] テキストフィールドを移動する方法(次へボタン/完了ボタン)
-
[解決済み] UIViewの左上と右上だけにcornerRadiusを設定する方法は?
-
[解決済み] UILabelで複数行のテキストを表示する
-
[解決済み] コア・データ エンティティの全インスタンスを削除する最短の方法