美文网首页
11-UI补充(2)

11-UI补充(2)

作者: cdd48b9d36e0 | 来源:发表于2017-01-25 00:49 被阅读6次

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中打开一个应用程序只要能拿到这个应用程序的协议头即可

社交分享

要点
  1. 新浪微博 -- 🍎在IOS6后已经集成
  2. 腾讯微博 -- 在IOS7集成
  3. 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(@"点击了发送");
        }
    };
友盟分享
  1. 第三方框架是开源的可以看到其源代码,第三方SDK只是静态库
  2. 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. 微信平台申请比较麻烦,要等两三天

推送

本地推送通知
  1. 概述


  2. 主要代码
// 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];
  1. IOS8以后要现在APPDelete.m里获取权限
if ([[UIDevice currentDevice].systemVersion doubleValue] >= 8.0) {
        UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil];
        [application registerUserNotificationSettings:settings];
    }
  1. 点击通知根据消息的内容跳到不同的指定界面
  • 针对应用程序被杀死的状态下的跳转
    (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];
    }
远程推送通知
  1. 概述


  2. 流程


相关文章

  • 11-UI补充(2)

    0813-应用跳转、社交分、享推送通知 应用跳转 要点(04-应用间跳转跳转到固定界面和返回应用程序) 流程:...

  • 11-UI补充(1)

    0812-真机相关 真机调试 开发者账号(01-购买开发者账号) xcode7.0以前真机测试必须开发者账号 个人...

  • 补充2

    进程与线程的区别?多进程和多线程的区别? 1、进程是资源分配的最小单位,线程是程序执行的最小单位(资源调度的最小单...

  • JS补充2

    主流浏览器 内核 IE trident chrome ...

  • 补充需求#2

    IM:图片、语音传输 语音:建立双向语音接受上级部门的指导和调度 定位:启动后至关闭时,定位功能始终处于工作状态 ...

  • 睡前2补充

    其实说实话今天比昨天感受好多了,可能是因为一直都有人陪着吧,他们也不是故意陪我,就是凑在一起吃饭阿,打游戏阿。 就...

  • CSS补充2

    定位position 定位分为四种:相对定位 relative,绝对定位 absolute,固定定位 fixed,...

  • 06 C循环补充

    1、补充 2、练习

  • dart 语言 01

    基础部分 2. 补充.

  • 《javascript权威指南》

    了解语言特性最快的方式是调试诡异的代码 补充1 补充2 this 补充3:apply 《javascript权威教程》

网友评论

      本文标题:11-UI补充(2)

      本文链接:https://www.haomeiwen.com/subject/vqctittx.html