`

iOS 通知

    博客分类:
  • ios
 
阅读更多


#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;
    }

}

 

 

分享到:
评论

相关推荐

    ios 通知实现原理

    本篇将深入探讨iOS通知的实现原理,包括本地通知和远程推送通知,以及它们在模拟环境中的工作流程。 1. **本地通知(Local Notifications)** - **定义**:本地通知是由应用程序本身在特定时间点或基于特定条件...

    ios 通知中心

    本文将深入探讨“iOS通知中心”的相关知识点,包括本地通知和远程通知(Push Notification)、通知设置、自定义通知样式以及在实际开发中的应用。 一、本地通知 本地通知是应用程序在设备上预先安排的提醒,无需...

    AJNotificationView, iOS通知组件.zip

    AJNotificationView, iOS通知组件 AJNotificationViewiOS的通知组件不需要图像,所有CoreGraphics代码适用于iPhone和 iPad ( 分辨率独立)动画 background 类型一次只显示一个通知。 创建通知时,该通知将添加到队

    ios-通知中心.zip

    "ios-通知中心.zip"这个压缩包很可能包含了关于iOS通知中心的详细资料,可能包括设置指南、自定义方法以及优化策略等内容。 首先,通知中心的基本功能是显示来自各个应用的通知,这些通知可以是文本消息、邮件、...

    CC2541通过ANCS协议获取IOS通知栏内容

    通过ANCS,开发者可以创建各种创新的智能配件,如智能手表、运动手环等,它们能实时同步用户的iOS通知,提升用户的生活便利性。不过,需要注意的是,ANCS仅适用于iOS设备,不适用于Android或其他操作系统。此外,...

    IOS滚动文本通知

    在iOS操作系统中,滚动文本通知(也称为横幅通知或滑动通知)是一种常见的用户界面元素,用于在设备屏幕上显示新消息、提醒或其他系统事件。这些通知通常会短暂地从屏幕顶部滑入,然后自动消失,除非用户点击它们以...

    jquery ios风格提示通知层

    3. **CSS样式**:在`css/iosNotification.css`中,定义iOS通知层的样式,包括背景色、圆角、阴影、字体、图标等,以模拟iOS的视觉效果。确保适应不同的设备和屏幕尺寸,可能还需要使用媒体查询来实现响应式设计。 4...

    iOS 通知中心

    iOS的通知中心是操作系统提供的一种重要功能,用于向用户展示来自各种应用的实时更新和提醒。在iOS设备上,无论用户正在使用哪个应用,系统都可以通过通知中心适时地将信息推送给用户,确保用户不会错过任何关键信息...

    iOS通知例程

    这个“iOS通知例程”涵盖了如何实现退出应用后仍能发送通知,以及用户重新进入应用时如何继续接收通知的流程。我们将深入探讨iOS的通知系统,包括本地通知和远程推送通知。 **一、iOS通知系统概述** iOS的通知系统...

    CC2541 通过ANCS协议获取IOS通知栏通知及内容

    通过ANCS协议获取IOS的通知栏消息并且可拿到消息的详细内容,蓝牙平台CC2541 通过ANCS协议获取IOS通知栏通知及内容,将压缩包解压放到你安装的蓝牙协议栈里BLE-CC254x-1.3.2,代码已通过本人验证可。通过测试Demo.

    iOS通知组件 YRDropdownView.zip

    iOS通知组件 YRDropdownView ,YRDropdownView 从上面弹出的通知组件,简洁,支持View和Window两种方式

    ios——通知

    在iOS开发中,"通知"(Notification)是一个关键的概念,它允许应用在特定事件发生时向用户发送消息,即使应用不在前台运行也能实现。这里我们将深入探讨iOS的通知系统,包括本地通知(Local Notification)和远程...

    iOS通知消息

    在iOS开发中,通知消息(Notification)是一种常用的技术,用于在应用程序的不同组件之间传递信息,或者在应用程序处于后台甚至未运行状态时提醒用户有新的事件发生。本篇将详细讲解如何在iOS应用中实现简单的通知...

    iOS学习——通知机制-代码

    在iOS开发中,通知机制(Notification)是一种非常重要的组件,用于在应用程序的不同组件之间传递信息。这个机制允许对象发送消息给其他对象,而无需知道接收者的具体身份,从而实现了松耦合的设计。本文将深入探讨...

    服务器推送通知到Android和IOS

    C#源代码共享 百度云推送到Android和IOS ,有IOS 和 安卓 具体推送例子 接口详细描述 http://developer.baidu.com/wiki/index.php?title=docs/cplat/push/api/list#push_msg

    网页模板——基于jQuery仿ios5 通知中心弹出振动插件效果.zip

    网页模板设计中,为了提供与iOS5设备类似的用户体验,开发者经常使用基于jQuery的插件来实现仿ios5通知中心的弹出振动效果。这个压缩包文件"网页模板——基于jQuery仿ios5 通知中心弹出振动插件效果.zip"包含了实现...

    基于Java的 iOS 推送通知

    在实现Java推送iOS通知之前,需要满足以下条件: 1. 记录所有已安装APP的设备Token。 2. 设置好相关的密钥和权限,确保服务端有权推送通知。 3. 使用JavaPNS库来实现提供商端的功能。JavaPNS是一个开源项目,可以从...

    IOS推送通知测试工具PushMeBaby

    【PushMeBaby:iOS推送通知测试工具】 PushMeBaby是一款专为iOS开发者设计的推送通知测试工具,它简化了Apple Push Notification service (APNs) 的测试过程,帮助开发者快速、有效地验证应用程序对推送通知的接收...

    iOS基本通知屏幕.zip

    ### iOS通知系统 iOS的通知系统允许应用程序在状态栏、锁屏或今日视图上显示信息,即使应用不在前台运行。这个系统由苹果的UserNotifications框架管理,它包括本地通知和远程(推送)通知两种类型。 **1. 本地通知...

    php用于测试iospush通知推送的。

    php代码类,用于测试iospush通知的,欢迎大家下载使用,下载后不会使用,请查看我博客 php代码类,测试push通知的,运行直接php+文件路径

Global site tag (gtag.js) - Google Analytics