ios本地推送互动

?    小编只是一个小白,每个app都需要推送功能,个人觉得是基础中的基础,所以自学了下推送,并且写了点小demo,也是第一次发原创博客,还请各路大神批评指导。

信息推送可以让App尚未运行的状态下可以接受一些信息,通常的推送有苹果自带的APNS推送,这个方面的知识还请自行查询学习,本文只是针对本地推送互动方面,后续会单独写APNS推送的博文,还请持续关注!

推送信息文字主要出现四个位置:1.屏幕锁定画面;2.屏幕上方下拉的“通知区域”;3.解锁后屏幕最上方的横幅的位置;4解锁后的提示位置;解锁模式下推送信息的位置需要在自己去调整 在系统--->通知--->要调整的App下面调整

推送信息的处理有互动按钮(本文使用四个),可以把这四个按钮放在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 方法中,封装在UIMutableUserNOtificationCategory类中,一个App可以有很多组Category,以供推送信息时选 择,最后将category封装到NSSet中,注册到UIUserNotificationSettings中。

代码如下:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    UIMutableUserNotificationAction *action1=[UIMutableUserNotificationAction new];
    action1.identifier=@"ACTION_1";
    action1.title=@"title";
    action1.activationMode=UIUserNotificationActivationModeForeground;
    action1.authenticationRequired=YES;
    action1.destructive=NO;

    UIMutableUserNotificationAction *action2=[UIMutableUserNotificationAction new];
    action2.identifier=@"ACTION_2";
    action2.title=@"title2";
    action2.authenticationRequired=NO;
    action2.activationMode=UIUserNotificationActivationModeBackground;
    action2.destructive=YES;

    UIMutableUserNotificationAction *action3=[UIMutableUserNotificationAction new];
    action3.identifier=@"ACTION_3";
    action3.title=@"title3";
    action3.activationMode=UIUserNotificationActivationModeBackground;
    action3.authenticationRequired=NO;
    action3.destructive=NO;;

    UIMutableUserNotificationAction *action4=[UIMutableUserNotificationAction new];
    action4.identifier=@"ACTION_4";
    action4.title=@"titile4";
    action4.activationMode=UIUserNotificationActivationModeBackground;
    action4.authenticationRequired=NO;
    action4.destructive=NO;

    UIMutableUserNotificationCategory *category=[UIMutableUserNotificationCategory new];
    category.identifier=@"CATEGORY";
    [category setActions:@[action1,action2,action3,action4] forContext:UIUserNotificationActionContextDefault];
    NSSet *categories=[NSSet  setWithObject:category];
    UIUserNotificationSettings *setting=[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:categories];
    [application registerUserNotificationSettings:setting];
    return YES;
}


其中:identifier是用来识别用户点击了哪个按钮的;title是按钮的文字;activationMode是指这个按钮按下去是不是要把app
调到前台运行,设置为前台运行就需要赋值为YES;authenticationRequired是只当设备属于锁定状态时候,是否要求用户先解
锁;destructive是标识特别重要的按钮,操作他可能带来一定的影响,例如删除数据。

互动操作需要在appdelega.m的一个方法中写互动操作方法代码如下:

-(void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forLocalNotification:(UILocalNotification *)notification withResponseInfo:(NSDictionary *)responseInfo completionHandler:(void (^)())completionHandler
{
    if ([notification.category isEqualToString:@"CATEGORY"]) {
        if ([identifier isEqualToString:@"ACTION_1"]) {
            NSLog(@"单击了Category1,Action1");
        }
        if ([identifier isEqualToString:@"ACTION_2"]) {
            [UIApplication sharedApplication].applicationIconBadgeNumber=0;
            NSLog(@"单击了Category2,Action2");
        }
        if ([identifier isEqualToString:@"ACTION_3"]) {
            NSLog(@"单击了Category3,Action3");
        }
        if ([identifier isEqualToString:@"AACTION_4"]) {
            NSLog(@"单击了Category4,Action4");
        }
    }
    completionHandler();//必写
}

最后在viewDidLoad写(图方便)

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    UILocalNotification *note=[UILocalNotification new];
    note.alertBody=@"自定义推送通知";
    note.category=@"CATEGORY";
    note.applicationIconBadgeNumber=1;
    note.soundName=UILocalNotificationDefaultSoundName;
    note.fireDate=[NSDate dateWithTimeIntervalSinceNow:10];
    [[UIApplication sharedApplication] scheduleLocalNotification:note];
}

谢谢!初次写,不足之处请谅解!!!

时间: 2024-10-21 20:36:37

ios本地推送互动的相关文章

UILocalNotification ios本地推送

Notification是智能手机应用编程中非常常用的一种传递信息的机制,而且可以非常好的节省资源,不用消耗资源来不停地检查信息状态(Pooling),在iOS下应用分为两种不同的Notification种类,本地和远程.本地的Notification由iOS下NotificationManager统一管理,只需要将封装好的本地Notification对象加入到系统Notification管理机制队列中,系统会在指定的时间激发将本地Notification,应用只需设计好处理Notificati

ios本地推送demo

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {     // Override point for customization after application launch.     //应用图标数字     application.applicationIconBadgeNumber=6;          //申请用

iOS 本地推送

在多数移动应用中任何时候都只能有一个应用程序处于活跃状态,如果其他应用此刻发生了一些用户感兴趣的那么通过通知机制就可以告诉用户此时发生的事情. iOS中通知机制又叫消息机制,其包括两类:一类是本地通知:另一类是推送通知,也叫远程通知.两种通知在iOS中的表现一致,可以通过横幅或者弹出提醒 两种形式告诉用户,并且点击通知可以会打开应用程序,但是实现原理却完全不同.今天就和大家一块去看一下如何在iOS中实现这两种机制,并且在文章后面会 补充通知中心的内容避免初学者对两种概念的混淆. 简单些了一个关于

(七十三)iOS本地推送通知的实现

iOS的推送通知分为本地推送和网络推送两种,如果App处于挂起状态,是可以发送本地通知的,如果已经被杀掉,则只有定时通知可以被执行,而类似于QQ的那种网络消息推送就无法实现了,因为App的网络模块在被杀掉后是无法执行的,这时候就要借助远程通知,通过苹果的服务器转发通知到手机,本文只介绍本地通知的用法. ①对于iOS8及以上的版本,需要注册本地通知才能使用,一般在AppDelegate中注册: if ([[UIDevice currentDevice].systemVersion doubleVa

[转载]iOS本地推送-备用

第一步:创建本地推送// 创建一个本地推送UILocalNotification *notification = [[[UILocalNotification alloc] init] autorelease];//设置10秒之后NSDate *pushDate = [NSDate dateWithTimeIntervalSinceNow:10];if (notification != nil) {    // 设置推送时间    notification.fireDate = pushDate

iOS本地推送的实现,兼容iOS8

AppDelegate.m中的代码 // AppDelegate.m中 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // 处理iOS8本地推送不能收到的问题 float sysVersion=[[UIDevice currentDevice]systemVersion].floatValue; if (sysVersio

iOS本地推送与远程推送

分为本地推送和远程推送2种.可以在应用没有打开甚至手机锁屏情况下给用户以提示.它们都需要注册,注册后系统会弹出提示框(如下图)提示用户是否同意,如果同意则正常使用:如果用户不同意则下次打开程序也不会弹出该提示框,需要用户到设置里面设置.一共有三种提示类型: UIUserNotificationTypeBadge // 应用图标右上角的信息提示 UIUserNotificationTypeSound // 播放提示音 UIUserNotificationTypeAlert  // 提示框 本地推送

iOS本地推送与远程推送详解

一.简介 分为本地推送和远程推送2种.可以在应用没有打开甚至手机锁屏情况下给用户以提示.它们都需要注册,注册后系统会弹出提示框(如下图)提示用户是否同意,如果同意则正常使用:如果用户不同意则下次打开程序也不会弹出该提示框,需要用户到设置里面设置.一共有三种提示类型: UIUserNotificationTypeBadge:应用图标右上角的信息提示 UIUserNotificationTypeSound:播放提示音 UIUserNotificationTypeAlert:提示框 二.本地推送 1

iOS 本地推送 UILocalNotification

创建通知 UILocalNotification *notification = [[UILocalNotification alloc] init]; if (notification) { NSDate *now = [NSDate new]; notification.fireDate = [now dateByAddingTimeInterval:10]; //10秒后通知 notification.repeatInterval=0; //重复次数,kCFCalendarUnitWeek