今天要分享的是通知中心扩展中的-Today扩展(ios8推出),ios目前可以使用的扩展有:today扩展(widget-即通知栏的今天一栏)、键盘自定义、文件管理、照片编辑扩展、通知扩展(推送)、分享扩展等。扩展与拥有这个扩展主应用的生命周期是独立的。他们是两个独立的进程。
###一、目标:
我项目是希望在widget中添加一个H5的页面方便以后的自定义。点击对应按钮去到相应界面,我也不知道这样算不算滥用widget,因为之前看见过有人的应用被苹果拒绝就是因为滥用widget导致的。###二、实现:
1.因为widget是一个单独的进程所以需要创建一个target:
2.代码
|
|
(BOOL)application:(UIApplication )application openURL:(NSURL )url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
NSString* prefix = @”iOSWidgetApp://action=”;
UIWebView webView = [[UIWebView alloc]initWithFrame:[UIScreen mainScreen].bounds];
webView.backgroundColor = [UIColor clearColor];
webView.delegate = self;
[webView setUserInteractionEnabled:YES];//是否支持交互
[webView setOpaque:NO];//opaque是不透明的意思
[webView setScalesPageToFit:YES];//自动缩放以适应屏幕
webView .scrollView.bounces = NO;// 禁止UIWebView下拉拖动效果
NSString path;
if ([[url absoluteString] rangeOfString:prefix].location != NSNotFound) {NSString* action = [[url absoluteString] substringFromIndex:prefix.length]; if ([action isEqualToString:@"GotoHomePage"]) { path = [[NSBundle mainBundle] pathForResource:@"help" ofType:@"html"]; } else if([action isEqualToString:@"GotoOtherPage"]) { path = [[NSBundle mainBundle] pathForResource:@"setting" ofType:@"html"]; }else { path = [[NSBundle mainBundle] pathForResource:@"healthyArticle" ofType:@"html"]; } NSURL *urll = [NSURL fileURLWithPath:path]; NSURLRequest* request = [NSURLRequest requestWithURL:urll] ; [webView loadRequest:request]; [self.rootView.view addSubview:webView]; self.rootView.view.backgroundColor = [UIColor whiteColor];
}
return YES;
}
```
因为我是需要到对应的H5页面所以是添加的H5页面。
#
###注意:
1.当程序内存不足时,苹果优先会杀死扩展,因此需要注意内存的管理。
2.在配置team是账号需要一致(我测试的时候免费账号好像还不行,需要付费的账号)
3.在iOS10上面还可以从左滑主页面和锁屏进入widget。
4.today只有在下拉的时候才会更新,通知栏两边的更新机制是不一样的。
5.一般更新路径:viewDidLoad->viewWillAppear,但是如果你下拉过于频繁就只会执行viewWillAppear里面的,因此更新代码最好放在viewWillAppear里面。
######如有错误地方,万望指出,谢谢!