您的位置:首页 > 移动开发 > IOS开发

iOS的本地消息推送。

2016-03-02 13:31 393 查看
////////////////****创建一个本地通知******///////////////

//取消掉之前的所有通知

[[UIApplication
sharedApplication] cancelAllLocalNotifications];

// 创建一个本地推送

UILocalNotification *notification = [[UILocalNotification
alloc]
init];

//设置10秒之后

NSDate *pushDate = [NSDate
dateWithTimeIntervalSinceNow:10];

if (notification !=
nil) {

//
设置推送时间

notification.fireDate = pushDate;

// 设置时区

notification.timeZone = [NSTimeZone
defaultTimeZone];

//
设置重复间隔

notification.repeatInterval =
kCFCalendarUnitMinute;

// 推送声音

notification.soundName =
UILocalNotificationDefaultSoundName;

// 推送内容

notification.alertBody =
@"推送内容";

notification.alertBody =
@"Wake up, man";

notification.alertAction =
NSLocalizedString(@"起床了",
nil);

//显示在icon上的红色圈中的数子

notification.applicationIconBadgeNumber +=
1;

//设置userinfo
方便在之后需要撤销的时候使用

NSDictionary *info = [NSDictionary
dictionaryWithObject:@"name"forKey:@"key"];

notification.userInfo = info;

//添加推送到UIApplication

UIApplication *app = [UIApplication
sharedApplication];

[app scheduleLocalNotification:notification];

}

////////////////****取消本地通知*****///////////////

//取消掉通知

UIApplication *app = [UIApplication
sharedApplication];

//获取本地推送数组

NSArray *localArray = [app
scheduledLocalNotifications];

//声明本地通知对象

UILocalNotification *localNotification;

if (localArray) {

for (UILocalNotification *noti
in localArray) {

NSDictionary *dict = noti.userInfo;

if (dict) {

NSString *inKey = [dict
objectForKey:@"key"];

if ([inKey
isEqualToString:@"name"]) {

if (localNotification){

localNotification = nil;

}

localNotification = noti;

break;

}

}

}

//判断是否找到已经存在的相同key的推送

if (!localNotification) {

//不存在初始化

localNotification = [[UILocalNotification
alloc] init];

}

if (localNotification) {

//不推送
取消推送

[app cancelLocalNotification:localNotification];

return;

}

}
////////////////*****8.0以上需要添加,授权才会弹出*****///////////////

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

// 处理iOS8本地推送不能收到的问题

float sysVersion=[[UIDevice
currentDevice]systemVersion].floatValue;

if (sysVersion>=8.0) {

UIUserNotificationType type=UIUserNotificationTypeBadge |
UIUserNotificationTypeAlert | UIUserNotificationTypeSound;

UIUserNotificationSettings *setting=[UIUserNotificationSettings
settingsForTypes:type
categories:nil];

[[UIApplication
sharedApplication]registerUserNotificationSettings:setting];

}
}

////////////////*****进入app后走的地方*****///////////////

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification*)notification{

UIAlertView *alert = [[UIAlertView
alloc] initWithTitle:@"iWeibo"
message:notification.alertBody
delegate:nil
cancelButtonTitle:@"确定"
otherButtonTitles:nil];

[alert show];

//
图标上的数字减1

application.applicationIconBadgeNumber -=
1;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: