如何实现推送引导

news/2024/7/20 22:00:40 标签: iOS, 推送引导

思路篇:

1.图形搭建:自定义View + Xib

2.实现逻辑:

                    1、将视图加入根视图控制器

                    2、如何决定显示与否(只在程序当前版本第一次打开的时候显示):取到当前版本号,与沙盒中的版本号比较,不同则显示,相同则不显示

                    3、点击事件如何实现:放一个跟“我知道了”大小一样的透明按钮,点击按钮,删除视图

代码篇(仅核心代码展示):

1.自定义View

FLPushGuideView.m

// 加载Xib

+ (instancetype)guideView{

    

    return [[[NSBundle mainBundle] loadNibNamed:NSStringFromClass(self) owner:nil options:nil]lastObject];

}

// 删除视图

- (IBAction)close {

    [self removeFromSuperview];

}

2.根视图控制器

FLTabBarController.m

/**

 * 比较版本号,决定推送引导显示与否

 */

- (void)viewDidLoad {

    [super viewDidLoad];

 // 显示推送指南

    NSString *key = @"CFBundleShortVersionString";

    // 当前版本号

    NSString *currentVerson = [NSBundle mainBundle].infoDictionary[key];

    // 沙盒中的版本号

    NSString *sanboxVerson = [[NSUserDefaults standardUserDefaults]stringForKey:key];

    if (![currentVerson isEqualToString:sanboxVerson]) {//第一次打开

        

        FLPushGuideView *guideView = [FLPushGuideView guideView];

        guideView.frame = self.view.bounds;

        [self.view addSubview:guideView];

        

        [[NSUserDefaults standardUserDefaults] setObject:currentVerson forKey:key];

        // 立刻同步存储(不写这句不知道什么时候存储)

        [[NSUserDefaults standardUserDefaults] synchronize];

    } 

    

}






http://www.niftyadmin.cn/n/1035862.html

相关文章

android studio apk签名及配置

目录一.keytool 工具使用1.keytool 查看密码2.下载keytool工具,签名二.使用apksigner 进行签名三. android studio 签名系统apk对apk进行签名有两种方式一种是通过android stuido 来进行签名,另一种是通过keytool来进行签名,本篇主要来讲解后…

JS Canvas context API 画布

// Ready var elem document.getElementById("myCanvas"); var context elem.getContext(2d);//2D context API----线条context.fillStyle #00f; //填充色context.fillRect(x,y,width,height); //绘制带填充的矩形 context.strokeStyle #f00; //边框色或轮廓色c…

Android 常用的路径、文件操作

在Android开发过程中,我们经常会对文件系统进行操作——存放、释放我们应用的数据。Android系统中提供了各种功能的文件目录,每个目录都有相应的特点和功能。 通过Context来获取路径 一.在全文获取context的方法 具体思路是在MyApplication里面定义一个…

HTML VIDEO 通过鼠标移动出发play和pause功能

<!doctype html><html><head><meta charset"utf-8"><title>通过鼠标移动出发play和pause功能</title></head><body><video id"movies" controls onMouseOver"this.play()" onMouseOut"…

html5在canvas中插入图片

html5在canvas中插入图片 在canvas中显示图片非常简单。可以通过修正层为图片添加印章、拉伸图片或者修改图片等&#xff0c;并且图片通常会成为canvas上的焦点。用HTML5 Canvas API内置的几个简单命令可以轻松地为canvas添加图片内容。 不过&#xff0c;图片增加了canvas操作的…

java异常处理-java的异常

Java内置了一套异常处理机制&#xff0c;总是使用异常来表示错误。 异常是一种class&#xff0c;因此它本身带有类型信息。异常可以在任何地方抛出&#xff0c;但只需要在上层捕获&#xff0c;这样就和方法调用分离了&#xff1a; try {String s processFile(“C:\\test.txt”…

UIButton的自动排列

最近在工作中用到了UIButton的排布&#xff0c;需求是根据button的不同宽度&#xff08;高度相同&#xff09;实现自动排布。这是第四次用到了&#xff0c;前面分别写了3个项目&#xff0c;用到了三次&#xff0c;感觉还是比较常用的小功能&#xff1b;第一次自己写了个算法&am…

java异常-捕获异常

在Java中&#xff0c;凡是可能抛出异常的语句&#xff0c;都可以用try … catch捕获。把可能发生异常的语句放在try { … } 中&#xff0c;然后使用catch捕获对应的Exception及其子类。 1.在多个catch的时候&#xff0c;catch的顺序非常重要&#xff1a;子类必须写在前面&#…