开发者学堂课程【mPaaS 小程序开发实战: iOS 端自定义开发(二)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/301/detail/3515
iOS 端自定义开发(二)
(三)导航栏右侧设置和关闭按钮
1、全局修改右侧按钮图片和颜色
如果您要修改右侧按钮图片和颜色,则需要引入头文件
#import
>
并进行如下配置。
·修改关闭按钮颜色:
[TASUtils sharedlnstance].customltemColor[UIColor redColor]
。
·修改关闭按钮图片:
[TASUtils sharedlnstance].customCloselmage [Ullmage imageNamed:@"xx"].
·显示分享按钮
[TASUtils sharedInstance]shoulShowSettingMenu YES.
·修改分享按钮图片:
[TASUtils sharedInstance].customSettinglmage [Ullmage imageNamed:@"xx"].
·修改分享按钮颜色:
[TASUtils sharedlnstance].customltemColor[UIColor redColor].
2、全局修改右侧按钮样式
如果您要全局修改右侧按钮样式,则需要在 H5 基类的 viewwillAppear中,重写 rightBarButtonltem.
代码:
1.
-(void)viewWillAppear:(BOOL)animated
2.
{
3.
[super viewWillAppear:animated];
4.
...
5.
BOOL isTinyApp-[NBUtils
isTinyAppWithSession:self.psdSession];
6.
if (isTinyApp)
{
8.
}
9.
}
二、iOS 小程序自定义启动加载页
当启动小程序时如小程序未下载到设备,小程序容器会启动加载页提示用户等待,待小程序安装到设备上,加载页关闭井跳转至小程序。
(一)实现自定义加载页
对于 iOS 小程序,mPaaS 支持开发者自定义加载页内容,您可按照以下步骤进行配置:
继承 APBaseLoadingVievt 的子类,自定义加载页 View 子类您可以在子类中修改页面 view 的样式
1.
//
2.
//
APBaseLoadingview.h
3.
//
APMobileFranework
4.
5.
created by 21angbao.l1b on 2017/8/2.
6.
Copyright 2017 Alipay.All rights reserved.
7. //
8.
9.
#import
<
UIKat/UIKt.h>
void(ADFLoadEnoPageAninaconpleteBlock)a Ths biock declaraton is not a prot
sprotocol APBaseLoadingviewDelegate;
intertace APBaseLoadingview UIview
cproperty (nonatomic. strong) UTImageview eiconImageview;
property (nonatomic,strongl UILabel
etitleLabel;
eproperty (nonatomic,strong)UIPageControl epagecontrol;
eproperty (nonatomic,assign) BOOL
isFarststop:oastoploading.
-property (nonatomic,assion)BOOL
isLoading:
cproperty (nonatomic,weak) idCAPBaseLoadingviewDelegake>delegate;
1.@interface MPBaseLoadingView APBaseLoadingView
2.
3.Cend
4.
5.@implementation MPBaseLoadingview
29. CGSize size =self.bounds.size:
30 CGRectframeCGRectMake((size.width-80)/2,08
31、self.iconlmageView.frame:frame:
32、
33、frame=CGRECTMAKE(15,RECTGEtMAxY(self.iconlmageView.frame)+6,sizew30
34 self.titleLabel.frame=frame:
35
36、frame:CGRECTMAKE((size.width-40)/2CGRECTGTMAXY(self.titleabel.fame+21402
37 self.pageControl.frame=frame:
38、
39、
40 eend
三、iOS 小程序自定义双向通道与 iOS 小程序 API 权限扩展配置
调用分为两种方式,第一个就是小程序调用。自定义的 api 进行小程序 re native 的通信,主要也分为两部,第一个是自定 jsp。可以参考这一篇自定义js的文档进行说明。
G scp 主要是它的使用场景,如果要从页面发起L调用,比如想调用 native 的相机或者短信的功能,需要让小程序与内进行一个通信。这里通过自定义 G cpi,也提供了两种方式,第一个是bin的注册,第二是代码注册,建议是直接使用bin的注册比较好 对J jsp 进行管理。结合代码,自定义的J S api,G S有一个命名的的规范,命名成xxx jsp 的开头,其中xxx表示对自定义的前缀,最好是个性化的定制,避免与容器默认的 api 进行冲突,第二它必须是继承自 psd J S ai handle 的。
必须继承它最后是在它的点M文件中,需要实现这个 handle 方法,这个方法呢有三个参数,data 是小程序页面调用这个 J C 的时候传入的一些参数信息。第二个 cont 其实就是当前这个小程序页面的一个上下文,最后有一个 cb 参数,是调用这个 api 完成之后的一个回调,可以离子点的方式把回调的结果传递到小程序上面去。这就是自定义js的代码。
第二步是注册 api。也就是需要在一个文件中注册 app。这个拼词文件就是可以直接下载文档上的模板文件,添加到工程中。只要打开这个 pix 的文件,在 J S 数组下面添加一个 item,这个 item 有两个属性。第一个 jsp I 表示的是在小程序中调用这个 jsp 的一个接口名。就是这个 api 的名称,然后第二个类目就是刚刚创建的这个 J S H 实现内的类名。
最后一步,需要在初始化容器材质的时候,指定自定义的文件的路径,在初始化 beforeD 的方法里面初始化容器的时候,也就不再是这么简单的操作,而且传入参数,这个自定义 P 的文件所在的一个路径。这个就是它传入到参数里面去,这样就完成了piss的文件的注册了,配置完成之后,就完成了 J S C 的自定义的一个 jsp I。制定好建设配置,下一步在小程序里面就可以调用这个 app 了。
具体的话,可以看在这个 js 里面,这个是对应的自定义于 api 的一个页面。有一个点击按钮,点击按钮的话就会触发这个T的方法。调用这个自定义的 J S 这里的 ty 就是在就注册这个届决赛的时候传入了,看一下它的效果,就是在手机上,因为这个 a P F 是定义的,N 的,所以一定要跑在真机上,才能看到效果。
调试的小程序,然后扫描二维码,切换到这个自定音乐。接碎片的这个页面。这个就是自定义 jsp 的 api 来用于小程序调用原生的的一个方法,总结下来就是首先自定义,一个 J acp I,然后在小程序里面来调用这个 api 进行一个通信。
除了这个之外,后面还提供了一个,从原生应用下场小程序发送自定义事件的一个方式,可以在N面发送一个事件,然后在小程序里面监听这个事件之后,可以拿到从N主动出发来的一些参数,或者一些信息。
首先第一步是要在小程序里面注册监听事件。这里是在小程序 S via J J S 里面,在小程序启动的时候,监听这个事件。下一步需要在客户端来 N 来发送这个事件,需要在小程序当前所在的页面里面调一个 C 的方法,这个方法里面有几个参数,第一个参数,就是名称,这个名称就是由 ide 里面,名称是要保持一致的。第二个是向小程序发送的一些参数信息,这个事件携带的一些参数信息,最后是一个cb的回调。拷贝这个方法之后。
演示就简单一点,点击这个关闭按钮的时候。在这个H五页面,点击这个关闭按钮的时候不再是退出这个 app,而是让它发送出一个时间来,再重新的运行一下工程。
点击调试这个小程序,扫描二维码,点击关闭。知道后面这个时候会触发这个事件,触发设计的时候可以看到手机端里面的小程序页面就会收到出发的这个事件。其中的 data 就是刚刚传递的参数。就实现了向小程序发送消息的过程。
如果已有小程序 API 或事件无法满足开发需求,您也可以自行扩展。
(一)小程序调用原生自定义 API
1.客户端自定义 APL 并注册。
参考自定义 JSAPI.注册您的自定义 APl。
2.小程序调用。
代码:
1.My.callCTINYTONAtive
2.PARAM1:Plaaa
3.param2:p2bbb
4.1.(RESULT) =* (
5.console.log(result):
6.my.showToast(f
7.type:one
8.content:result
.message
9.duration:3000
10. ]};
11.]}
(二)原生应用向小程序发送自定义事件
1.小程序注册事件
代码:
1.MY.ON(NATIVETOTINY.(RES) = (
2.my.showToast(8
3. type:one
4. CONTENT: JSON.STRINGIFy(RES)
5. duration: 3000
6. SUCCESS: 0 => 0
7.
8.1
9.fall: 0=0
10.
11.3
12. COMPLETE: 0=0
13.
14.1
(1)自定义 JSAPI
要从页面发起 Native 功能调用,例如显示一个 ActionSheet,或显示联系人对话框,您需要扩展一个 JavaScriptAP
(JSAPI)。使用 JSAPL.可以让您在 H5 页面增加 Native 功能调用入口。通过实现自定义 JSAPI 类中的 handler 方法,以 Native 的形式实现特定功能。
H 5容器组件提供以下能力:
·丰富的内置JSAP.实现例如页面 push、pop、标题设置等功能。更多信息,请参见内置 JSAPl。
·支持用户自定义 JSAPI 和插件功能,扩展业务需求。
·本文将结合H5容器和离线包 Demo,自定义一个在 H5页面加载时,修改页面导航栏的插件。
(2)关于此任务:
自定义一个JSAPI可以有以下两种方式:
1 ist 注册
2代码注册
操作步骤:
ist 注册
1>.创建 JSAPI 类
命名规范:为与容器默认提供的插件命名保持一致,创建的 JSAPI 类命名以 XXJsApi4 开头,其中XX为自定义的前级
2>基类:所有 JSAPI 均继承自 PSDJSAPiHandlere
3>实现基础方法:
在.m 文件中,需重写方法(void)handler:context:callback:当在前端调用此 JSAPI时,会转发到此方法