HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

语法错误检查验证在哪里,类似jshint那种报错检查

语法验证 HBuilder
  1. 手工校验语法
    在打开的文档中点右键或在工具菜单下,有个按钮叫“验证本文档语法”。
    点击验证一次后,后面每次修改保存都会再校验一次。直到关闭本文档。
  2. 自动校验语法
    选项-HBuilder-语法验证器设置,可以开启关闭各种语法验证功能。
    打开自动验证后,会扫描整个项目,并把错误标记出来。
    修改过的文档,也是保存后再校验一次。
    自动校验比较耗资源,硬件配置不高的用户、或打开比较大的工程或文档时还需谨慎,觉得卡顿时关闭自动验证,使用手动验证。
继续阅读 »
  1. 手工校验语法
    在打开的文档中点右键或在工具菜单下,有个按钮叫“验证本文档语法”。
    点击验证一次后,后面每次修改保存都会再校验一次。直到关闭本文档。
  2. 自动校验语法
    选项-HBuilder-语法验证器设置,可以开启关闭各种语法验证功能。
    打开自动验证后,会扫描整个项目,并把错误标记出来。
    修改过的文档,也是保存后再校验一次。
    自动校验比较耗资源,硬件配置不高的用户、或打开比较大的工程或文档时还需谨慎,觉得卡顿时关闭自动验证,使用手动验证。
收起阅读 »

HBuilder会支持可视化编辑的设计器吗

HBuilder

不会。
HBuilder是一个极客工具,不是傻瓜工具。
我们不喜欢托拉拽后自动生成一堆不知道放到哪个div下的代码。
我们更喜欢敲m。

在mui项目里,敲m,拉出所有控件,选一个回车,然后在边改边看里预览,这样的开发方式更爽更快更不易出错。

继续阅读 »

不会。
HBuilder是一个极客工具,不是傻瓜工具。
我们不喜欢托拉拽后自动生成一堆不知道放到哪个div下的代码。
我们更喜欢敲m。

在mui项目里,敲m,拉出所有控件,选一个回车,然后在边改边看里预览,这样的开发方式更爽更快更不易出错。

收起阅读 »

HBuilder可以放在U盘里随便移动吗?

同步

可以。
但工程和配置不会跟着走。
工程同步可以用svn、git等代码管理服务器,或dropbox、百度同步盘等同步工具。

可以。
但工程和配置不会跟着走。
工程同步可以用svn、git等代码管理服务器,或dropbox、百度同步盘等同步工具。

为什么黑色主题伤眼

护眼 主题 配色 绿柔 monokai

不知道从何时起,程序员界和电子书界脱节了。
都是长时间盯着电脑的人,所有读者看电子书,都使用泛黄色的背景,而程序员圈中却开始流行黑色背景。甚至误传液晶下黑色的发光量偏少,所以黑色更护眼。
我相信做电子书的公司如果把背景从泛黄改为黑色,并告诉他的用户黑色更护眼,这家电子书公司肯定会倒闭掉。

那为什么还说黑色伤眼?
我们从色彩生理学和色彩心理学2个方面分析。

  1. 就人眼肌肉的紧张度而言,高对比度的伤害大于光线量的伤害。
    在阳光明媚的草原上,虽然光线量非常大,但人眼很舒适。
    但在黑色屋子里,手机屏幕亮度调到最低,光线量远低于前者,但仍然刺眼。
    这是对比度的影响造成的。
    人眼看到的画面,高对比度会造成更大的伤害。
    尤其是程序员要看8个小时的屏幕,所以柔和、低对比度的界面能让人眼肌肉更放松。
  2. 暗适应的伤害。
    这里是百度百科对暗适应的解释:http://baike.baidu.com/view/344920.htm
    人眼看多了黑色界面,转头看自然光环境时,会晕眩。
    当你盯着黑色主题看了1个小时后,切屏到浏览器,或者转头看同事,都会发生晕眩,
    反之从明亮环境进入到黑色环境,眼球也需要分泌视紫红质来适应。
    人眼及大脑都要不停的调节。
  3. 视紫红质和维生素A和夜盲症
    暗适应会引发人眼增加分泌视紫红质,但视紫红质的合成需要维生素A,也就是长期看暗色界面会增加维生素A的消耗。
    夜盲症是由于维生素A不足,合成视紫红质不足而产生的。
    即使现在还没有夜盲症,也要预防。
  4. 人眼最喜欢的光是黄色和绿色
    黄色和绿色的波长,是人眼最放松的波长。
    绿柔的背景是暖黄色,前景的代码颜色,虽然多彩,但每种颜色的RGB中的G,即绿色值,都调大了。
  5. 从色彩心理学看,温暖的颜色比暗色更舒服。
    人眼看到的景色,大脑会产生联想,并进而影响心情。
    看到绿色就会联想到草原森林,心情不自觉的就好一点。
    而看久了暗色或刺激性颜色,心情会压抑。
    每天看8个小时屏幕不是小事,心情舒畅很重要。
  6. 绿柔设计不止是设计理论,是经过科学验证的结果
    我们在北京国奥心理医院专门为不同的开发者做过脑电波疲劳值测试。
    参与实验的程序员在充分休息后,分别使用绿柔和黑色主题的编程工具进行编码半小时,并监测脑电波的数据变化。
    通过对实验者的脑电波产生的17万条数据的分析,利用医院仪器打印出的疲劳值、紧张度和注意力集中程度数值,实验后测试者的疲劳度均上升,但, 使用绿柔工作的程序员疲劳值上升相对缓慢,紧张程度最低,注意力最集中。
    使用黑色主题编码后疲劳值的上升幅度达到使用绿柔上升幅度的700%!
    实验详情见这里https://ask.dcloud.net.cn/article/35112
继续阅读 »

不知道从何时起,程序员界和电子书界脱节了。
都是长时间盯着电脑的人,所有读者看电子书,都使用泛黄色的背景,而程序员圈中却开始流行黑色背景。甚至误传液晶下黑色的发光量偏少,所以黑色更护眼。
我相信做电子书的公司如果把背景从泛黄改为黑色,并告诉他的用户黑色更护眼,这家电子书公司肯定会倒闭掉。

那为什么还说黑色伤眼?
我们从色彩生理学和色彩心理学2个方面分析。

  1. 就人眼肌肉的紧张度而言,高对比度的伤害大于光线量的伤害。
    在阳光明媚的草原上,虽然光线量非常大,但人眼很舒适。
    但在黑色屋子里,手机屏幕亮度调到最低,光线量远低于前者,但仍然刺眼。
    这是对比度的影响造成的。
    人眼看到的画面,高对比度会造成更大的伤害。
    尤其是程序员要看8个小时的屏幕,所以柔和、低对比度的界面能让人眼肌肉更放松。
  2. 暗适应的伤害。
    这里是百度百科对暗适应的解释:http://baike.baidu.com/view/344920.htm
    人眼看多了黑色界面,转头看自然光环境时,会晕眩。
    当你盯着黑色主题看了1个小时后,切屏到浏览器,或者转头看同事,都会发生晕眩,
    反之从明亮环境进入到黑色环境,眼球也需要分泌视紫红质来适应。
    人眼及大脑都要不停的调节。
  3. 视紫红质和维生素A和夜盲症
    暗适应会引发人眼增加分泌视紫红质,但视紫红质的合成需要维生素A,也就是长期看暗色界面会增加维生素A的消耗。
    夜盲症是由于维生素A不足,合成视紫红质不足而产生的。
    即使现在还没有夜盲症,也要预防。
  4. 人眼最喜欢的光是黄色和绿色
    黄色和绿色的波长,是人眼最放松的波长。
    绿柔的背景是暖黄色,前景的代码颜色,虽然多彩,但每种颜色的RGB中的G,即绿色值,都调大了。
  5. 从色彩心理学看,温暖的颜色比暗色更舒服。
    人眼看到的景色,大脑会产生联想,并进而影响心情。
    看到绿色就会联想到草原森林,心情不自觉的就好一点。
    而看久了暗色或刺激性颜色,心情会压抑。
    每天看8个小时屏幕不是小事,心情舒畅很重要。
  6. 绿柔设计不止是设计理论,是经过科学验证的结果
    我们在北京国奥心理医院专门为不同的开发者做过脑电波疲劳值测试。
    参与实验的程序员在充分休息后,分别使用绿柔和黑色主题的编程工具进行编码半小时,并监测脑电波的数据变化。
    通过对实验者的脑电波产生的17万条数据的分析,利用医院仪器打印出的疲劳值、紧张度和注意力集中程度数值,实验后测试者的疲劳度均上升,但, 使用绿柔工作的程序员疲劳值上升相对缓慢,紧张程度最低,注意力最集中。
    使用黑色主题编码后疲劳值的上升幅度达到使用绿柔上升幅度的700%!
    实验详情见这里https://ask.dcloud.net.cn/article/35112
收起阅读 »

代码自动换行在哪里设?

HBuilder

对编辑器点右键,自动换行,是仅对本编辑器生效的。
在菜单视图下面选自动换行,是对所有编辑器生效的。

HBuilder自动换行的状态不保存,重启HBuilder后还需要再配置。
HBuilderX是保存状态的。

对编辑器点右键,自动换行,是仅对本编辑器生效的。
在菜单视图下面选自动换行,是对所有编辑器生效的。

HBuilder自动换行的状态不保存,重启HBuilder后还需要再配置。
HBuilderX是保存状态的。

整理代码格式ctrl+shift+f经常失效

快捷键

应该是与搜狗输入法冲突了。
它也注册了ctrl+shift+f。
建议把搜狗输入法的这个快捷键取消掉。

应该是与搜狗输入法冲突了。
它也注册了ctrl+shift+f。
建议把搜狗输入法的这个快捷键取消掉。

iOS后台运行权限配置

audio UIBackgroundModes iOS

此文档不再维护,请参考新文档地址:https://uniapp.dcloud.io/tutorial/app-ios-uibackgroundmodes

应用切换到后台继续音乐播放

iOS平台应用切换到后台会停止运行,通常情况当应用切换到后台时音乐将暂停播放,下次切换到前台继续播放。如果要支持应用切换到后台后继续播放音乐功能需要进行配置后台播放音乐的能力。

可视化配置

打开项目的manifest.json文件,在“(App)常用其它设置”项的“iOS设置”下“后台运行能力”的输入框中填入audio

如果可视化界面中没有此项配置,请参考下面“源码视图配置”。

注意:如果提示“暂不支持数组格式的查看和修改,请在源码视图中查看和修改”,说应用之前通过源码视图配置过,请参考下面源码视图配置

源码视图配置

打开项目的manifest.json文件,选择“源码视图”项

  • 5+ App项目
    在 "plus" -> "distribute" -> "apple" 下添加 "UIBackgroundModes"字段
  • uni-app项目
    在 "app-plus" -> "distribute" -> "ios" 下添加 "UIBackgroundModes"字段

UIBackgroundModes字段值为字符串数组类型,输入audio表示支持后台播放音乐:

        // ...  
        "UIBackgroundModes": ["audio"],  
        // ...

如果需要同时支持后台定位和后台播放音乐,UIBackgroundModes字段值可配置为["audio","location"]

如果您是开发插件,需要配置其他后台权限,请参考这篇 文档

注意事项

真机运行不支持此功能,需要提交到打App云端打包才生效

应用切换到后台播放音乐时,会导致应用持续在后台运行,此时需要避免调用同步5+ API(调用直接返回数据的API),在后台运行时此类API将无法同步返回数据

iOS切换到后台支持获取位置信息功能
iOS更多后台能力可参考苹果官方文档

继续阅读 »

此文档不再维护,请参考新文档地址:https://uniapp.dcloud.io/tutorial/app-ios-uibackgroundmodes

应用切换到后台继续音乐播放

iOS平台应用切换到后台会停止运行,通常情况当应用切换到后台时音乐将暂停播放,下次切换到前台继续播放。如果要支持应用切换到后台后继续播放音乐功能需要进行配置后台播放音乐的能力。

可视化配置

打开项目的manifest.json文件,在“(App)常用其它设置”项的“iOS设置”下“后台运行能力”的输入框中填入audio

如果可视化界面中没有此项配置,请参考下面“源码视图配置”。

注意:如果提示“暂不支持数组格式的查看和修改,请在源码视图中查看和修改”,说应用之前通过源码视图配置过,请参考下面源码视图配置

源码视图配置

打开项目的manifest.json文件,选择“源码视图”项

  • 5+ App项目
    在 "plus" -> "distribute" -> "apple" 下添加 "UIBackgroundModes"字段
  • uni-app项目
    在 "app-plus" -> "distribute" -> "ios" 下添加 "UIBackgroundModes"字段

UIBackgroundModes字段值为字符串数组类型,输入audio表示支持后台播放音乐:

        // ...  
        "UIBackgroundModes": ["audio"],  
        // ...

如果需要同时支持后台定位和后台播放音乐,UIBackgroundModes字段值可配置为["audio","location"]

如果您是开发插件,需要配置其他后台权限,请参考这篇 文档

注意事项

真机运行不支持此功能,需要提交到打App云端打包才生效

应用切换到后台播放音乐时,会导致应用持续在后台运行,此时需要避免调用同步5+ API(调用直接返回数据的API),在后台运行时此类API将无法同步返回数据

iOS切换到后台支持获取位置信息功能
iOS更多后台能力可参考苹果官方文档

收起阅读 »

iOS离线打包

App离线打包 uniapp离线打包 自定义组件模式

最新iOS平台App本地离线打包,请前往https://nativesupport.dcloud.net.cn/AppDocs/usesdk/ios


预备环境

SDK目录说明

  • HBuilder-Hello:离线打包演示应用;
  • Feature-iOS.xls:iOS平台各扩展Feature API对应的库文件列表;
  • Readme.txt:说明文件。

注意:HBuilder运行环境相关库文件已全部包含在HBuilder-Hello演示应用中

配置编译工程

  • 从演示应用HBuilder-Hello创建工程

解压SDK包,进入目录HBuilder-Hello, 双击“HBuilder-Hello.xcodeproj”文件打开工程:
(建议不要将工程移出SDK目录,如需移动工程则要重新引入头文件和静态库文件到工程里)

- 配置应用标识(Bundle Identifier)

选择左侧“Project Navigator”中应用工程根目录,选中TARGETS下的HBuilder打开工程属性界面,在General下修改Identity的值:

其中Bundle Identifier为苹果的AppID,必须与应用发布是配置的Profile关联的AppID一致;Version为应用版本号,在App Store中显示的版本号,推荐与manifest.json中version下的name值一致;Build为编译版本号,App Store判断升级使用,推荐与manifest.json中version下的code值一致。

<a id="name">- 配置应用名称 </a>

1、在打开的原生工程中,点击工程的targets和点开manifest文件,然后将manifest文件里的“name”字段的内容 和原生工程里的Display Name 的写成一样。注意,manifest文件里的”name“ 对应的是HBuilderX打开的工程里的“基础配置”里的应用名称。如下图红色框所示:


2、如果需要配置国际化,在工程导航界面,选择InfoPlist.strings文件,修改CFBundleDisplayName值为应用名字:
InfoPlist.strings(English)为英文系统应用名,Simplified为中文简体系统应用名


<a id="versionname">- 配置应用版本名称 </a>
在打开的原生工程中,点击工程的targets和点开manifest文件,然后将manifest文件里的“version”字段里的“name”的内容 和原生工程里的Version 的写成一样。注意,manifest文件里的“version”字段里的“name” 对应的是HBuilderX打开的工程里的“基础配置”里的应用版本名称。如下图红色框所示:


<a id="versioncode">- 配置应用版本号 </a>
在打开的原生工程中,点击工程的targets和点开工程里的manifest文件,然后将manifest文件里的“version”字段里的“code”的内容 和原生工程里的Build 的写成一样。注意,manifest文件里的“version”字段里的“code” 对应的是HBuilderX打开的工程里的“基础配置”里的应用版本号。如下图红色框所示:

- 配置应用图标和启动界面

第一种Launch Images Source方式

1、按下图所示,在配置的地方设置为空,这样配置之后启动界面就会是splash目录里配置的图了,就不会是LaunchScreen.storyboard 作为启动界面了。


2、演示工程中已经配置好了应用的图标和启动界面,只需要将对应的,符合要求的图片拷贝到对应工程里的icon和splash目录即可:

第二种Launch Screen File方式

1、按下图方法配置Launch Screen File,这样配置之后启动界面就会是设置的LaunchScreen.storyboard。


2、制作LaunchScreen.storyboard(这个storyboard的名称是可以自定义的),如果想自定义LaunchScreen.storyboard,这需要你会原生知识,知道怎样创建Launch Screen File,知道怎样在storyboard中布局视图,设置约束等。如果不想自定义,可以使用官方已经制作好的storyboard,官方提供了2个storyboard,一个是图标、名称在上方的;另外一个是图标、名称在下方的。
注意:在使用Launch Screen File方式作为启动界面时,需要把一张或几张清晰的图标拷贝到app.imageset文件夹下,用来给启动界面加载图标。如果拷贝过去的图标不清晰会导致启动界面上的图标不清晰、模糊的现象出现。

- 更新应用资源

注意:Pandora目录为folder references引入方式,修改后不会自动更新,需要在模拟器或设备删除应用后再重新运行  
注意:拷贝到Pandora目录的www目录中manifest.json需要删除注释

如何从HBuilderX中导出应用资源请参考:HBilderX生成本地打包App资源

打开pandora -> apps 目录,将下面“HelloH5”目录名称修改为应用manifest.json中的id字段值,uni-app项目为manifest.json中的appid字段值(这步非常重要,否则会导致应用无法正常启动),并将所有应用资源拷贝到其下的www目录中:

- 配置应用信息

打开工程目录下的control.xml文件,修改appid值:

其中appid值为HBuilder应用的appid,必须与应用manifest.json中的id字段值(uni-app项目为manifest.json中的appid字段值)完全一致;appver为应用的版本号,用于应用资源的升级,必须保持与manifest.json中的version -> name值完全一致;version值为应用基座版本号(plus.runtime.innerVersion返回的值),不要随意修改。

- 配置应用使用的5+功能模块(可选)

演示应用中已经引用HBuilder所有扩展的5+ API功能模块,如果在应用中没有使用到,为了减少发布时安装包的大小可以删除不使用的模块。按下图打开链接库文件配置列表:

在“Feature-iOS.xls”文件中查找不使用模块对应的“LinkerFlags”,从列表中删除。
如不使用“相机模块”,则可选中“liblibCamera.a”、按退格键删除(按option键可以多选):

- 配置第三方库的参数

如果用到使用第三方库的功能模块(如推送、分享、语音识别、统计),则需要通过“Feature-iOS.xls”文件中查找对应模块的“Info”值,并在工程属性界面“Info”下“Custom iOS Target Properties”中找到对应的项配置:

如百度地图,需要配置在百度云平台申请应用的appkey,找到“baidu”项下的“appkey”,双击后输入正确的appkey值:

注意:新浪微博和微信分享还需要配置应用的URL Schemes,在“URL Types”项下分别输入在各开放平台申请的值:

配置完成编译运行

应用配置完毕,在模拟器上编译运行应用:

正确编译后启动模拟器并运行:

<a id="channel">如何配置多渠道和广告 </a>

在需要的打包的原生工程中找到工程的配置文件-Info.plist ,然后添加marketChannel节点,节点内容格式为:包名|应用标识|广告标识|渠道 如io.dcloud.HB|appid|adid|apple
包名:对应xcode里的bundleid,如io.dcloud.HBuilder。
应用标识:对应5+或uni-app项目manifest.json中appid。
广告标识:DCloud的广告标识,开通广告后可在dev.dcloud.net.cn获取,如果没有开通广告,设置值为空即可。
渠道:可以填apple。

注意:如果要配置广告,需要2个步骤:
1.在info.plist文件里加DCLOUD_AD_ID节点,内容 为自己申请的广告adid
2.把marketChannel节点的广告标识换成申请的广告标识。如下图所示:

如何关闭广告

5+SDK里默认打开了开屏广告,用户如果不需要开屏广告可在Appdelegate.m文件中注释如下部分,并删除ad库文件,即可关闭广告

// 示例默认带开屏广告,如果不需要广告,可注释下面一行,  
#define ENABLEAD


如果需要关闭其他类型的广告可在应用的manifest.json文件中增加如下配置

    "plus": {  
        "ads": {  
            "push":"false",       
            "splash":"false",     
            "rp":"false",          
            "spot":"false",       
        }  
    }

说明可参考文档 Manifest.json文档说明 manifest配置ads部分

如何配置3D Touch

配置3D Touch

<a id="advertisingIdentifier">如何配置IDFA </a>

首先要知道:打开IDFA不影响AppStore审核
如何知道项目中是否使用广告标示符,其实就是查看framework中是否有个叫AdSupport.framework的框架,如果检查工程中没有AdSupport.framework,可能是接入的第三方库里面有,用以下方法检查第三方中是否包含有IDFA版本:
(1)打开终端cd到要检查的文件的目录;
(2)执行命令:grep -r advertisingIdentifier . (注意别少了点);
iOS平台配置应用使用广告标识(IDFA)

<a id="pushRegister">如何配置启动时是否注册Push </a>

如何配置启动时是否注册Push

提交审核时提示有其他支付并隐藏功能被拒的处理办法

点击处理办法

Android平台请参考Android离线打包

继续阅读 »

最新iOS平台App本地离线打包,请前往https://nativesupport.dcloud.net.cn/AppDocs/usesdk/ios


预备环境

SDK目录说明

  • HBuilder-Hello:离线打包演示应用;
  • Feature-iOS.xls:iOS平台各扩展Feature API对应的库文件列表;
  • Readme.txt:说明文件。

注意:HBuilder运行环境相关库文件已全部包含在HBuilder-Hello演示应用中

配置编译工程

  • 从演示应用HBuilder-Hello创建工程

解压SDK包,进入目录HBuilder-Hello, 双击“HBuilder-Hello.xcodeproj”文件打开工程:
(建议不要将工程移出SDK目录,如需移动工程则要重新引入头文件和静态库文件到工程里)

- 配置应用标识(Bundle Identifier)

选择左侧“Project Navigator”中应用工程根目录,选中TARGETS下的HBuilder打开工程属性界面,在General下修改Identity的值:

其中Bundle Identifier为苹果的AppID,必须与应用发布是配置的Profile关联的AppID一致;Version为应用版本号,在App Store中显示的版本号,推荐与manifest.json中version下的name值一致;Build为编译版本号,App Store判断升级使用,推荐与manifest.json中version下的code值一致。

<a id="name">- 配置应用名称 </a>

1、在打开的原生工程中,点击工程的targets和点开manifest文件,然后将manifest文件里的“name”字段的内容 和原生工程里的Display Name 的写成一样。注意,manifest文件里的”name“ 对应的是HBuilderX打开的工程里的“基础配置”里的应用名称。如下图红色框所示:


2、如果需要配置国际化,在工程导航界面,选择InfoPlist.strings文件,修改CFBundleDisplayName值为应用名字:
InfoPlist.strings(English)为英文系统应用名,Simplified为中文简体系统应用名


<a id="versionname">- 配置应用版本名称 </a>
在打开的原生工程中,点击工程的targets和点开manifest文件,然后将manifest文件里的“version”字段里的“name”的内容 和原生工程里的Version 的写成一样。注意,manifest文件里的“version”字段里的“name” 对应的是HBuilderX打开的工程里的“基础配置”里的应用版本名称。如下图红色框所示:


<a id="versioncode">- 配置应用版本号 </a>
在打开的原生工程中,点击工程的targets和点开工程里的manifest文件,然后将manifest文件里的“version”字段里的“code”的内容 和原生工程里的Build 的写成一样。注意,manifest文件里的“version”字段里的“code” 对应的是HBuilderX打开的工程里的“基础配置”里的应用版本号。如下图红色框所示:

- 配置应用图标和启动界面

第一种Launch Images Source方式

1、按下图所示,在配置的地方设置为空,这样配置之后启动界面就会是splash目录里配置的图了,就不会是LaunchScreen.storyboard 作为启动界面了。


2、演示工程中已经配置好了应用的图标和启动界面,只需要将对应的,符合要求的图片拷贝到对应工程里的icon和splash目录即可:

第二种Launch Screen File方式

1、按下图方法配置Launch Screen File,这样配置之后启动界面就会是设置的LaunchScreen.storyboard。


2、制作LaunchScreen.storyboard(这个storyboard的名称是可以自定义的),如果想自定义LaunchScreen.storyboard,这需要你会原生知识,知道怎样创建Launch Screen File,知道怎样在storyboard中布局视图,设置约束等。如果不想自定义,可以使用官方已经制作好的storyboard,官方提供了2个storyboard,一个是图标、名称在上方的;另外一个是图标、名称在下方的。
注意:在使用Launch Screen File方式作为启动界面时,需要把一张或几张清晰的图标拷贝到app.imageset文件夹下,用来给启动界面加载图标。如果拷贝过去的图标不清晰会导致启动界面上的图标不清晰、模糊的现象出现。

- 更新应用资源

注意:Pandora目录为folder references引入方式,修改后不会自动更新,需要在模拟器或设备删除应用后再重新运行  
注意:拷贝到Pandora目录的www目录中manifest.json需要删除注释

如何从HBuilderX中导出应用资源请参考:HBilderX生成本地打包App资源

打开pandora -> apps 目录,将下面“HelloH5”目录名称修改为应用manifest.json中的id字段值,uni-app项目为manifest.json中的appid字段值(这步非常重要,否则会导致应用无法正常启动),并将所有应用资源拷贝到其下的www目录中:

- 配置应用信息

打开工程目录下的control.xml文件,修改appid值:

其中appid值为HBuilder应用的appid,必须与应用manifest.json中的id字段值(uni-app项目为manifest.json中的appid字段值)完全一致;appver为应用的版本号,用于应用资源的升级,必须保持与manifest.json中的version -> name值完全一致;version值为应用基座版本号(plus.runtime.innerVersion返回的值),不要随意修改。

- 配置应用使用的5+功能模块(可选)

演示应用中已经引用HBuilder所有扩展的5+ API功能模块,如果在应用中没有使用到,为了减少发布时安装包的大小可以删除不使用的模块。按下图打开链接库文件配置列表:

在“Feature-iOS.xls”文件中查找不使用模块对应的“LinkerFlags”,从列表中删除。
如不使用“相机模块”,则可选中“liblibCamera.a”、按退格键删除(按option键可以多选):

- 配置第三方库的参数

如果用到使用第三方库的功能模块(如推送、分享、语音识别、统计),则需要通过“Feature-iOS.xls”文件中查找对应模块的“Info”值,并在工程属性界面“Info”下“Custom iOS Target Properties”中找到对应的项配置:

如百度地图,需要配置在百度云平台申请应用的appkey,找到“baidu”项下的“appkey”,双击后输入正确的appkey值:

注意:新浪微博和微信分享还需要配置应用的URL Schemes,在“URL Types”项下分别输入在各开放平台申请的值:

配置完成编译运行

应用配置完毕,在模拟器上编译运行应用:

正确编译后启动模拟器并运行:

<a id="channel">如何配置多渠道和广告 </a>

在需要的打包的原生工程中找到工程的配置文件-Info.plist ,然后添加marketChannel节点,节点内容格式为:包名|应用标识|广告标识|渠道 如io.dcloud.HB|appid|adid|apple
包名:对应xcode里的bundleid,如io.dcloud.HBuilder。
应用标识:对应5+或uni-app项目manifest.json中appid。
广告标识:DCloud的广告标识,开通广告后可在dev.dcloud.net.cn获取,如果没有开通广告,设置值为空即可。
渠道:可以填apple。

注意:如果要配置广告,需要2个步骤:
1.在info.plist文件里加DCLOUD_AD_ID节点,内容 为自己申请的广告adid
2.把marketChannel节点的广告标识换成申请的广告标识。如下图所示:

如何关闭广告

5+SDK里默认打开了开屏广告,用户如果不需要开屏广告可在Appdelegate.m文件中注释如下部分,并删除ad库文件,即可关闭广告

// 示例默认带开屏广告,如果不需要广告,可注释下面一行,  
#define ENABLEAD


如果需要关闭其他类型的广告可在应用的manifest.json文件中增加如下配置

    "plus": {  
        "ads": {  
            "push":"false",       
            "splash":"false",     
            "rp":"false",          
            "spot":"false",       
        }  
    }

说明可参考文档 Manifest.json文档说明 manifest配置ads部分

如何配置3D Touch

配置3D Touch

<a id="advertisingIdentifier">如何配置IDFA </a>

首先要知道:打开IDFA不影响AppStore审核
如何知道项目中是否使用广告标示符,其实就是查看framework中是否有个叫AdSupport.framework的框架,如果检查工程中没有AdSupport.framework,可能是接入的第三方库里面有,用以下方法检查第三方中是否包含有IDFA版本:
(1)打开终端cd到要检查的文件的目录;
(2)执行命令:grep -r advertisingIdentifier . (注意别少了点);
iOS平台配置应用使用广告标识(IDFA)

<a id="pushRegister">如何配置启动时是否注册Push </a>

如何配置启动时是否注册Push

提交审核时提示有其他支付并隐藏功能被拒的处理办法

点击处理办法

Android平台请参考Android离线打包

收起阅读 »

复制行以及重复插入行或选区

HBuilder

ctrl+c或x:
如果选中了文字,则复制剪切文字;如果没有选中文字,则复制剪切当前行。

重复插入行或选区的快捷键是ctrl+shift+r:
如果选中文字,则重复插入相同选区的文字;如果没有选中文字,则在下一行插入相同内容的一行。

ctrl+alt+上下在win8以后的系统上被os拦截了,在HBuilder里敲此快捷键会激活windows的屏幕旋转。

继续阅读 »

ctrl+c或x:
如果选中了文字,则复制剪切文字;如果没有选中文字,则复制剪切当前行。

重复插入行或选区的快捷键是ctrl+shift+r:
如果选中文字,则重复插入相同选区的文字;如果没有选中文字,则在下一行插入相同内容的一行。

ctrl+alt+上下在win8以后的系统上被os拦截了,在HBuilder里敲此快捷键会激活windows的屏幕旋转。

收起阅读 »

Android离线打包常见问题

App离线打包

导入工程提示“Unable to resolve target 'android-14'”错误

这是因为Android开发环境中没有安装Android4.0(API 14)SDK,可以右键工程“Properties”,在工程配置页面选择Android栏中选择已安装的SDK进行编译:


右键工程“Android Tools”-> “Fix Project Properties”修复工程中存在的错误配置。

AndroidManifest.xml文件提示错误

模板应用考虑到对低版本的兼容性,目前设置minSdkVersion值为8(即支持Android2.2),而其他库用到的部分特性在此版本不支持,所以提示错误,解决方法:

  1. 如果应用不考虑支持低版本,将minSdkVersion的值改成14(Android4.0),或者其它版本;
  2. 忽略操作,在工程上右键 -> “Android Tools” -> “Clear Lint Markers”。

应用启动后一直停留在启动界面

  • 确认assets -> apps目录下应用目录名称是否与manifest.json中的id是否一致:

  • 确认assets -> apps 目录下应用目录名称是否与asset -> data下control.xml文件中的appid是否一致:

编译是提示Multiple dex files define错误

在编译的过程中提示以下错误:

Unable to execute dex: Multiple dex files define Lio/dcloud/feature/aps/APSBootImpl; [2014-11-22 02:53:30 - HBuilder-Hello] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lio/dcloud/feature/aps/APSBootImpl;

这是因为同时引用个推和MKey推送平台,这两个推送平台只能选择一个。
使用个推推送平台,请在工程的libs目录下删除以下jar包:
aps-dhPush.jar、MKeyPush.jar

使用MKey推送平台,请在工程的libs目录下删除以下jar包:
aps-igexin.jar、GetuiExt-.jar、GetuiSdk.jar

MKey推送平台是数字天堂面向企业用户的私有推送平台

应用启动时白屏

必须保持Androidmanifest.xml下的manifest节点中的package属性与build.gradle中的applicationId一致!

继续阅读 »

导入工程提示“Unable to resolve target 'android-14'”错误

这是因为Android开发环境中没有安装Android4.0(API 14)SDK,可以右键工程“Properties”,在工程配置页面选择Android栏中选择已安装的SDK进行编译:


右键工程“Android Tools”-> “Fix Project Properties”修复工程中存在的错误配置。

AndroidManifest.xml文件提示错误

模板应用考虑到对低版本的兼容性,目前设置minSdkVersion值为8(即支持Android2.2),而其他库用到的部分特性在此版本不支持,所以提示错误,解决方法:

  1. 如果应用不考虑支持低版本,将minSdkVersion的值改成14(Android4.0),或者其它版本;
  2. 忽略操作,在工程上右键 -> “Android Tools” -> “Clear Lint Markers”。

应用启动后一直停留在启动界面

  • 确认assets -> apps目录下应用目录名称是否与manifest.json中的id是否一致:

  • 确认assets -> apps 目录下应用目录名称是否与asset -> data下control.xml文件中的appid是否一致:

编译是提示Multiple dex files define错误

在编译的过程中提示以下错误:

Unable to execute dex: Multiple dex files define Lio/dcloud/feature/aps/APSBootImpl; [2014-11-22 02:53:30 - HBuilder-Hello] Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lio/dcloud/feature/aps/APSBootImpl;

这是因为同时引用个推和MKey推送平台,这两个推送平台只能选择一个。
使用个推推送平台,请在工程的libs目录下删除以下jar包:
aps-dhPush.jar、MKeyPush.jar

使用MKey推送平台,请在工程的libs目录下删除以下jar包:
aps-igexin.jar、GetuiExt-.jar、GetuiSdk.jar

MKey推送平台是数字天堂面向企业用户的私有推送平台

应用启动时白屏

必须保持Androidmanifest.xml下的manifest节点中的package属性与build.gradle中的applicationId一致!

收起阅读 »

【文档已过期】Android离线打包

App离线打包

新版离线sdk文档已发布,离线打包请参考最新文档

<!--

eclipse集成方式已过期,请改用Android studio方式集成,具体请参考文档:

AndroidStudio打包请参考Android平台使用AndroidStudio离线打包说明

=========================以下为过期的eclipse集成文档=========================

预备环境

  • Android开发环境,推荐使用ADT开发工具;
    并要求安装Android4.0(API 14)SDK。

  • 下载HBuilder离线打包Android版SDK(5+ SDK下载)。

离线打包SDK目录说明

  • HBuilder-Hello:eclipse环境离线打包演示应用;
  • HBuilder-Integrate:eclipse环境离线打包带扩展插件演示应用;
  • HBuilder-Integrate-AS:Android Studio环境离线打包带扩展插件演示应用;
  • libs:SDK库文件目录;
  • Feature列表.xls:Android平台各扩展Feature API对应的permission;
  • Readme.txt:版本说明文件。

配置编译工程

  • 导入演示应用HBuilder-Hello工程

启动带ADT的eclipse程序,菜单中选择“File”-> “Import”,打开Import对话框,选中Android下的“Existing Android Code Inot Workspace”:

点击“Browse...”选择模板应用的目录,并选中“Copy project into workspac”将应用导入到Workspace中:

演示工程中已经配置好HelloH5应用相关资源,完成导入后,可Ctrl+F11直接编译运行:

  • 从SDK目录中拷贝要使用的feature库到工程libs目录

参考“Feature列表.xls”文档确定应用中使用到的扩展API,拷贝libs目录中对应的jar/so文件到应用工程的libs目录下。如使用分享功能(新浪微博分享、腾讯微博分享,微信分享),则需要拷贝以下文件:

拷贝完成后在工程中F5刷新可在工程的libs目录下显示:

注意:如果不需要使用到HTML5Plus API,则仅需要pdr.jar包即可。

  • 配置应用的权限

参考“Feature列表.xls”文档确定应用中使用到的扩展API,在AndroidManifest.json文件中删除不用到API的权限。如不使用音频(plus.audio.*)相关5+ API,则可删除Audio相关的权限:

  • 配置其它第三方库的数据

由于第三方库需要使用一些特定的数据,所以在使用时需要将相关参数配置到AndroidManifest.json文件中。如使用分享功能,则需要配置各分享平台的申请应用的相关参数:

如果不使用此类API,则可将此数据删除。

  • 配置应用的包名及版本号

打开AndroidManifest.xml文件,在代码视图中修改根节点的package属性值,如下:

其中package为应用的包名,采用反向域名格式,为应用的标识;versionCode为应用的版本号(整数值),用于各应用市场的升级判断,建议与manifest.json中version -> code值一致;versionName为应用的版本名称(字符串),在系统应用管理程序中显示的版本号,建议与manifest.json中version -> name值一致。

注意:因为其它第三方的SDK也使用到包名相关资源配置,所以需要在AndroidManifest.xml将所有“io.dcloud.HBuilder.Hello”替换成要修改成的包名。

  • 配置应用名称

打开res -> values -> strings.xml文件,修改“app_name”字段值,该值为安装到手机上桌面显示的应用名称:

  • 配置应用图标和启动界面

将应用的图标(文件名为icon.png)和启动图片按照对应的尺寸拷贝到工程的res -> drawable-XXX目录下:

  • 更新应用资源

打开assets -> apps 目录,将下面“HelloH5”目录名称修改为应用manifest.json中的id字段值,uni-app项目为manifest.json中的appid字段值(这步非常重要,否则会导致应用无法正常启动),并将所有应用资源拷贝到其下的www目录中:

  • 配置应用信息

打开assets -> data下的dcloud_control.xml文件,修改appid值:

其中appid值为HBuilder应用的appid,必须与应用manifest.json中的id值完全一致;appver为应用的版本号,用于应用资源的升级,必须保持与manifest.json中的version -> name值完全一致;version值为应用基座版本号(plus.runtime.innerVersion返回的值),不要随意修改。

配置完成编译运行

应用配置完毕,按Ctrl+F11编译运行应用:

选择“Android Application”启动应用,在弹出的设备列表对话框中选择要运行的设备:

点击OK后启动应用:

编译运行后在bin目录下会生成apk,此apk不能提交到应用市场
如果要生成提交到应用市场的正式apk请搜索“android导出apk

5+SDK广告配置
如果需要关闭广告可在应用的manifest.json文件中增加如下配置

    "plus": {  
        "ads": {  
            "push":"false",       
            "splash":"false",     
            "rp":"false",          
            "spot":"false",       
        }  
    }

说明可参考文档 Manifest.json文档说明 manifest配置ads部分

编译过程中碰到问题可参考Android离线打包常见问题

iOS平台请参考iOS离线打包

AndroidStudio打包请参考Android平台使用AndroidStudio离线打包说明
-->

继续阅读 »

新版离线sdk文档已发布,离线打包请参考最新文档

<!--

eclipse集成方式已过期,请改用Android studio方式集成,具体请参考文档:

AndroidStudio打包请参考Android平台使用AndroidStudio离线打包说明

=========================以下为过期的eclipse集成文档=========================

预备环境

  • Android开发环境,推荐使用ADT开发工具;
    并要求安装Android4.0(API 14)SDK。

  • 下载HBuilder离线打包Android版SDK(5+ SDK下载)。

离线打包SDK目录说明

  • HBuilder-Hello:eclipse环境离线打包演示应用;
  • HBuilder-Integrate:eclipse环境离线打包带扩展插件演示应用;
  • HBuilder-Integrate-AS:Android Studio环境离线打包带扩展插件演示应用;
  • libs:SDK库文件目录;
  • Feature列表.xls:Android平台各扩展Feature API对应的permission;
  • Readme.txt:版本说明文件。

配置编译工程

  • 导入演示应用HBuilder-Hello工程

启动带ADT的eclipse程序,菜单中选择“File”-> “Import”,打开Import对话框,选中Android下的“Existing Android Code Inot Workspace”:

点击“Browse...”选择模板应用的目录,并选中“Copy project into workspac”将应用导入到Workspace中:

演示工程中已经配置好HelloH5应用相关资源,完成导入后,可Ctrl+F11直接编译运行:

  • 从SDK目录中拷贝要使用的feature库到工程libs目录

参考“Feature列表.xls”文档确定应用中使用到的扩展API,拷贝libs目录中对应的jar/so文件到应用工程的libs目录下。如使用分享功能(新浪微博分享、腾讯微博分享,微信分享),则需要拷贝以下文件:

拷贝完成后在工程中F5刷新可在工程的libs目录下显示:

注意:如果不需要使用到HTML5Plus API,则仅需要pdr.jar包即可。

  • 配置应用的权限

参考“Feature列表.xls”文档确定应用中使用到的扩展API,在AndroidManifest.json文件中删除不用到API的权限。如不使用音频(plus.audio.*)相关5+ API,则可删除Audio相关的权限:

  • 配置其它第三方库的数据

由于第三方库需要使用一些特定的数据,所以在使用时需要将相关参数配置到AndroidManifest.json文件中。如使用分享功能,则需要配置各分享平台的申请应用的相关参数:

如果不使用此类API,则可将此数据删除。

  • 配置应用的包名及版本号

打开AndroidManifest.xml文件,在代码视图中修改根节点的package属性值,如下:

其中package为应用的包名,采用反向域名格式,为应用的标识;versionCode为应用的版本号(整数值),用于各应用市场的升级判断,建议与manifest.json中version -> code值一致;versionName为应用的版本名称(字符串),在系统应用管理程序中显示的版本号,建议与manifest.json中version -> name值一致。

注意:因为其它第三方的SDK也使用到包名相关资源配置,所以需要在AndroidManifest.xml将所有“io.dcloud.HBuilder.Hello”替换成要修改成的包名。

  • 配置应用名称

打开res -> values -> strings.xml文件,修改“app_name”字段值,该值为安装到手机上桌面显示的应用名称:

  • 配置应用图标和启动界面

将应用的图标(文件名为icon.png)和启动图片按照对应的尺寸拷贝到工程的res -> drawable-XXX目录下:

  • 更新应用资源

打开assets -> apps 目录,将下面“HelloH5”目录名称修改为应用manifest.json中的id字段值,uni-app项目为manifest.json中的appid字段值(这步非常重要,否则会导致应用无法正常启动),并将所有应用资源拷贝到其下的www目录中:

  • 配置应用信息

打开assets -> data下的dcloud_control.xml文件,修改appid值:

其中appid值为HBuilder应用的appid,必须与应用manifest.json中的id值完全一致;appver为应用的版本号,用于应用资源的升级,必须保持与manifest.json中的version -> name值完全一致;version值为应用基座版本号(plus.runtime.innerVersion返回的值),不要随意修改。

配置完成编译运行

应用配置完毕,按Ctrl+F11编译运行应用:

选择“Android Application”启动应用,在弹出的设备列表对话框中选择要运行的设备:

点击OK后启动应用:

编译运行后在bin目录下会生成apk,此apk不能提交到应用市场
如果要生成提交到应用市场的正式apk请搜索“android导出apk

5+SDK广告配置
如果需要关闭广告可在应用的manifest.json文件中增加如下配置

    "plus": {  
        "ads": {  
            "push":"false",       
            "splash":"false",     
            "rp":"false",          
            "spot":"false",       
        }  
    }

说明可参考文档 Manifest.json文档说明 manifest配置ads部分

编译过程中碰到问题可参考Android离线打包常见问题

iOS平台请参考iOS离线打包

AndroidStudio打包请参考Android平台使用AndroidStudio离线打包说明
-->

收起阅读 »

分享插件开发指南

5+App开发 分享

此文档将不再维护,请参考新文档:https://uniapp.dcloud.io/tutorial/app-share

概述

5+引擎集成了分享功能,现在已经集成了“微信”、“QQ”、“新浪微博”分享SDK及OS自带的系统分享功能,用户可通过API调用接口分享消息到指定的分享平台。
用户在使用分享API时需要对应用进行配置,具体配置方法请参考“应用使用分享插件方法”。

注:调用系统分享无需向分享平台厂商申请appkey和配置SDK。

相关代码示例均在Hello H5+示例里的share.html里或hello uni-app的接口-分享里。

配置参数需要提交云端打包后才能生效,如果需要真机运行生效请使用自定义基座

申请开通支付

使用分享功能前,首先需要向各分享平台申请开通分享能力。
在申请分享平台的appid/appkey等配置参数时应当注意,在填写iOS和Android包名时,一定要和App云端打包使用的包名一致,否则会导致分享失败。

新浪微博appkey申请步骤

微信appkey申请方法

HBuilderX中配置使用分享功能

从微信/QQ/微博开放平台申请获取配置参数后,需在HBuilderX中配置并提交云端打包才能生效。
老版本HBuilder配置界面有差异,逻辑是一样的,建议更新使用HBuilderX

配置使用分享模块
打开项目的manifest.json文件,在“App模块配置”项中勾选“Share(分享)”:

勾选后会显示支持的分享模块,可根据应用需要进行选择配置

微信分享

在manifest.json文件“App模块配置”项的“Share(分享)”下,勾选“微信分享”项,并输入从微信开放平台申请的参数:

新浪微博分享

在manifest.json文件“App模块配置”项的“Share(分享)”下,勾选“新浪微博分享”项,并输入从微博开放平台申请的参数:

  • appkey:
    填写新浪微博开发网站申请的appkey
  • appsecret:
    填写新浪微博开发网站申请的appscret
  • redirect_url:
    填写申请新浪微博应用时填写的RUL

QQ分享

在manifest.json文件“App模块配置”项的“Share(分享)”下,勾选“QQ分享”项,并输入从QQ开放平台申请的参数:

  • appid:
    填写QQ开放平台申请的appid

应用中调用分享功能

用户可以调用API分享信息。用户调用分享API分享消息时,设备是否存在相应的应用,调用的效果不同。如用户没有安装“新浪微博”等应用,HBuilder应用则会在应用内调用SDK的分享页面。如安装了“新浪微博”等应用,则调用API会调用该应用进行分享。
5+App使用分享API的一般步骤如下,uni-app另见专属开发文档

  1. 获取分享服务对象列表
    首先要在plusready事件之后获取分享列表,获取分享服务列表可以调用
    plus.share.getServices()接口。用户可以在回调中获取到分享服务对象的列表。用户需要保存返回的分享对象。在调用分享和授权接口时需要使用到该对象。
    plus.share.getServices(function(s) {  
    shares = ss;  
    for (var i in ss ) {  
        var s = ss[i];  
        var item = document.createElement("li");  
        item.setAttribute("class", "ditem");  
        item.setAttribute("onclick", (s.id == "weixin") ? "shareWeiXin(this.plusShare)" : "shareAction(this.plusShare)");  
        item.innerText = s.description;  
        item.plusShare = s;  
        list.appendChild(item);  
    }  
    }, function(e) {  
    alert("获取分享服务列表失败:" + e.message);  
    });
  2. 用户分享信息前需要对分享平台是否授权过进行判断,如果已经授权则可直接分享消息,如没有授权则需要调用已保存的分享对象的“authorize”接口对客户端进行授权。授权成功后再调用分享接口分享消息。
    function shareAction(s, ex) {  
    outSet("分享操作:");  
    if (!s) {  
        outLine("无效的分享服务!");  
        return;  
    }  
    if (s.authenticated) {  
        outLine("---已授权---");  
        shareMessage(s, ex);  
    } else {  
        outLine("---未授权---");  
        s.authorize(function() {  
            shareMessage(s, ex);  
        }, function(e) {  
            outLine("认证授权失败:" + e.code + " - " + e.message);  
        });  
    }  
    }
  3. 对客户端授权成功之后用户可以调用分享对象的“send”方法发送要分享的消息,用户创建JSON对象设置要分享的数据。
    用户如需要在分享信息中插入图片,可以在消息中添加pictures节点,属性值为图片地址,图片地址可以为网络地址或者本地图片地址。

    function shareMessage(s,ex){  
    var msg={content:sharecontent.value,extra:{scene:ex}};  
    if(pic&&pic.realUrl){  
        msg.pictures=[pic.realUrl];  
    }  
    
    s.send( msg, function(){  
        alert( "分享到\""+s.description+"\"成功! " );  
    }, function(e){  
        alert( "分享到\""+s.description+"\"失败: "+e.code+" - "+e.message );  
    } );  
    }
  4. 如用户需要取消授权可以调用分享对象方法“forbid”,取消分享服务。

    function cancelAuth(){try{  
    
    for ( var i in shares ) {  
        var s = shares[i];  
        if ( s.authenticated ) {  
            outLine( "取消\""+s.description+"\"");  
        }  
        s.forbid();  
    }  
    // 取消授权后需要更新服务列表  
    updateServices();  
    outLine( "操作成功!" );}catch(e){alert(e);}  
    }

常见问题

1.真机运行时新浪微博为什么分享失败
答:因为HBuilder应用在新浪开发平台还在审核中,目前仅有部分测试账号可成功 分享消息。如用户需要测试新浪微博的分享功能需要使用App云端打包生成安装 包测试。

2.“新浪微博”应用审核未通过时分享消息会失败,如何测试分享?
答: 用户需要在开发者账号下添加测试要使用的账号,具体使用步骤如下:

  • 登陆“新浪微博”开放平台
  • 找到要测试的应用,点击“应用信息”下的“测试信息”
  • 点击“编辑”添加测试用户的昵称。
  • 保存。

3.真机运行时分享的消息应用名为“HBuilder”如何修改?
答: 真机调试时应用内置的分享平台配置使用的应用名为“HBuilder”,真机联调时不能修改。用户需要使用App云端打包修改应用名称。

  1. android平台打包后为什么微信分享失败?
    答: 微信分享申请appkey时需要同时填写打包使用证书的MD5值,如果Android打包使用的证书和申请微信appkey时使用的证书不一致会导致微信分享失败,表现是微信登陆后点击“分享到朋友圈”,微信页面一闪就关闭
继续阅读 »

此文档将不再维护,请参考新文档:https://uniapp.dcloud.io/tutorial/app-share

概述

5+引擎集成了分享功能,现在已经集成了“微信”、“QQ”、“新浪微博”分享SDK及OS自带的系统分享功能,用户可通过API调用接口分享消息到指定的分享平台。
用户在使用分享API时需要对应用进行配置,具体配置方法请参考“应用使用分享插件方法”。

注:调用系统分享无需向分享平台厂商申请appkey和配置SDK。

相关代码示例均在Hello H5+示例里的share.html里或hello uni-app的接口-分享里。

配置参数需要提交云端打包后才能生效,如果需要真机运行生效请使用自定义基座

申请开通支付

使用分享功能前,首先需要向各分享平台申请开通分享能力。
在申请分享平台的appid/appkey等配置参数时应当注意,在填写iOS和Android包名时,一定要和App云端打包使用的包名一致,否则会导致分享失败。

新浪微博appkey申请步骤

微信appkey申请方法

HBuilderX中配置使用分享功能

从微信/QQ/微博开放平台申请获取配置参数后,需在HBuilderX中配置并提交云端打包才能生效。
老版本HBuilder配置界面有差异,逻辑是一样的,建议更新使用HBuilderX

配置使用分享模块
打开项目的manifest.json文件,在“App模块配置”项中勾选“Share(分享)”:

勾选后会显示支持的分享模块,可根据应用需要进行选择配置

微信分享

在manifest.json文件“App模块配置”项的“Share(分享)”下,勾选“微信分享”项,并输入从微信开放平台申请的参数:

新浪微博分享

在manifest.json文件“App模块配置”项的“Share(分享)”下,勾选“新浪微博分享”项,并输入从微博开放平台申请的参数:

  • appkey:
    填写新浪微博开发网站申请的appkey
  • appsecret:
    填写新浪微博开发网站申请的appscret
  • redirect_url:
    填写申请新浪微博应用时填写的RUL

QQ分享

在manifest.json文件“App模块配置”项的“Share(分享)”下,勾选“QQ分享”项,并输入从QQ开放平台申请的参数:

  • appid:
    填写QQ开放平台申请的appid

应用中调用分享功能

用户可以调用API分享信息。用户调用分享API分享消息时,设备是否存在相应的应用,调用的效果不同。如用户没有安装“新浪微博”等应用,HBuilder应用则会在应用内调用SDK的分享页面。如安装了“新浪微博”等应用,则调用API会调用该应用进行分享。
5+App使用分享API的一般步骤如下,uni-app另见专属开发文档

  1. 获取分享服务对象列表
    首先要在plusready事件之后获取分享列表,获取分享服务列表可以调用
    plus.share.getServices()接口。用户可以在回调中获取到分享服务对象的列表。用户需要保存返回的分享对象。在调用分享和授权接口时需要使用到该对象。
    plus.share.getServices(function(s) {  
    shares = ss;  
    for (var i in ss ) {  
        var s = ss[i];  
        var item = document.createElement("li");  
        item.setAttribute("class", "ditem");  
        item.setAttribute("onclick", (s.id == "weixin") ? "shareWeiXin(this.plusShare)" : "shareAction(this.plusShare)");  
        item.innerText = s.description;  
        item.plusShare = s;  
        list.appendChild(item);  
    }  
    }, function(e) {  
    alert("获取分享服务列表失败:" + e.message);  
    });
  2. 用户分享信息前需要对分享平台是否授权过进行判断,如果已经授权则可直接分享消息,如没有授权则需要调用已保存的分享对象的“authorize”接口对客户端进行授权。授权成功后再调用分享接口分享消息。
    function shareAction(s, ex) {  
    outSet("分享操作:");  
    if (!s) {  
        outLine("无效的分享服务!");  
        return;  
    }  
    if (s.authenticated) {  
        outLine("---已授权---");  
        shareMessage(s, ex);  
    } else {  
        outLine("---未授权---");  
        s.authorize(function() {  
            shareMessage(s, ex);  
        }, function(e) {  
            outLine("认证授权失败:" + e.code + " - " + e.message);  
        });  
    }  
    }
  3. 对客户端授权成功之后用户可以调用分享对象的“send”方法发送要分享的消息,用户创建JSON对象设置要分享的数据。
    用户如需要在分享信息中插入图片,可以在消息中添加pictures节点,属性值为图片地址,图片地址可以为网络地址或者本地图片地址。

    function shareMessage(s,ex){  
    var msg={content:sharecontent.value,extra:{scene:ex}};  
    if(pic&&pic.realUrl){  
        msg.pictures=[pic.realUrl];  
    }  
    
    s.send( msg, function(){  
        alert( "分享到\""+s.description+"\"成功! " );  
    }, function(e){  
        alert( "分享到\""+s.description+"\"失败: "+e.code+" - "+e.message );  
    } );  
    }
  4. 如用户需要取消授权可以调用分享对象方法“forbid”,取消分享服务。

    function cancelAuth(){try{  
    
    for ( var i in shares ) {  
        var s = shares[i];  
        if ( s.authenticated ) {  
            outLine( "取消\""+s.description+"\"");  
        }  
        s.forbid();  
    }  
    // 取消授权后需要更新服务列表  
    updateServices();  
    outLine( "操作成功!" );}catch(e){alert(e);}  
    }

常见问题

1.真机运行时新浪微博为什么分享失败
答:因为HBuilder应用在新浪开发平台还在审核中,目前仅有部分测试账号可成功 分享消息。如用户需要测试新浪微博的分享功能需要使用App云端打包生成安装 包测试。

2.“新浪微博”应用审核未通过时分享消息会失败,如何测试分享?
答: 用户需要在开发者账号下添加测试要使用的账号,具体使用步骤如下:

  • 登陆“新浪微博”开放平台
  • 找到要测试的应用,点击“应用信息”下的“测试信息”
  • 点击“编辑”添加测试用户的昵称。
  • 保存。

3.真机运行时分享的消息应用名为“HBuilder”如何修改?
答: 真机调试时应用内置的分享平台配置使用的应用名为“HBuilder”,真机联调时不能修改。用户需要使用App云端打包修改应用名称。

  1. android平台打包后为什么微信分享失败?
    答: 微信分享申请appkey时需要同时填写打包使用证书的MD5值,如果Android打包使用的证书和申请微信appkey时使用的证书不一致会导致微信分享失败,表现是微信登陆后点击“分享到朋友圈”,微信页面一闪就关闭
收起阅读 »