知晓程序|开发|刚上线的苹果「小程序」得这么做( 二 )


长时间内推送
用户在AppClip完成一个任务后 , 可能过了几天才会收到推送 。 比如用户在AppClip租了辆车 , 租期为3天 , 到期后会用户收到「该还车了」的推送 。 这种方式和普通app的消息推送一样 , 都需要获取用户的推送授权 。
使用知晓云MinCloud创建一个AppClip
接下来将演示如何使用知晓云MinCloud快速创建一个动态数据服务的AppClip 。 该Clip主要展示了一个产品列表 , 点击产品即可跳转到产品详情页 。 通过集成MinCloud从知晓云获取产品信息 , 最后为该Clip生成一个二维码 , 用户只需使用iOS14的扫码工具扫描二维码 , 即可跳转到Clip 。
创建AppClipTarget
在已存在的SugarDemo工程创建一个AppClipTarget , 并命名为SugarClip 。
知晓程序|开发|刚上线的苹果「小程序」得这么做
文章图片
知晓程序|开发|刚上线的苹果「小程序」得这么做
文章图片
这时在工程目录中多了个SugarClip目录 , 接下来我们就可以在这里实现AppClip了 。
知晓程序|开发|刚上线的苹果「小程序」得这么做
文章图片
导入MinCloud
通过CocoaPods集成MinCloud , 打开Podfile文件 , 添加以下内容:
platform:ios,'11.0'target'SugarClip'douse_frameworks!pod'MinCloud',:git=>'https://github.com/ifanrx/hydrogen-ios-sdk.git'pod'Moya','~>13.0'pod'SnapKit'pod'Kingfisher'endtarget'SugarDemo'douse_frameworks!pod'MinCloud',:git=>'https://github.com/ifanrx/hydrogen-ios-sdk.git'pod'SnapKit'pod'Kingfisher'end
添加完后 , 执行podinstall安装 。
安装好MinCloud后在工程中导入MinCloud , 打开SugarClip的AppDelegate.swift文件 , 在文件顶部添加importMinCloud , 并在application(_:didFinishLaunchingWithOptions:)方法内添加:
funcapplication(_application:UIApplication,didFinishLaunchingWithOptionslaunchOptions:[UIApplication.LaunchOptionsKey:Any]?)->Bool{//Overridepointforcustomizationafterapplicationlaunch.BaaS.register(clientID:''fdc4feb5403a985fe681'')//注册clientidBaaS.isDebug=true//是否打印日志returntrue}
获取产品数据
Product结构
首先创建一个Product结构 , 用于表示产品信息 。
structProduct:Decodable{publicvarid:String//产品idpublicvarname:String?//产品名称publicvarparticipantCount:Int?//参与讨论人数publicvarcoverImage:String?//封面图publicvarrating:Double?//产品评分publicvarbrief:String?//产品简介publicvardescription:String?//产品描述}
获取产品列表
funcloadProductList(){lettable=Table(tableId:''105766'')table.find{[weakself](recordList,error)inifletlist:List=recordList?.listInfo.decoded(){self?.products=list.objectsself?.tableView.reloadData()//刷新产品列表}}}
Table对应MinCloud的表结构 , 通过表id就可以操作对应表数据 。 使用find操作来获取产品表所有产品记录 , 获取产品记录后 , 将其解码为List对象 。
获取产品详情
funcloadProduct(){lettable=Table(tableId:''105766'')table.get(productId){[weakself](record,error)inifletproduct:Product=record?.recordInfo.decoded(){self?.product=productself?.displaySubviews()//展示产品详细信息}}}
使用get操作指定产品的id获取产品的所有信息 , 获取产品记录后 , 将其解码为Product对象 。
产品页面
在项目中创建了ProductCell、RatingLabel、BriefView等视图控件 , 分别显示产品列表项、产品评分、产品简介等信息 。 而这些控件可以在主App和AppClip复用 。 因此在SugarDemo目录中创建了需要复用的组件 , 并将对应的文件的TargetMembership中勾选SugarDemo和SugarClip即可复用 。