2020-02-26 CoreData,CLLocation,Itms-Service 学习


itmsServices 是苹果推出的一款协议,基于这款协议,我们在本地部署一个服务器,将ipa包存放到本地服务器,然后测试人员只要通过Safari浏览器访问特定的地址,就可以通过内网更新App


注意事项

1、项目打包后的文件、使用企业分发方式打出的一个xxx.ipa包
2、一个plist文件,内容如下。
3、由于xxx.plist文件的访问地址必须是https,我们需要将plist文件存放到github上,所以还需要一个github账号
4、下载的测试机,部署的服务器需要连接同一个内网
5、用测试机通过Safari浏览器输入如下地址,然后下载

其中,参数1是IOS工程的根路径,是必输项。参数2可以不输入,是可选的,含义是编译时的工程configuration类型,有4种类型可选:Debug, AdHoc,Release, Distribution。默认是Release。
ipa-build脚本运行后,会在IOS工程根路径下生成名为“build”的文件夹,在这个文件夹中又有一个名为“ipa-build”的文件夹,打包所生成的最新ipa包就在其中。


最终生成的地址格式如下

itms-services://?action=download-manifest&url=https://raw.githubusercontent.com/wangbinji/StopCar/master/down.plist


Plist文件格式如下

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>items</key>
<array>
    <dict>
        <key>assets</key>
        <array>
            <dict>
                <key>kind</key>
                <string>software-package</string>
                <key>url</key>
                <string>http://xxxxxxxxxxxxxxxxxxx/xxx.ipa</string>
            </dict>
            <dict>
                <key>kind</key>
                <string>full-size-image</string>
                <key>needs-shine</key>
                <true/>
                <key>url</key>
                <string>http://xxxxxxxxxxxxxxxxxx.png</string>
            </dict>
            <dict>
                <key>kind</key>
                <string>display-image</string>
                <key>needs-shine</key>
                <true/>
                <key>url</key>
                <string>http://xxxxxxxxxxxxxxxxxx.png</string>
            </dict>
        </array>
        <key>metadata</key>
        <dict>
            <key>bundle-identifier</key>
            <string>com.xxxx.demo</string>
            <key>bundle-version</key>
            <string>1.0.0</string>
            <key>kind</key>
            <string>software</string>
            <key>title</key>
            <string>XXXX App download</string>
        </dict>
    </dict>
</array>
</dict>
</plist>

CoreData

CoreData 苹果自己推出的数据存储框架,采用了一种ORM(对象关系映射)的存储关系

数据库数据与Objective-C对象相互转换

NSManagedObjectContext 托管对象上下文,数据库的大多数操作是在这个类操作
NSManagedObjectModel 托管对象模型,其中一个托管对象模型关联到一个模型文件,里面存储着数据库的数据结构
NSPersistentStoreCoordinator 持久化存储协调器 主要负责协调上下文与存储的区域的关系
NSManagedObject 托管对象类,其中CoreData里面的托管对象都会继承此类

  • Integer 16 代表整数,范围是 -32768 ~ 32767
  • Integer 32 代表整数,范围是 -2147483648 ~ 2147483647
  • Integer 64 代表整数,范围是 -9223372036854775808 ~ 9223372036854775807
  • Double 代表小数
  • Float 代表小数
  • String 代表字符串, NSString表示
  • Boolean 代表布尔值,使用NSNumber表示
  • Data 代表日期时期
  • Binary Data 代表二进制,使用NSData表示
  • Transformable 代表Objective-C对象,要遵守NSCopying协议

CLLocation

  • 1、静止不动
    上一个GPS点的瞬时速度为零,当前点的瞬时速度也为零,那么当前点无效,瞬时速度就是CLLocation的属性speed
  • 2、GPS信号太差
    信号是CLLocation的属性horizontalAccuracy,表示水平方向的误差值,当这个值大于70,认为信号差。
  • 3、无效移动
    前后两个GPS点的距离小于horizontalAccuracy*(0.5-0.66),我们认为这个点是无效移动
  • 4、平均速度过大
    当前点到上一个点的距离/当前点到上一个点的时间 速度大于某一个值,则认为当前点无效
  • 5、采样频率
    distanceFilter = 30 只有超过30米的移动,才会进入到位置更新的回调方法。省电、CPU占用低