ios系统中通知栏扩展开发入门

来源:互联网 发布:魅族移动数据不能上网 编辑:程序博客网 时间:2024/06/03 17:27

前几天看到有的应用展示在苹果手机的通知栏,突然有点感兴趣,回来在网上查询资料,发现资料少之又少,在参考了一部分资料和官方文档后,我自己试着写了一个很简单的Demo。

扩展(Extension),是ios8引入的重要功能。iOS 8系统有6个支持扩展的系统区域,分别是: Today 扩展 - 在下拉的通知中心的 “今天” 的面板中添加一个 widget;Share扩展 - 点击分享按钮后将网站或者照片通过应用分享;Action扩展 - 点击 Action 按钮后通过判断上下文来将内容发送到应用;Photo Editing扩展 - 在系统的照片应用中提供照片编辑的能力;Storage Provider扩展 - 提供和管理文件内容;Custom keyboard - 提供一个可以用在所有应用的替代系统键盘的自定义键盘或输入法支持扩展的。系统区域也被称为扩展点。对于赛事比分,股票、天气、快递这类需要实时获取的信息,可以在通知中心的Today视图中创建一个Today扩展实现。Today扩展又称为Widget。本文主要是介绍Today Extension的用法。

1.创建主程序

2.创建扩展

2.1选择file–new–target创建一个新的Target,如下图所示:

选择Today Extension,点击next

命名为TodayExtension,点击finish,然后xcode会让你选择是否激活这个扩展scheme,点击cancle

然后,扩展创建完成之后就是这样的目录结构

会生成TodayViewController的.h,.m文件,还有一个故事版和plist文件

2.2扩展默认是从故事版加载的,我们修改一个plist文件,让它加载代码

NSExtensionMainStoryboard对应的值改为TodayViewController,如下图所示

修改扩展显示的名字,在plist文件中修改CFBundleDisplayName,改为“今日待办”,如下图所示

现在就可以在TodayViewController中设计today扩展了

1.创建主程序

self.preferredContentSize = CGSizeMake(0, 50);这里调整Widget的高度,加载makeView方法

- (void)viewDidLoad { 
[super viewDidLoad];
isClick=NO;
self.preferredContentSize = CGSizeMake(0, 50);
[self makeView];
// Do any additional setup after loading the view from its nib.

}
在makeView里面对扩展进行设置
-(void)makeView{
UIView *contentView=[[UIView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 50)];
contentView.userInteractionEnabled=YES;
contentView.backgroundColor=[UIColor clearColor];
[self.view addSubview:contentView];

UILabel *label=[[UILabel alloc]initWithFrame:CGRectMake(-50, 51, contentView.frame.size.width, 30)];label.textColor=[UIColor greenColor];label.text=@"您有一条单号为:SQ1265612365423465的待办需要处理";label.numberOfLines=0;[contentView addSubview:label];UIButton *but=[[UIButton alloc]initWithFrame:CGRectMake(-50, 0, contentView.frame.size.width, 30)];

// but.text=@”您有一条新的待办需要处理!”;
[but setTitle:@”您有一条新的待办需要处理!” forState:UIControlStateNormal];
but.titleLabel.font=[UIFont systemFontOfSize:24];
[but addTarget:self action:@selector(todoClick:) forControlEvents:UIControlEventTouchUpInside];
[contentView addSubview:but];

}
点击通知栏里面的扩展,修改扩展的高度
-(void)todoClick:(UIButton *)but
{

if (isClick) {    self.preferredContentSize = CGSizeMake(0, 100);    [self.extensionContext openURL:[NSURL URLWithString:@"AppExtension://"] completionHandler:^(BOOL success) {          NSLog(@"这是Today Extension!");    }];}else{    self.preferredContentSize = CGSizeMake(0, 50);}isClick=!isClick;


运行效果截图如下

点击扩展,扩展的高度改变

在高度最大的时候,点击扩展,跳转到app指定界面

也可以对通知栏的扩展增加手势操作,向下拉动,展开扩展,点击进入app指定页面,类似与点击推送,可实现传参。

 关于通知栏的开发,可参考的资料较少,目前为止,我只尝试着做了这样一个及其简单的Demo,后续会继续更新关于通知栏的开发相关博客,文中的不足之处,也欢迎大家批评指正。

原创博客,转载请注明出处!

0 0