我是开发者 - 小钿博客

一个小开发仔 ~

标签 "ios" 下的文章

天猫双11全民开喵铺瓜分20亿活动自动化脚本-浏览

天猫最近搞了个全民开喵铺瓜分20亿活动, 大概套路就是浏览各种商品和店铺来挣喵币, 喵币升级喵铺, 到11月10号按等级分红包.

作为一个程序员怎么能手动去浏览挣喵币呢, 而且还要每个滑动浏览15秒, 于是这里提供自动脚本教程

先上效果图:
1571915344302.gif

ijkplayer 的编译、打包 framework 和 https 支持

ijkplayerbilibili 开源的一款优秀的播放器, 基于 FFmpeg, 支持 iOS/Android, 点播/直播, 以及多种编码. 官方并不直接提供 framework 框架包, 这样大家可以根据需要选择配置, 自己编译并打包. 但是也让很多第一次使用的小伙伴一脸懵逼, 并且默认配置只支持 http, 如果想播放 https 链接的视频, 那么需要做额外的配置

本文为 iOS 的编译打包过程, 环境为 Mac + Xcode

准备工作

安装 homebrew, git, yasm. (如果已经安装好可以跳过, 不清楚的再来一遍也无妨)

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install git
brew install yasm

Mac + iPhone 实现微信跳一跳自动化教程

前言

最近微信跳一跳这个小游戏火爆, 由于朋友排行版的存在, 激发了我们的上(pan)进(bi)心. 除了正常方式爆肝提高分数以外, 也有各种技术宅的非正常手段出来:

  1. 抓包拦截请求, 直接改游戏结束之后, 提交到服务器的分数
  2. 物理外挂, 用机械手指和摄像头, 识别距离, 计算点击时间, 控制机械手指按下去的时间
  3. 利用手机调试模式, 屏幕截图, 识别方块距离, 计算点击时长, 调用系统函数模拟点击屏幕

第 3 种方法相当于第 2 种方法的软件版, 本文用的就是这种方式

ps: 目前方法 1 的提交漏洞已经被修复, 方法 3 特别是方法 2 原理上是模拟人的操作 (代码中有故意随机偏移落地点和停顿间隔), 理论上微信是没法区别的, 但是微信貌似有一套成长曲线检测方法, 如果你的进步曲线不科学, 还是会把你分数清零的

iOS开发备忘笔记 (1)

  1. NSString常量定义:

    正确:

     NSString * const name = @"value";
    

    错误:

     const NSString * name = @"value"; 
     NSString const * name = @"value";
    

    总结: const* 前 代表 *name 不可变, 在 * 后代表 name不可变. 我们一般都 是想让 name 的值不变, 所以应该把 const 放在 * 后;

    *前面是指针指向的修饰符, *后面是指针本身的修饰符

  2. 格式化日期输出星期的不同表示:

     NSDateFormatter * dateFormatter = [[NSDateFormatter alloc] init];
     dateFormatter.dateFormat = @"E EE EEE EEEE EEEEE EEEEEE EEEEEEE";
     NSString * dateStr = [dateFormatter stringFromDate:[NSDate date]];
     NSLog(@"%@", dateStr);
     //输出:    周六 周六 周六 星期六 六 周六 周六
    

使用UUID+KeyChain记录设备唯一标识

福利:

思路:

  • 保存到 Keychain(钥匙串) 中的数据不会随应用卸载而删除, 除非恢复出厂设置. 所以可以生成一串字符保存到钥匙串中, 作为设备唯一标识.

实现:

  1. 生成一串唯一的字符作为设备唯一标识. 要在一个大程度上唯一的只有 UUID 了. iOS中提供了相关方法可以获取 UUID :

    • [[NSUUID UUID] UUIDString]: [NSUUID UUID] 方法每次调用都会生成一个不同的 UUID .

    • [[[UIDevice currentDevice] identifierForVendor] UUIDString]: identifierForVendor 可以获取这个应用在这台手机上的唯一标识, 但是卸载重装应用之后会变化.

  2. UUID 保存到 Keychain 中: 直接操作 Keychain 的代码是非常繁琐容易出错的, 所以使用一个已经封装好的操作类 SFHFKeychainUtils 来操作 Keychain.

隐藏