”Local Notification” ローカル通知について
アプリケーションが実行中でなくても、ユーザーに対して情報、メッセージを通知する事が出来るシステムです。
iOS3.0から導入された"Push Notification"と出来る事はほぼ同等ですが、"Push Notification"リモート通知はサーバーを介して通知され、”Local Notification”ローカル通知は、アプリケーションによってスケジューリングされます。
#import "AppDelegate.h"
@implementation AppDelegate
// はじめての起動時に呼び出される
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
// iOS8 ローカル通知を動作させる許可を得る必要
if ([UIApplication
instancesRespondToSelector:@selector(registerUserNotificationSettings:)]) {
[[UIApplication sharedApplication]
registerUserNotificationSettings:[UIUserNotificationSettings
settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeSound
categories:nil]];
}
return YES;
}
// アプリが終了する場合
- (void)applicationWillResignActive:(UIApplication *)application
{
}
// アプリが非Activeになりバックグランド実行になった際に呼び出される
- (void)applicationDidEnterBackground:(UIApplication *)application
{
[[UIApplication sharedApplication] cancelAllLocalNotifications];
UILocalNotification *localNotif = [[UILocalNotification alloc] init];
localNotif.fireDate = [NSDate dateWithTimeInterval:10.0 sinceDate:[NSDate date]];
localNotif.timeZone = [NSTimeZone defaultTimeZone];
localNotif.alertBody = @"もとのアプリに戻りますか?";
localNotif.alertAction = @"OK";
localNotif.soundName = UILocalNotificationDefaultSoundName;
// バッジ表示
localNotif.applicationIconBadgeNumber = -1; // 1 -1で0に戻る
localNotif.userInfo = @{@"test": @YES};
[[UIApplication sharedApplication] scheduleLocalNotification:localNotif];
}
// アプリが2回目の起動の場合
- (void)applicationWillEnterForeground:(UIApplication *)application
{
}
// アプリがアクティブになった際に呼び出される
- (void)applicationDidBecomeActive:(UIApplication *)application
{
}
// システムからのアプリ終了の際に呼び出される
- (void)applicationWillTerminate:(UIApplication *)application
{
}
@end
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
/*
<各設定の説明>
fireDate:起動日時
timeZone:タイムゾーン
hasAction:アクションの有無
alertBody:アラートの内容
alertAction:ボタンのタイトル
soundName:サウンドネーム
applicationIconBadgeNumber:数字バッジの数
*/
// [ローカル通知]ボタンを押した時
- (IBAction)doNotification:(id)sender {
// 通知
UILocalNotification *notify = [[UILocalNotification alloc] init];
// 通知時刻 5秒
notify.fireDate = [NSDate dateWithTimeIntervalSinceNow:5];
// タイムゾーン
notify.timeZone = [NSTimeZone defaultTimeZone];
// アクションの有無
notify.hasAction = YES;
// アラートの内容
notify.alertBody = @"時間になりました";
// ボタンのタイトル
notify.alertAction = @"起動";
// サウンドネーム
notify.soundName = UILocalNotificationDefaultSoundName;
//スケジュールに追加登録します
[[UIApplication sharedApplication] scheduleLocalNotification:notify]; // 通知する
}
@end
GitHub LocalNotification
▫️参考ページ
コメントをお書きください