0813-应用跳转、社交分、享推送通知
应用跳转
要点(04-应用间跳转跳转到固定界面和返回应用程序)
流程:程序A跳到程序B(甚至是指定界面),完成操作后再回到程序A
URL : 统一资源定位符(可以没有路径,但是必须有协议头 http:// )
scheme : 协议头,用来决定查找资源的方式 http:// ftp://
path : 路径
主要代码(要跳到谁就先设置谁的scheme)
- (void)openURLWithString:(NSString *)urlString
{
// 1.获取到对应应用程序的URL
NSURL *wechatURL = [NSURL URLWithString:urlString];
// 2.判断手机中是否安装了对应的应用程序
if ([[UIApplication sharedApplication] canOpenURL:wechatURL]) {
// 3.打开应用程序
[[UIApplication sharedApplication] openURL:wechatURL];
}
}
默认情况下应用程序是没有URL,并且在iOS中打开一个应用程序只要能拿到这个应用程序的协议头即可
社交分享
要点
- 新浪微博 -- 🍎在IOS6后已经集成
- 腾讯微博 -- 在IOS7集成
-
IOS中实现分享的三种方法
系统分享
系统分享多用于分享文字和图片,而且只支持部分平台
//先要import <Social/Social.h>
// 1.判断平台是否可用
if (![SLComposeViewController isAvailableForServiceType:SLServiceTypeSinaWeibo]) {
NSLog(@"平台不可用,或者没有配置相关的帐号");
return;
}
// 2.创建分享的控制器
SLComposeViewController *composeVc = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeSinaWeibo];
// 2.1.添加分享的文字
[composeVc setInitialText:@"小码哥IT教育是中国IT教育的摇篮"];
// 2.2.添加一个图片
[composeVc addImage:[UIImage imageNamed:@"xingxing"]];
// 2.3.添加一个分享的链接
[composeVc addURL:[NSURL URLWithString:@"www.520it.com"]];
// 3.弹出分享控制器
[self presentViewController:composeVc animated:YES completion:nil];
// 4.监听用户点击了取消还是发送
composeVc.completionHandler = ^(SLComposeViewControllerResult result) {
if (result == SLComposeViewControllerResultCancelled) {
NSLog(@"点击了取消");
} else {
NSLog(@"点击了发送");
}
};
友盟分享
- 第三方框架是开源的可以看到其源代码,第三方SDK只是静态库
- SSO授权
- Oauth2.0 一开始都用这个比较传统的授权,但是使用起来比较麻烦,需要用户输入账号密码
- SSO 先会判断下用户手机里面有没有安装该平台软件
- 主要代码
//这两个方法就是SSO授权后把令牌等交给友盟让他帮我们三方登录分享等
-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
return [UMSocialSnsService handleOpenURL:url];
}
-(BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation
{
NSLog(@"%@", url);
return [UMSocialSnsService handleOpenURL:url];
}
- 微信平台申请比较麻烦,要等两三天
推送
本地推送通知
-
概述
- 主要代码
// 1.创建本地通知
UILocalNotification *localNote = [[UILocalNotification alloc] init];
// 2.设置本地通知的内容
// 2.1.设置通知发出的时间
localNote.fireDate = [NSDate dateWithTimeIntervalSinceNow:3.0];
// 2.2.设置通知的内容
localNote.alertBody = @"吃饭了吗?";
// 2.3.设置滑块的文字
localNote.alertAction = @"快点";
// 2.4.决定alertAction是否生效
localNote.hasAction = NO;
// 2.5.设置点击通知的启动图片
localNote.alertLaunchImage = @"3213432dasf";
// 2.6.设置alertTitle
localNote.alertTitle = @"3333333333";
// 2.7.设置有通知时的音效
localNote.soundName = @"buyao.wav";
// 2.8.设置应用程序图标右上角的数字
localNote.applicationIconBadgeNumber = 999;
// 2.9.设置额外信息
localNote.userInfo = @{@"type" : @1};
// 3.调用通知
[[UIApplication sharedApplication] scheduleLocalNotification:localNote];
- IOS8以后要现在APPDelete.m里获取权限
if ([[UIDevice currentDevice].systemVersion doubleValue] >= 8.0) {
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil];
[application registerUserNotificationSettings:settings];
}
- 点击通知根据消息的内容跳到不同的指定界面
- 针对应用程序被杀死的状态下的跳转
在(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
执行
// 界面的跳转(针对应用程序被杀死的状态下的跳转)
if (launchOptions[UIApplicationLaunchOptionsLocalNotificationKey]) {
// 跳转代码
UILabel *redView = [[UILabel alloc] init];
redView.frame = CGRectMake(0, 0, 200, 300);
redView.numberOfLines = 0;
redView.font = [UIFont systemFontOfSize:12.0];
redView.backgroundColor = [UIColor redColor];
redView.text = [NSString stringWithFormat:@"%@", launchOptions];
[self.window.rootViewController.view addSubview:redView];
}
- 在后台非杀死程序情况下的跳转
在(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
方法里执行
// 针对应用程序在后台的时候进行的跳转
if (application.applicationState == UIApplicationStateInactive) {
NSLog(@"进行界面的跳转");
NSLog(@"%@", notification.userInfo);
UIView *redView = [[UIView alloc] init];
redView.frame = CGRectMake(0, 0, 100, 100);
redView.backgroundColor = [UIColor redColor];
[self.window.rootViewController.view addSubview:redView];
}
远程推送通知
-
概述
-
流程
网友评论