#define UMSYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
#define _IPHONE80_ 80000
#define WSDeviceToken @"WSDeviceToken" // 设备token
// 注册远程通知
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= _IPHONE80_
if(UMSYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"8.0"))
{
//register remoteNotification types
UIMutableUserNotificationAction *action1 = [[UIMutableUserNotificationAction alloc] init];
action1.identifier = @"action1_identifier";
action1.title=@"确定";
action1.activationMode = UIUserNotificationActivationModeForeground;//当点击的时候启动程序
UIMutableUserNotificationAction *action2 = [[UIMutableUserNotificationAction alloc] init]; //第二按钮
action2.identifier = @"action2_identifier";
action2.title=@"取消";
action2.activationMode = UIUserNotificationActivationModeBackground;//当点击的时候不启动程序,在后台处理
action2.authenticationRequired = YES;//需要解锁才能处理,如果action.activationMode = UIUserNotificationActivationModeForeground;则这个属性被忽略;
action2.destructive = YES;
UIMutableUserNotificationCategory *categorys = [[UIMutableUserNotificationCategory alloc] init];
categorys.identifier = @"category1";//这组动作的唯一标示
[categorys setActions:@[action1,action2] forContext:(UIUserNotificationActionContextDefault)];
UIUserNotificationSettings *userSettings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge|UIUserNotificationTypeSound|UIUserNotificationTypeAlert
categories:[NSSet setWithObject:categorys]];
[UMessage registerRemoteNotificationAndUserNotificationSettings:userSettings];
} else{
//register remoteNotification types
[UMessage registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge
|UIRemoteNotificationTypeSound
|UIRemoteNotificationTypeAlert];
}
#else
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 点击推送进入app
NSDictionary* remoteNotification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
// 点击通知启动时有远程通知,点击app图标启动时没有远程通知
if (remoteNotification) {
NSDictionary *aps = [remoteNotification objectForKey:@"aps"];
NSString *alert = [aps objectForKey:@"alert"];
}
}
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
NSString *nweToken = [[[[deviceToken description] stringByReplacingOccurrencesOfString: @"<" withString: @""]
stringByReplacingOccurrencesOfString: @">" withString: @""]
stringByReplacingOccurrencesOfString: @" " withString: @""];
NSLog(@"%@", nweToken);
NSString *token = [USER_DEFAULT objectForKey:WSDeviceToken];
if (!token || ![token isEqualToString:nweToken]) {
// 保存token至服务器
}
}
// 收到远程通知
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
NSDictionary *aps = [userInfo objectForKey:@"aps"];
NSString *alert = [aps objectForKey:@"alert"];
DLog(@"通知内容:%@", alert);
DLog(@"收到推送消息:%@", userInfo);
UIApplicationState state = [UIApplication sharedApplication].applicationState;
switch (state) {
// app正在前端运行
case UIApplicationStateActive:
{
DLog(@"app active时可以回调此方法,但是手机通知栏没有通知跟声音");
}
break;
case UIApplicationStateBackground:
{
DLog(@"UIApplicationStateBackground");
}
break;
// app 在后台运行时点击远程通知
case UIApplicationStateInactive:
{
DLog(@"点击通知图标 时点通知启动");
}
break;
default:
break;
}
}
相关推荐
AJNotificationView, iOS通知组件 AJNotificationViewiOS的通知组件不需要图像,所有CoreGraphics代码适用于iPhone和 iPad ( 分辨率独立)动画 background 类型一次只显示一个通知。 创建通知时,该通知将添加到队
ios 模拟通知实现原理
iOS通知中心操作iOSiOSiOSiOSiOS NotificationCenter NotificationCenter
IOS滚动文本通知
通过ANCS协议获取IOS的通知栏消息并且可拿到消息的详细内容,蓝牙平台CC2541 通过ANCS协议获取IOS通知栏通知及内容,将压缩包解压放到你安装的蓝牙协议栈里BLE-CC254x-1.3.2,代码已通过本人验证可。通过测试Demo.
http://blog.csdn.net/lengshengren/article/details/14163293 博客demo
iOS通知组件 YRDropdownView ,YRDropdownView 从上面弹出的通知组件,简洁,支持View和Window两种方式
iOS简单通知应用,传值
C#源代码共享 百度云推送到Android和IOS ,有IOS 和 安卓 具体推送例子 接口详细描述 http://developer.baidu.com/wiki/index.php?title=docs/cplat/push/api/list#push_msg
jquery iOS风格提示通知层
IOS推送通知测试工具PushMeBaby
ios基础,比较基础的通知例子,适合初学者研究一下
php代码类,用于测试iospush通知的,欢迎大家下载使用,下载后不会使用,请查看我博客 php代码类,测试push通知的,运行直接php+文件路径
StackExpandableView类似于iOS通知组行为的自定义视图要求使用AndroidX SDK 16配置的项目以及StackExpandableView类似于iOS通知组行为的定制视图要求使用AndroidX SDK 16及更高版本配置的项目通过Gradle安装下载:将...
网页模板——基于jQuery仿ios5 通知中心弹出振动插件效果
iOS 传值方法(属性传值、代理传值、Block、通知、单例)
通过ANCS协议获取IOS的通知栏消息并且可拿到消息的详细内容,蓝牙平台CC2541,代码已通过本人验证可。提供测试Demo.波特率115200,需源码可留下邮箱
通知中心看她就够了
作者kohtenko,源码KODropdownNotification,KODropdownNotification 是可完全自定义的 iOS 通知视图。
iOS学习之通知,功能退出App发送通知,重新进入App也发送通知提醒。