app识别系统命令 ios
2016-01-12 21:00:34 u012198553 阅读数 548

 iOS 程序启动时总会调用application:didFinishLaunchingWithOptions:,其中第二个参数launchOptions为NSDictionary类型的对象,里面存储有此程序启动的原因。

launchOptions中的可能键值见UIApplication Class Reference的Launch Options Keys节 。

  • 若用户直接启动,lauchOptions内无数据;
  • 若由其他应用程序通过openURL:启动,则UIApplicationLaunchOptionsURLKey对应的对象为启动URL(NSURL),UIApplicationLaunchOptionsSourceApplicationKey对应启动的源应用程序的bundle ID (NSString);
  • 若由本地通知启动,则UIApplicationLaunchOptionsLocalNotificationKey对应的是为启动应用程序的的本地通知对象(UILocalNotification);
  • 若由远程通知启动,则UIApplicationLaunchOptionsRemoteNotificationKey对应的是启动应用程序的的远程通知信息userInfo(NSDictionary);
  • 其他key还有UIApplicationLaunchOptionsAnnotationKey,UIApplicationLaunchOptionsLocationKey,
    UIApplicationLaunchOptionsNewsstandDownloadsKey。


转自:http://www.cnblogs.com/worldtraveler/p/4759602.html
2016-07-28 15:09:00 weixin_33910434 阅读数 24

年龄识别

github 地址:https://github.com/chenfengfeng/AgeDistinguish
这个APP主要用于拍照或者调用相册后检测你的年龄等其他属性.
没啥技术含量,这个APP可以说从14年4月就开始的上架到今天,也就是我的第一个上架的APP,维护到现在,其实原本是打算作为了解AppStore来试验的,没想到也会维护到今天,不想自己弄的APP就变成了僵尸应用,希望能够继续维持下去,下图是到现在的下载量

294068-11b3748a6d775662.png

APP也有加入admob,也就是谷歌的广告,收益在前期算是比较客观的,毕竟之前并没有多少做这个,算是钻了个空吧!哈哈
APP的思想很简单,就只是单独的检测年龄性别等属性,没有所谓的用户系统之分,毕竟觉得一个纯娱乐的APP不应该有太多的复杂的东西存在,下面是这个APP目前的效果图
294068-ed349725eb77e816.gif

2018-01-03 02:43:05 weixin_33779515 阅读数 48

写在前面

在数据统计方面层面看App打开来源非常重要,特别是对于分享以及付费引流的衡量效果上有着非常关键的作用。

iOS App最常用的打开途径有三种:

  1. 消息(本地、远程)推送打开
  2. scheme跳转打开
  3. UniversalLinks打开

如何区分

App启动后标志着App底层已经准备完备的地方就有可以用来区分的标志,也就是在AppDelegate中的application:didFinishLaunchingWithOptions:

if (launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey]) {
    NSLog(@"远程推送打开");
} else if (launchOptions[UIApplicationLaunchOptionsLocalNotificationKey]) {
    NSLog(@"本地推送打开");
} else if (launchOptions[UIApplicationLaunchOptionsUserActivityDictionaryKey]) {
    NSLog(@"UniversalLinks打开");
} else if (launchOptions[UIApplicationLaunchOptionsURLKey]) {
    NSLog(@"Scheme跳转打开");
} else if (!launchOptions) {
    NSLog(@"手动点击打开");
}
复制代码

再多说一些

launchOptions除了用来区分App的开发方式,还承载着打开时的一些数据,比如scheme跳转、UniversalLinks打开的时候的一些具体链接,之前应用的bundleID等数据方便追述。

例如UniversalLinks中,我们就可以通过如下方法获得链接,而不一定要等到专用的Delegate方法返回给我们

NSUserActivity *act = [[launchOptions objectForKey:UIApplicationLaunchOptionsUserActivityDictionaryKey] objectForKey:@"UIApplicationLaunchOptionsUserActivityKey"];
NSString *url = [act.webpageURL absoluteString];
复制代码

其他枚举的意义

  • UIApplicationLaunchOptionsURLKey 在scheme跳转打开的时候出现,用于获取scheme地址的key;如"enalibaba://home"

  • UIApplicationLaunchOptionsSourceApplicationKey 从其他App跳转打开的时候出现 值为一个字符串表示来源App的BundleID;如:"com.apple.mobilesafari" 表示从Safari跳转

  • UIApplicationLaunchOptionsRemoteNotificationKey 从远程推送打开,这个key对应的值是一个Dictionary,里面就是推送的Payload

  • UIApplicationLaunchOptionsLocalNotificationKey 从本地推送打开,这个key对应的值是一个Dictionary,里面就是推送的Payload

  • UIApplicationLaunchOptionsAnnotationKey 这个Key应该不会再看见了,它只能通过 application:openURL:sourceApplication:annotation: 打开App的时候才会出现,但这个方法已经被标记为 Deprecated 从9.0之后不再支持。

  • UIApplicationLaunchOptionsLocationKey 基于地理位置触发的App打开,官方文档应该更新过了,已经找不到原文,大意是如果App开启了地理位置,在App退出到后台之后,如果触发了地理位置打开App,那么LaunchOptions就会有这个Key,可用来开启地理位置事件监听的标志,但这种地理位置触发打开App的能力需要App Store审核才能开启使用。

  • UIApplicationLaunchOptionsNewsstandDownloadsKey 关于杂志更新的,用到极少,不多描述

  • UIApplicationLaunchOptionsBluetoothCentralsKey 蓝牙服务提供设备唤醒App时出现的Key,数据为数组,代表设备列表

  • UIApplicationLaunchOptionsBluetoothPeripheralsKey 蓝牙被服务设备唤醒App时出现的Key,数据为数组,代表设备列表

  • UIApplicationLaunchOptionsShortcutItemKey 从3D Touch打开App时出现此Key

  • UIApplicationLaunchOptionsUserActivityDictionaryKey UniversalLinks打开时出现此Key,用于获得继续打开行为的一些数据,通常是点击的链接

  • UIApplicationLaunchOptionsUserActivityTypeKey UniversalLinks打开时出现此Key,值为NSUserActivityTypeBrowsingWeb,而且这个枚举值就这个以

  • UIApplicationLaunchOptionsCloudKitShareMetadataKey A key indicating that the app received a CloudKit share invitation. 相关文档比较少,推测是从文件里分享给App打开时会出现此Key。

参考 https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623073-application?language=objc http://nshipster.cn/launch-options/ http://www.jianshu.com/p/2ab2716c334e http://www.jianshu.com/p/6a1eb76ec776

2014-08-25 20:55:57 u010622887 阅读数 364


一、三大操作系统:

1、Unix/Linux:   肯.汤普逊和丹尼斯.里奇/林纳斯·托沃兹(Linus Torvalds)
2、windows :     比尔盖茨
3、mac     :     乔布斯
二、如何使用mac系统
1) windows下的图形界面和mac中的图形界面比较; 
       2) mac系统:    .dmg(压缩镜像文件)   .pkg(安装包配置文件)
           windows:   .iso                               .exe
========================================================================


命令提示符

三、终端使用
1)如何打开终端
1.通过finder打开
2.将固定到dock中
2)终端/DOS比较
主机名:当前目录 用户名
3)unix命令
1.pwd显示当前目录
1)windows中的路径,路径表示的意义。
2)mac中路径与windows的不同:目录与分区。(mac:分区从属于目录;win:目录从属于分区)
3)显示的目录与finder中对比:在finder中找到终端中的各个目录。
2.ls文件显示
1)如何显示当前目录下的文件
3.cd进入目录
1)如何进入目录
2)返回上级目录

3)cd 快速回到用户目录


4.ls参数使用
1)显示当前目录下文件的信息
ls -l
2)如何显示所有文件,包括以点开头的文件
ls -a
3)如何显示指定目录文件
ls  参数   文件名
5.相对路径和绝对路径
..    上级目录
.     当前目录
1)如何通过绝对路径进入目录
2)如何进入/目录
4)终端技巧
1.文件和命令名的补全
tab键补全
2.历史命令
方向键的上和下查找与history命令
3.clear清屏或者control+l
5)文件操作:文件创建,删除和复制
1.touch [现直接使用 vi 文件名 可以创建并直接编辑文件]
touch  文件名
2.rm  -选项  文件名     选项:-f  强制删除;-r  删除文件夹
3.cp复制
 cp   源文件  目标路径

4.mv剪切
mv  源文件   目标路径 N
 重命名:
mv  文件名    ./xxxx/新的文件名

6)目录操作:目录创建,复制和删除
1.mkdir   目录名
2.rm -r   目录名
3.cp -r
cp -r testDir   Desktop/
将testDir目录拷贝到桌面
P.S: testDir后面不能有/,带/表示只/Users/mac复制里面的内容,不复制文件夹目录
4.mv 

命令其实就是一些已经编写好的应用程序
除了终端自带的之外,还有第三方的命令

==========================================================================
四、vim使用
1.记事本使用
1)创建文本
2)编辑文本
3)保存文本
4)退出程序

2.vim使用
1)打开文件
vim   文件名
2)模式切换           i                   esc                
文本模式->插入模式->文本模式->命令行模式->wq
文本模式
插入模式
i:插入
//o:新行
//a:当前光标追加
//A:当前光标行的最后
命令行模式
:w 保存
:q 退出
:wq 保存退出
:q! 强制不保存退出 
    
以下快捷键必须在文本模式下执行
3)复制、粘贴
yy
nyy
p
4)删除、剪切
dd
ndd
6)内容撤销和重做
u 撤销 相当于command + z
7)内容定位
:行号

8)vim使用技巧
显示行号
:set number
:set    nu
set nonumber/nonu

文件头和文件尾切换
gg  文件头
shift + g 文件尾
行数  +  G   
 
行首和行尾切换
0  行首
shift + $  行尾

选择行和单个字符 
//shift + v 选择行
//v 选择单个字符
===========================================


五、第一个c语言程序
1.helloworld.c程序讲解
代码格式
代码注释
2.代码的编译
方法一、gcc helloworld.c //默认文件名a.out
./a.out //执行文件

方法二、gcc -o helloworld helloworld.c //输出指定名
./helloworld  //执行文件

3.了解代码开发过程:
1)编辑
2)编译+编译错误提示
3)连接
4)执行+运行错误提示

===========================================
vim的功能增强配置:

vim配置文件:
vi  .vimrc
代码自动补全功能配置需要添加:
ctrl+p | ctrl+n
终端配置文件:
vi  .vimrc
ls的颜色功能配置:
touch  文件名
2.rm  -选项  文件名     选项:-f  强制删除;-r  删除文件夹
3.cp复制
 cp   源文件  目标路径
4.mv剪切
mv  源文件   目标路径 N
 重命名:
mv  文件名    ./xxxx/新的文件名
6)目录操作:目录创建,复制和删除
1.mkdir   目录名
2.rm -r   目录名
3.cp -r
cp -r testDir   Desktop/
将testDir目录拷贝到桌面
P.S: testDir后面不能有/,带/表示只/Users/mac复制里面的内容,不复制文件夹目录
4.mv 
命令其实就是一些已经编写好的应用程序
除了终端自带的之外,还有第三方的命令
==========================================================================
四、vim使用
1.记事本使用
1)创建文本
2)编辑文本
3)保存文本
4)退出程序
2.vim使用
1)打开文件
vim   文件名
2)模式切换           i                   esc                
文本模式->插入模式->文本模式->命令行模式->wq
文本模式
插入模式
i:插入
//o:新行
//a:当前光标追加
//A:当前光标行的最后
命令行模式
:w 保存
:q 退出
:wq 保存退出
:q! 强制不保存退出 
    
以下快捷键必须在文本模式下执行
3)复制、粘贴
yy
nyy
p
4)删除、剪切
dd
ndd
6)内容撤销和重做
u 撤销 相当于command + z
7)内容定位
:行号
8)vim使用技巧
显示行号
:set number
:set    nu
set nonumber/nonu
文件头和文件尾切换
gg  文件头
shift + g 文件尾
行数  +  G   
 
行首和行尾切换
0  行首
shift + $  行尾
选择行和单个字符 
//shift + v 选择行
//v 选择单个字符
===========================================

五、第一个c语言程序
1.helloworld.c程序讲解
代码格式
代码注释
2.代码的编译
方法一、gcc helloworld.c //默认文件名a.out
./a.out //执行文件
方法二、gcc -o helloworld helloworld.c //输出指定名
./helloworld  //执行文件
3.了解代码开发过程:
1)编辑
2)编译+编译错误提示
3)连接
4)执行+运行错误提示
===========================================
vim的功能增强配置:
vim配置文件:
vi  .vimrc
代码自动补全功能配置需要添加:
ctrl+p | ctrl+n
终端配置文件:
vi  .vimrc
ls的颜色功能配置:

.bash_profile


附:

新建 /etc/vim/vimrc.local,[mac 下命令:直接 vi  .vimrc]文件里面添加内容如下(仅供参考):

set nu

set nocp

set ru

set hls

set is

syntax on

set backspace=indent,eol,start

set sw=4

set ts=4

set sm

set cin

colo slate

set guifont=Courier\ New\ 10

map <F3> !g++ % -o mainutocmd FileType python setlocal et stasw=4 sts=4


Vi对中文的支持:

新建用户目录下的 .vimrc

$ vi ~/.vimrc

添加如下内容:

let &termencoding=&encoding

set fileencodings=utf-8,gbk,ucs-bom,cp936

vi的命令行模式下输入:wq!保存退出。 


================================================over====================================

2017-06-07 17:03:00 weixin_34122810 阅读数 57

这里我是将生成好的二维码分享到微信好友,并通过识别发送的二维码跳转到app store


将图1的文件,导入自己的工程中。

1514045-f83653fe743a5be4.png
图1 二维码文件

在VC中,引入头文件  #import "MKQRCode.h"


@interface MyViewController ()

@property(nonatomic,strong)UIImageView *imageView; //声明属性--->二维码图片

@end

- (void)viewDidLoad {

[super viewDidLoad];

//生成二维码

self.imageView = [[UIImageView alloc]init];

[self.shareView addSubview:self.imageView];

[self.imageView mas_makeConstraints:^(MASConstraintMaker *make) {

make.centerX.equalTo(self.shareView.mas_centerX);

make.top.equalTo(self.shareView.mas_top).offset(35);

make.width.mas_offset(170*ScreenWidth/375);

make.height.mas_offset(170*ScreenWidth/375);

}];

//创建过滤器

CIFilter *filter = [CIFilter filterWithName:@"CIQRCodeGenerator"];

//恢复默认

[filter setDefaults];

//给过滤器添加数据

NSString *dataString = @"http://www.pa181.com/";//http://www.520it.com

NSData *data = [dataString dataUsingEncoding:NSUTF8StringEncoding];

//通过KVO设置滤镜inputMessage数据

[filter setValue:data forKey:@"inputMessage"];

//获取输出的二维码

self.outputImage = [filter outputImage];

//将CIImage转换成UIImage,并放大显示

self.imageView.image = [self generateImage];

//分享按钮

UIButton *shareBtn = [UIButton buttonWithType:UIButtonTypeSystem];

[self.shareView addSubview:shareBtn];

[shareBtn setBackgroundImage:[UIImage imageNamed:@"2017010309110575"] forState:UIControlStateNormal];

[shareBtn mas_makeConstraints:^(MASConstraintMaker *make) {

make.top.equalTo(self.imageView.mas_bottom).offset(35);

make.centerX.equalTo(self.imageView.mas_centerX);

make.width.mas_offset(172*ScreenWidth/375);

make.height.mas_offset(45*ScreenWidth/375);

}];

[shareBtn addTarget:self action:@selector(shareBtnAction) forControlEvents:UIControlEventTouchUpInside];

}

#pragma mark -------- 生成二维码方法 ----------

- (UIImage *)generateImage

{

MKQRCode *code = [[MKQRCode alloc] init];

// 内容和大小  https://github.com/ymkil/MKQRCode

//    [code setInfo:@"http://www.pa181.com" withSize:300];

[code setInfo:@"https://itunes.apple.com/cn/app/id1216226866" withSize:300];

code.centerImg = [UIImage imageNamed:@"关于丁丁_03"];

code.style = MKQRCodeStyleCenterImage;

return [code generateImage];

}

在生成二维码方法里,需要注意的是跳转到app store的地址是https://itunes.apple.com/cn/app/id1216226866,而1216226866是上传app的唯一ID。

#pragma mark ---------------------------- 分享按钮方法 --------------------------------

-(void)shareBtnAction{

NSArray *activityItems = @[self.imageView.image];

//里面initWithActivityItems  传的是item的数组  如果直接用图片数组的话 会经常出现 微信断开的错误

UIActivityViewController *activityView =[[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];

// 选中分享类型

[activityView setCompletionWithItemsHandler:^(NSString * __nullable activityType, BOOL completed, NSArray * __nullable returnedItems, NSError * __nullable activityError){

//        NSLog(@"act type %@",activityType);

if (completed) {

NSLog(@"ok");

}else {

NSLog(@"no ok");

}

}];

activityView.restorationIdentifier = @"activity";

[activityView setTitle:@"分享"];

[self presentViewController:activityView animated:TRUE completion:nil];

}

iOS身份证号码识别

阅读数 258

iOS身份证号码识别

阅读数 809

没有更多推荐了,返回首页