iOS离线打包-个推push和UniPush插件配置
个推push和UniPush配置
添加push插件
注: Linker Flags、framework添加方法参考该文档
- 依次添加下列Linker Flags: -lGeTuiPush, 注意:如果是UniPush 则把-lGeTuiPush 换成 -lUniPush。
-lGeTuiSdk,
-llibPush - 添加下列framework:"GTSDK.framework",
"CoreTelephony.framework",
"AVFoundation.framework",
"CoreLocation.framework",
"SystemConfiguration.framework",
"MobileCoreServices.framework",
"Security.framework",
"libresolv.tbd",
"libz.tbd",
"libsqlite3.tbd",
"libc++.tbd",
"UserNotifications.framework"帐号配置
1.首先到个推申请appkey等信息,查看该文档
注意:如果是UniPush 去这个链接申请
2.打开info.plist,找到getui项,填入自己帐号的信息,如果没有该项,按照图中的格式创建
小米推送配置
注: Linker Flags、framework添加方法参考该文档
- 依次添加下列Linker Flags:-lXiaomiPush,-lMiPushSDK
- 添加下列framework:libresolv.dylib, libxml2.dylib,libz.dylib,SystemConfiguration.framework,MobileCoreServices.framework,CFNetwork.framework,CoreTelephony.framework,
帐号配置
1.首先到小米申请appkey等信息,查看该文档
2.打开info.plist,找到"MiSDKAppID"项,填入自己小米推送帐号的的APPID,如果没有该项,按照图中的格式创建
找到"MiSDKAppKey"项,填入自己小米推送帐号的的appKey,如果没有该项,按照图中的格式创建
3 小米推送调试/发布时需要设置不同的MiSDKRun值 调试证书对应值设置为“debug”,生产证书对应值设置为“online”,可参考小米推送文档
申请带APNS功能的profile文件(缺少该项将导致后台收不到推送)
1.创建应用程序ID
登陆iOS Dev Center选择进入iOS Provisioning Portal。
在Certificates,Identifiers &Profiles中,点iOS Apps的任何一项进入
在iOS Provisioning Portal中,点击App IDs进入App ID列表。
创建App ID,如果ID已经存在可以直接跳过此步骤
为App开启Push Notification功能。如果是已经创建的App ID也可以通过设置开启Push Notification功能。
根据实际情况完善App ID信息并提交,注意此处需要指定具体的Bundle ID不要使用通配符。
- 重新生成新的profile,下载到本地双击导入,并在Code signing 配置中选择该profile文件
生成APNS证书并上传到个推平台(缺少该项将导致后台收不到推送)
如果你之前没有创建过Push证书或者是要重新创建一个新的,请在证书列表下面新建。
新建证书需要注意选择证书种类(开发证书用于开发和调试使用,生产证书用于App Store发布)
点击Continue后选择证书对应的应用ID,然后继续会出现“About Creating a Certificate Signing Request (CSR)”
根据它的说明创建Certificate Signing Request。
然后点击Continue ,上传刚刚生成的 .certSigningRequest文件 点”generate”生成APNs Push Certificate。
下载并双击打开证书,证书打开时会启动“钥匙串访问”工具。
在“钥匙串访问”中你的证书会显示在“我的证书”中,注意选择“My Certificates” 和”login”
导出 .p12证书文件
在“钥匙串访问”中,选择刚刚加进来的证书,选择右键菜单中的“导出“...””。
将文件保存为Personal Information Exchange (.p12)格式。
注意:务必选择证书然后再导出。
保存p12文件时,需为其设置密码,上传到个推平台
UniPush使用指南:http://ask.dcloud.net.cn/article/35622
个推push和UniPush配置
添加push插件
注: Linker Flags、framework添加方法参考该文档
- 依次添加下列Linker Flags: -lGeTuiPush, 注意:如果是UniPush 则把-lGeTuiPush 换成 -lUniPush。
-lGeTuiSdk,
-llibPush - 添加下列framework:"GTSDK.framework",
"CoreTelephony.framework",
"AVFoundation.framework",
"CoreLocation.framework",
"SystemConfiguration.framework",
"MobileCoreServices.framework",
"Security.framework",
"libresolv.tbd",
"libz.tbd",
"libsqlite3.tbd",
"libc++.tbd",
"UserNotifications.framework"帐号配置
1.首先到个推申请appkey等信息,查看该文档
注意:如果是UniPush 去这个链接申请
2.打开info.plist,找到getui项,填入自己帐号的信息,如果没有该项,按照图中的格式创建
小米推送配置
注: Linker Flags、framework添加方法参考该文档
- 依次添加下列Linker Flags:-lXiaomiPush,-lMiPushSDK
- 添加下列framework:libresolv.dylib, libxml2.dylib,libz.dylib,SystemConfiguration.framework,MobileCoreServices.framework,CFNetwork.framework,CoreTelephony.framework,
帐号配置
1.首先到小米申请appkey等信息,查看该文档
2.打开info.plist,找到"MiSDKAppID"项,填入自己小米推送帐号的的APPID,如果没有该项,按照图中的格式创建
找到"MiSDKAppKey"项,填入自己小米推送帐号的的appKey,如果没有该项,按照图中的格式创建
3 小米推送调试/发布时需要设置不同的MiSDKRun值 调试证书对应值设置为“debug”,生产证书对应值设置为“online”,可参考小米推送文档
申请带APNS功能的profile文件(缺少该项将导致后台收不到推送)
1.创建应用程序ID
登陆iOS Dev Center选择进入iOS Provisioning Portal。
在Certificates,Identifiers &Profiles中,点iOS Apps的任何一项进入
在iOS Provisioning Portal中,点击App IDs进入App ID列表。
创建App ID,如果ID已经存在可以直接跳过此步骤
为App开启Push Notification功能。如果是已经创建的App ID也可以通过设置开启Push Notification功能。
根据实际情况完善App ID信息并提交,注意此处需要指定具体的Bundle ID不要使用通配符。
- 重新生成新的profile,下载到本地双击导入,并在Code signing 配置中选择该profile文件
生成APNS证书并上传到个推平台(缺少该项将导致后台收不到推送)
如果你之前没有创建过Push证书或者是要重新创建一个新的,请在证书列表下面新建。
新建证书需要注意选择证书种类(开发证书用于开发和调试使用,生产证书用于App Store发布)
点击Continue后选择证书对应的应用ID,然后继续会出现“About Creating a Certificate Signing Request (CSR)”
根据它的说明创建Certificate Signing Request。
然后点击Continue ,上传刚刚生成的 .certSigningRequest文件 点”generate”生成APNs Push Certificate。
下载并双击打开证书,证书打开时会启动“钥匙串访问”工具。
在“钥匙串访问”中你的证书会显示在“我的证书”中,注意选择“My Certificates” 和”login”
导出 .p12证书文件
在“钥匙串访问”中,选择刚刚加进来的证书,选择右键菜单中的“导出“...””。
将文件保存为Personal Information Exchange (.p12)格式。
注意:务必选择证书然后再导出。
保存p12文件时,需为其设置密码,上传到个推平台
UniPush使用指南:http://ask.dcloud.net.cn/article/35622
收起阅读 »iOS离线打包-分享插件配置
目前分享插件支持新浪微博分享、QQ分享、腾讯微博分享、微信分享
分享插件首先需要到各开放平台申请帐号,申请查看该文档
注: Linker Flags、framework等添加方法参考该文档
新浪微博分享插件配置
1.添加以下Linker Flags: -llibShare、-lSinaShare、-lWeiboSDK
- 添加以下framwork: QuartzCore.framework、ImageIO.framework、SystemConfiguration.framework、Security.framwork、CoreTelephny。framwork、CoreText.framework、libz.dylib、libsqlite3.dylib
- 添加下列文件:WeiboSDK.bundle
- 打开info.plist,找到sinweibo项,填入自己帐号的信息,如果没有该项,按照图中的格式创建
5.找到URL types ,打开URL identifier为com.weibo的项目,修改item0值为wb[这个是你的appkey] ,如果没有该项按照图中的格式创建
- iOS9.0以上版本需要在info.plist增加以下配置
QQ分享插件配置
1.添加以下Linker Flags: -llibShare、-lQQShare
2.添加以下framwork: TencentOpenAPI.framework
- 添加下列文件: TencentOpenApi_IOS_Bundle.bundle
4.找到URL types,打开URL identifier为tencentopenapi的项目, 修改item0值为tencent[这个是你的appId] ,如果没有该项按照图中的格式创建
- iOS9.0以上版本需要在info.plist增加以下配置
微信分享插件配置
1.添加以下Linker Flags: -llibShare、 -lweixinShare、-lWeChatSDK
2.添加以下framwork: Social.framework、Accounts.framework
3.找到URL types ,打开URL identifier为weixin的项目,修改item0值为wx[这个是你的appid] ,如果没有该项按照图中的格式创建
4.iOS9.0以上版本需要在info.plist增加以下配置
<a id="ulink"/>
5.HBuilderX2.3.4+ 版本需要配置 Universal Link
在info.plist root 节点添加UniversalLinks项,值和微信开放平台配置的一致,参考如下:
查看工程里的AppDelegate.m文件里是否有下面的方法:
>//@Summary:通用链接
-(BOOL)application:(UIApplication )application continueUserActivity:(NSUserActivity )userActivity restorationHandler:(void(^)(NSArray<id<UIUserActivityRestoring>> * __nullable restorableObjects))restorationHandler {
[PDRCore handleSysEvent:PDRCoreSysEventContinueUserActivity withObject:userActivity];
restorationHandler(nil);
return YES;
}
腾讯微博分享分享插件配置
1.添加以下Linker Flags: -llibShare、-lTCWeiboSDK
2.找到URL types ,打开URL identifier为com.tencent的项目,修改item0值为wb[这个是你的appkey] ,如果没有该项按照图中的格式创建
- 打开info.plist,找到tencentweibo项,填入自己帐号的信息,如果没有该项,按照图中的格式创建
- iOS9.0以上版本需要在info.plist增加以下配置
目前分享插件支持新浪微博分享、QQ分享、腾讯微博分享、微信分享
分享插件首先需要到各开放平台申请帐号,申请查看该文档
注: Linker Flags、framework等添加方法参考该文档
新浪微博分享插件配置
1.添加以下Linker Flags: -llibShare、-lSinaShare、-lWeiboSDK
- 添加以下framwork: QuartzCore.framework、ImageIO.framework、SystemConfiguration.framework、Security.framwork、CoreTelephny。framwork、CoreText.framework、libz.dylib、libsqlite3.dylib
- 添加下列文件:WeiboSDK.bundle
- 打开info.plist,找到sinweibo项,填入自己帐号的信息,如果没有该项,按照图中的格式创建
5.找到URL types ,打开URL identifier为com.weibo的项目,修改item0值为wb[这个是你的appkey] ,如果没有该项按照图中的格式创建
- iOS9.0以上版本需要在info.plist增加以下配置
QQ分享插件配置
1.添加以下Linker Flags: -llibShare、-lQQShare
2.添加以下framwork: TencentOpenAPI.framework
- 添加下列文件: TencentOpenApi_IOS_Bundle.bundle
4.找到URL types,打开URL identifier为tencentopenapi的项目, 修改item0值为tencent[这个是你的appId] ,如果没有该项按照图中的格式创建
- iOS9.0以上版本需要在info.plist增加以下配置
微信分享插件配置
1.添加以下Linker Flags: -llibShare、 -lweixinShare、-lWeChatSDK
2.添加以下framwork: Social.framework、Accounts.framework
3.找到URL types ,打开URL identifier为weixin的项目,修改item0值为wx[这个是你的appid] ,如果没有该项按照图中的格式创建
4.iOS9.0以上版本需要在info.plist增加以下配置
<a id="ulink"/>
5.HBuilderX2.3.4+ 版本需要配置 Universal Link
在info.plist root 节点添加UniversalLinks项,值和微信开放平台配置的一致,参考如下:
查看工程里的AppDelegate.m文件里是否有下面的方法:
>//@Summary:通用链接
-(BOOL)application:(UIApplication )application continueUserActivity:(NSUserActivity )userActivity restorationHandler:(void(^)(NSArray<id<UIUserActivityRestoring>> * __nullable restorableObjects))restorationHandler {
[PDRCore handleSysEvent:PDRCoreSysEventContinueUserActivity withObject:userActivity];
restorationHandler(nil);
return YES;
}
腾讯微博分享分享插件配置
1.添加以下Linker Flags: -llibShare、-lTCWeiboSDK
2.找到URL types ,打开URL identifier为com.tencent的项目,修改item0值为wb[这个是你的appkey] ,如果没有该项按照图中的格式创建
- 打开info.plist,找到tencentweibo项,填入自己帐号的信息,如果没有该项,按照图中的格式创建
- iOS9.0以上版本需要在info.plist增加以下配置
iOS离线打包-地图配置
百度地图配置
Linker Flags、framework等添加方法请参考这个文档
1.添加下列Linker Flags: -llibMap、-lBaiduKeyVerify、-lbmapimp
-
添加下列framework: 添加下列framework libstdc++.tbd libsqlite3.0.dylib QuartzCore.framework CoreGraphics.framework CoreTelephony.framework SystemConfiguration.framework Security.framework MapKit.framework OpenGLES.framework CoreLocation.framework BaiduMapAPI_Utils.framework BaiduMapAPI_Base.framework BaiduMapAPI_Search.framework BaiduMapAPI_Map.framework BaiduMapAPI_Location.framework libbmapimp.a libBaiduKeyVerify.a libssl.a libcrypto.a -
添加下列文件: mapapi.bundle
4.申请Appkey,如果没有appkey将会导致地图显示不出
参考百度地图Appkey申请章节 -
打开Info.plist文件找到baidu项,如果没有按图片中的格式添加该项,在下图中的红色区域输入申请的Appkey
注意info.plist中Bundle identifier要和你输入的安全码一致
常见问题解决
1.如下图只能看见栅格图可能的原因appkey配置不对、Bundle identifier和安全码不一致、百度地图缓存导致的可以删除app重新安装
2.提示appKey校验错误
在XCode控制台搜索baidu maponGetPermissionState 查看错误码是多少,对比百度开发平台错误信息
高德地图配置
Linker Flags、framework等添加方法请参考这个文档
1.添加下列Linker Flags: -llibMap、-lAMapImp
- 添加下列依赖库:
libAMapImp.a、liblibMap.a和
参考高德地图章节 - 添加下列文件: AMap.bundle
4.申请Appkey,如果没有appkey将会导致地图显示不出
参考高德地图Appkey申请章节 - 打开Info.plist文件找到amap项,如果没有按图片中的格式添加该项,在下图中输入申请的appkey
注意:工程里只能有一个地图,其他的地图功能,要删除info.plist里的key,和对应的库文件,请详细根据Feature-iOS.xml文件的内容配置
百度地图配置
Linker Flags、framework等添加方法请参考这个文档
1.添加下列Linker Flags: -llibMap、-lBaiduKeyVerify、-lbmapimp
-
添加下列framework: 添加下列framework libstdc++.tbd libsqlite3.0.dylib QuartzCore.framework CoreGraphics.framework CoreTelephony.framework SystemConfiguration.framework Security.framework MapKit.framework OpenGLES.framework CoreLocation.framework BaiduMapAPI_Utils.framework BaiduMapAPI_Base.framework BaiduMapAPI_Search.framework BaiduMapAPI_Map.framework BaiduMapAPI_Location.framework libbmapimp.a libBaiduKeyVerify.a libssl.a libcrypto.a -
添加下列文件: mapapi.bundle
4.申请Appkey,如果没有appkey将会导致地图显示不出
参考百度地图Appkey申请章节 -
打开Info.plist文件找到baidu项,如果没有按图片中的格式添加该项,在下图中的红色区域输入申请的Appkey
注意info.plist中Bundle identifier要和你输入的安全码一致
常见问题解决
1.如下图只能看见栅格图可能的原因appkey配置不对、Bundle identifier和安全码不一致、百度地图缓存导致的可以删除app重新安装
2.提示appKey校验错误
在XCode控制台搜索baidu maponGetPermissionState 查看错误码是多少,对比百度开发平台错误信息
高德地图配置
Linker Flags、framework等添加方法请参考这个文档
1.添加下列Linker Flags: -llibMap、-lAMapImp
- 添加下列依赖库:
libAMapImp.a、liblibMap.a和
参考高德地图章节 - 添加下列文件: AMap.bundle
4.申请Appkey,如果没有appkey将会导致地图显示不出
参考高德地图Appkey申请章节 - 打开Info.plist文件找到amap项,如果没有按图片中的格式添加该项,在下图中输入申请的appkey
注意:工程里只能有一个地图,其他的地图功能,要删除info.plist里的key,和对应的库文件,请详细根据Feature-iOS.xml文件的内容配置
收起阅读 »iOS离线打包-Feature模块配置
离线打包可以根据需要进行插件的增删,这个过程需要对工程做出修改。
目前插件需要修改的项目包含 LinkerFlags、 Library、Framework、资源文件、宏定义、info.plist文件几项。
并不是所有的插件都要修改以上几项,大部分插件只需要修改其中几项即可。
如果app中出现“缺失模块提醒框”,需要按照下面步骤添加相应的模块即可。
每个插件需要修改哪些项目,每个项目需要配置的值是什么,可以查看SDK中的Feature-iOS.xls文件。
具体修改方法:
如何修改LinkerFlags配置
按照下图找到Other Linker Flags 点击该项,在弹出的窗口中点击+可以添加flag 点击-可以删除flag
如何修改Library配置
library为插件对应的库文件和依赖库, 目前离线打包工程包括所有的库,不需要修改
如何修改framework配置
framework为插件依赖的系统库,按照下图找到framework的配置位置,点击+可以添加,选中framework点击-可以删除
如何添加删除文件
资源为插件需要使用的资源如图片、国际化文件等, 点击File->addFile 在弹出的对话框中选择响应文件即可,
删除时在工程中选中该项目,点击delete键
如何修改宏定义
按照下图找到Macors,在弹出的窗口中点击+可以添加添加-可以删除
离线打包可以根据需要进行插件的增删,这个过程需要对工程做出修改。
目前插件需要修改的项目包含 LinkerFlags、 Library、Framework、资源文件、宏定义、info.plist文件几项。
并不是所有的插件都要修改以上几项,大部分插件只需要修改其中几项即可。
如果app中出现“缺失模块提醒框”,需要按照下面步骤添加相应的模块即可。
每个插件需要修改哪些项目,每个项目需要配置的值是什么,可以查看SDK中的Feature-iOS.xls文件。
具体修改方法:
如何修改LinkerFlags配置
按照下图找到Other Linker Flags 点击该项,在弹出的窗口中点击+可以添加flag 点击-可以删除flag
如何修改Library配置
library为插件对应的库文件和依赖库, 目前离线打包工程包括所有的库,不需要修改
如何修改framework配置
framework为插件依赖的系统库,按照下图找到framework的配置位置,点击+可以添加,选中framework点击-可以删除
如何添加删除文件
资源为插件需要使用的资源如图片、国际化文件等, 点击File->addFile 在弹出的对话框中选择响应文件即可,
删除时在工程中选中该项目,点击delete键
如何修改宏定义
按照下图找到Macors,在弹出的窗口中点击+可以添加添加-可以删除
HBuilder为什么要登录。没网、内网怎么办?可否离线使用?
HBuilderX
HBuilderX可以离线支持,登陆也不是强制的。
HBuilderX需要联网的地方包括:
- 开发App时,仍然需要联网获取appid(不影响uni-app的非App端)
- 云打包需要联网。不想联网也可以配置本地打包,参考https://ask.dcloud.net.cn/docs/#//ask.dcloud.net.cn/article/508
- HBuilderX安装插件需要联网。如果是内网使用,可以在外网下载好插件,然后把plugin目录copy到内网使用。
=======================以下为老HBuilder相关内容======================================
HBuilder
首先HBuilder支持离线使用,在登录界面有一个跳过注册离线使用的按钮。
但是我们还是需要说一下我们的设计理念,为什么需要联网。
理念
为什么要设计账户体系。
我们认为单机工具没有前途,云+端的开发者服务代表未来,有更多想象空间。
而帐户体系是一切服务的基础。
我们享受了很多免费的互联网服务,但有一个代价,就是需要注册账户。
现在的手机、windows也都需要注册账户,都是云+端的趋势所致。
在开发工具领域,目前vs、dreameweaver新版也需要注册账户,未来这样的工具会越来越多。
安全性
如果开发者顾虑HBuilder会偷偷上传代码,那么不必担忧。
HBuilder需要账户,不是因为计划偷偷上传开发者的代码。
DCloud作为有更大雄心的企业,不会冒让自己身败名裂的巨大风险做坏事,而且我们也实在没动力去看开发者写的代码。
DCloud的股东包括很多开发界的知名人士,比如蒋涛、王淮,名人不会轻易代言,也算对我们的一种背书。
首次使用
HBuilder在一台电脑上第一次使用时需要联网验证激活。
如果是公司有限制,可以请求网管对HBuilder的安全性做测试,安全性肯定是没问题的,毕竟程序员还要上网查资料,没网络怎么工作。可以把dcloud.net.cn加入网络白名单(dcloud.net.cn是托管在阿里云的,旗下有service.dcloud,net.cn、update.dcloud.net.cn、ask.dcloud.net.cn等子站)。
HBuilder支持暂不登录。初次使用HBuilder,若没有网,也可以进入HBuilder。
不过我们还是推荐用户注册一下,不然每次启动HBuilder都要点下暂不登录按钮。(那话怎么说来着,注册个帐户你又不会怀孕)
后续使用
帐户激活过一次后,后续HBuilder支持完全脱线使用,也不用再每次启动点暂不登录。(未激活过还需要点暂不登录)
开发者使用笔记本会经常没有网络,此时可放心,一样是可以写代码的。
只是脱线后需要联网的功能没法用,包括:
- 云端打包(我们也提供了本地打包)
- 插件一键式云端下载安装(也可使用eclipse的本地插件安装方式装插件)
- 升级,包括HBuilder及插件的升级无网络时都无法运行
- 吐槽、问答等功能也需要联网
- 没有网络无法自动每日签到,无法得到签到积分
其他误会
有人误以为登录会造成启动过慢,其实完全不会,1秒都不影响。
前面已经提到,没网络时HBuilder也是可直接进入的。
有人误以为我们做账户体系是为了收费,以后会推出收费免登录的功能。我们确实没这种想法。
如何让公司网管信任HBuilder
关于如何让公司网管信任HBuilder,我们也有点头疼。也欢迎大家给出好招。
但DCloud愿意配合开发者的公司网管的安全审计。
网管可以侦测HBuilder的网络通信流量,肯定是小到不足以上传工程代码的地步。
云服务的强化
后续DCloud还会继续开发更多创新的云服务,让大家体验到不一样的开发模式,账户的属性强化会越来越有意思。
最后,中国人之前从来没有做成功过开发工具,我们开发HBuilder的过程中也经历过很多质疑,
尤其是制作免费工具,不图给开发者卖钱,不就图多几个注册用户嘛,希望大家多支持我们,多帮我们发展用户,谢谢!
HBuilderX
HBuilderX可以离线支持,登陆也不是强制的。
HBuilderX需要联网的地方包括:
- 开发App时,仍然需要联网获取appid(不影响uni-app的非App端)
- 云打包需要联网。不想联网也可以配置本地打包,参考https://ask.dcloud.net.cn/docs/#//ask.dcloud.net.cn/article/508
- HBuilderX安装插件需要联网。如果是内网使用,可以在外网下载好插件,然后把plugin目录copy到内网使用。
=======================以下为老HBuilder相关内容======================================
HBuilder
首先HBuilder支持离线使用,在登录界面有一个跳过注册离线使用的按钮。
但是我们还是需要说一下我们的设计理念,为什么需要联网。
理念
为什么要设计账户体系。
我们认为单机工具没有前途,云+端的开发者服务代表未来,有更多想象空间。
而帐户体系是一切服务的基础。
我们享受了很多免费的互联网服务,但有一个代价,就是需要注册账户。
现在的手机、windows也都需要注册账户,都是云+端的趋势所致。
在开发工具领域,目前vs、dreameweaver新版也需要注册账户,未来这样的工具会越来越多。
安全性
如果开发者顾虑HBuilder会偷偷上传代码,那么不必担忧。
HBuilder需要账户,不是因为计划偷偷上传开发者的代码。
DCloud作为有更大雄心的企业,不会冒让自己身败名裂的巨大风险做坏事,而且我们也实在没动力去看开发者写的代码。
DCloud的股东包括很多开发界的知名人士,比如蒋涛、王淮,名人不会轻易代言,也算对我们的一种背书。
首次使用
HBuilder在一台电脑上第一次使用时需要联网验证激活。
如果是公司有限制,可以请求网管对HBuilder的安全性做测试,安全性肯定是没问题的,毕竟程序员还要上网查资料,没网络怎么工作。可以把dcloud.net.cn加入网络白名单(dcloud.net.cn是托管在阿里云的,旗下有service.dcloud,net.cn、update.dcloud.net.cn、ask.dcloud.net.cn等子站)。
HBuilder支持暂不登录。初次使用HBuilder,若没有网,也可以进入HBuilder。
不过我们还是推荐用户注册一下,不然每次启动HBuilder都要点下暂不登录按钮。(那话怎么说来着,注册个帐户你又不会怀孕)
后续使用
帐户激活过一次后,后续HBuilder支持完全脱线使用,也不用再每次启动点暂不登录。(未激活过还需要点暂不登录)
开发者使用笔记本会经常没有网络,此时可放心,一样是可以写代码的。
只是脱线后需要联网的功能没法用,包括:
- 云端打包(我们也提供了本地打包)
- 插件一键式云端下载安装(也可使用eclipse的本地插件安装方式装插件)
- 升级,包括HBuilder及插件的升级无网络时都无法运行
- 吐槽、问答等功能也需要联网
- 没有网络无法自动每日签到,无法得到签到积分
其他误会
有人误以为登录会造成启动过慢,其实完全不会,1秒都不影响。
前面已经提到,没网络时HBuilder也是可直接进入的。
有人误以为我们做账户体系是为了收费,以后会推出收费免登录的功能。我们确实没这种想法。
如何让公司网管信任HBuilder
关于如何让公司网管信任HBuilder,我们也有点头疼。也欢迎大家给出好招。
但DCloud愿意配合开发者的公司网管的安全审计。
网管可以侦测HBuilder的网络通信流量,肯定是小到不足以上传工程代码的地步。
云服务的强化
后续DCloud还会继续开发更多创新的云服务,让大家体验到不一样的开发模式,账户的属性强化会越来越有意思。
最后,中国人之前从来没有做成功过开发工具,我们开发HBuilder的过程中也经历过很多质疑,
尤其是制作免费工具,不图给开发者卖钱,不就图多几个注册用户嘛,希望大家多支持我们,多帮我们发展用户,谢谢!
App/uni-app离线本地存储方案
5+App的离线存储
HTML5+的离线本地存储有如下多种方案:
HTML5标准方案:cookie、localstorage、sessionstorage、websql、indexedDB
HTML5Plus扩展方案:plus.navigator.setCookie、plus.storage、plus.io、plus.sqllite
- cookie(标准h5方案)
体量最小,可以设置过期时间。不能跨域。 - localstorage(标准h5方案)
适合key、value键值对的存储,数据量一般不超过5M。是常用的轻量数据存储方案。不能跨域。 - sessionstorage(标准h5方案)
也是键值对,特点是关闭App就消失了,也不能跨webview,一般不用于持久化数据保存。 - websql(标准h5方案)
是手机端关系型数据库,各种手机都支持。注意iOS8、9的wkWebview不支持websql。如果要在iOS8、9上使用websql,请使用uiwebview内核。 - indexedDB(标准h5方案)
是HTML5里最新的数据存储规范,但不是基于SQL,而是基于对象。
indexedDB性能更高,全是异步处理,学习难度偏大。最重要的是目前手机端支持度不行。Android4.4以上和iOS8以上才支持indexedDB。 - plus.navigator.setCookie
与HTML5的标准cookie相比,plus的扩展主要是为了跨域。所谓跨越,就是本地HTML页面和服务器HTML页面共享cookie数据,或者说本地页面的js可以操作服务器页面产生的cookie。如果没有跨越需求,不需要使用plus扩展。注意iOS8以后的wkWebview不支持setcookie。 - plus.storage
plus.storage也是键值对数据存储。它是把OS给原生App使用的键值对存储数据库封装一层给JS使用。
plus.storage没有理论上的大小限制。也是持久化的,不会被当做缓存清理。
plus.storage相比于localstorage 还有一个特点是可跨域。当一个存储数据,需要被本地和来自服务器的页面同时读写时,就涉及跨域问题。此时HTML5的localstorage不能满足需求,只能使用plus.storage。
plus.storage操作要比localstorage慢几十毫秒,尤其是在循环里调用plus api会放大这种慢。
有网友封装了一个框架,针对key-value数据,在localstorage超过5m时自动切换到plus.storage,参考http://ask.dcloud.net.cn/article/552。虽然这么做听起来有点复杂,但我们对这种追求性能极致的开发者非常赞赏。 - plus.io
plus.io是文件读写,虽然也可以通过读写txt等文件存储数据,但并不如专业的storage和websql方便。
plus.io更多的是用于图片等多媒体文件的本地保存。
比如图文列表的离线使用,一般有2种做法:- 图片下载不通过img的src,而是plus.dowload下载的,先下载图片,存好路径后,然后img的src动态指定文件路径
- 图片使用img的src下载,然后用canvas把img存成图片文件。下次不联网,img的scr直接指向本地文件
- plus.sqllite
plus.sqllite是对原生的sqllite的封装。它也是一种可以通过sql在本地增删改查数据库的方案。
有点类似websql,但相对于websql而言,sqllite的好处是:- 可以预置基础数据库,直接打包到app里
- 当手机空间不足时,websql可能会被清理,而sqllite不会。
plus.storage没有理论上的大小限制。
有人问三方清理工具清理垃圾会不会造成某些数据丢失,这个可能性是存在的,但概率并不高,取决于清理软件会不会分析你的存储数据里哪些是可以清除的垃圾数据。除了OS的清理工具外,一般没有root权限的清理工具是拿不到除了plus.io外的你的app的存储数据的。
但ios上系统存储空间很少的时候,系统会清理 cookie、localstorage、sessionstorage、websql、indexedDB 的数据,此时使用plus.storage、plus.sqllite更安全。
uni-app存储
uni-app的存储方案比5+app要少,因为cookie、localstorage、sessionstorage、websql、indexedDB只有h5端支持,其他端都不支持。
uni.storage的键值对存储,这个是全端支持的。
uni-app的Storage在不同端的实现不同,uni.storage在app侧,映射为plus.storage;h5侧映射为localstorage;各个小程序平台映射为其自带的storage键值对存储:
- H5端为localStorage,浏览器限制5M大小,是缓存概念,可能会被清理
- App端为原生的plus.storage,无大小限制,不是缓存,持久化
- 各个小程序端为其自带的storage api,数据存储生命周期跟小程序本身一致,即除用户主动删除或超过一定时间被自动清理,否则数据都一直可用。
- 微信小程序单个 key 允许存储的最大数据长度为 1MB,所有数据存储上限为 10MB。
- 支付宝小程序单条数据转换成字符串后,字符串长度最大200*1024。同一个支付宝用户,同一个小程序缓存总上限为10MB。
- 百度、头条小程序文档未说明大小限制
app端还支持2种方案
- 使用plus.io访问文件系统
- 使用plus.sqlite访问数据库
5+App的离线存储
HTML5+的离线本地存储有如下多种方案:
HTML5标准方案:cookie、localstorage、sessionstorage、websql、indexedDB
HTML5Plus扩展方案:plus.navigator.setCookie、plus.storage、plus.io、plus.sqllite
- cookie(标准h5方案)
体量最小,可以设置过期时间。不能跨域。 - localstorage(标准h5方案)
适合key、value键值对的存储,数据量一般不超过5M。是常用的轻量数据存储方案。不能跨域。 - sessionstorage(标准h5方案)
也是键值对,特点是关闭App就消失了,也不能跨webview,一般不用于持久化数据保存。 - websql(标准h5方案)
是手机端关系型数据库,各种手机都支持。注意iOS8、9的wkWebview不支持websql。如果要在iOS8、9上使用websql,请使用uiwebview内核。 - indexedDB(标准h5方案)
是HTML5里最新的数据存储规范,但不是基于SQL,而是基于对象。
indexedDB性能更高,全是异步处理,学习难度偏大。最重要的是目前手机端支持度不行。Android4.4以上和iOS8以上才支持indexedDB。 - plus.navigator.setCookie
与HTML5的标准cookie相比,plus的扩展主要是为了跨域。所谓跨越,就是本地HTML页面和服务器HTML页面共享cookie数据,或者说本地页面的js可以操作服务器页面产生的cookie。如果没有跨越需求,不需要使用plus扩展。注意iOS8以后的wkWebview不支持setcookie。 - plus.storage
plus.storage也是键值对数据存储。它是把OS给原生App使用的键值对存储数据库封装一层给JS使用。
plus.storage没有理论上的大小限制。也是持久化的,不会被当做缓存清理。
plus.storage相比于localstorage 还有一个特点是可跨域。当一个存储数据,需要被本地和来自服务器的页面同时读写时,就涉及跨域问题。此时HTML5的localstorage不能满足需求,只能使用plus.storage。
plus.storage操作要比localstorage慢几十毫秒,尤其是在循环里调用plus api会放大这种慢。
有网友封装了一个框架,针对key-value数据,在localstorage超过5m时自动切换到plus.storage,参考http://ask.dcloud.net.cn/article/552。虽然这么做听起来有点复杂,但我们对这种追求性能极致的开发者非常赞赏。 - plus.io
plus.io是文件读写,虽然也可以通过读写txt等文件存储数据,但并不如专业的storage和websql方便。
plus.io更多的是用于图片等多媒体文件的本地保存。
比如图文列表的离线使用,一般有2种做法:- 图片下载不通过img的src,而是plus.dowload下载的,先下载图片,存好路径后,然后img的src动态指定文件路径
- 图片使用img的src下载,然后用canvas把img存成图片文件。下次不联网,img的scr直接指向本地文件
- plus.sqllite
plus.sqllite是对原生的sqllite的封装。它也是一种可以通过sql在本地增删改查数据库的方案。
有点类似websql,但相对于websql而言,sqllite的好处是:- 可以预置基础数据库,直接打包到app里
- 当手机空间不足时,websql可能会被清理,而sqllite不会。
plus.storage没有理论上的大小限制。
有人问三方清理工具清理垃圾会不会造成某些数据丢失,这个可能性是存在的,但概率并不高,取决于清理软件会不会分析你的存储数据里哪些是可以清除的垃圾数据。除了OS的清理工具外,一般没有root权限的清理工具是拿不到除了plus.io外的你的app的存储数据的。
但ios上系统存储空间很少的时候,系统会清理 cookie、localstorage、sessionstorage、websql、indexedDB 的数据,此时使用plus.storage、plus.sqllite更安全。
uni-app存储
uni-app的存储方案比5+app要少,因为cookie、localstorage、sessionstorage、websql、indexedDB只有h5端支持,其他端都不支持。
uni.storage的键值对存储,这个是全端支持的。
uni-app的Storage在不同端的实现不同,uni.storage在app侧,映射为plus.storage;h5侧映射为localstorage;各个小程序平台映射为其自带的storage键值对存储:
- H5端为localStorage,浏览器限制5M大小,是缓存概念,可能会被清理
- App端为原生的plus.storage,无大小限制,不是缓存,持久化
- 各个小程序端为其自带的storage api,数据存储生命周期跟小程序本身一致,即除用户主动删除或超过一定时间被自动清理,否则数据都一直可用。
- 微信小程序单个 key 允许存储的最大数据长度为 1MB,所有数据存储上限为 10MB。
- 支付宝小程序单条数据转换成字符串后,字符串长度最大200*1024。同一个支付宝用户,同一个小程序缓存总上限为10MB。
- 百度、头条小程序文档未说明大小限制
app端还支持2种方案
- 使用plus.io访问文件系统
- 使用plus.sqlite访问数据库
plus初始化原理及plus is not defined,mui is not defined 错误汇总
关于plus是哪里来的问题
plus是5+Runtime的内部对象。
就像chrome浏览器里有chrome.开头的一些对象方法,5+runtime内部内置了plus对象。
因为plus和mui不一样,plus是引擎级别的,不需要前端框架。而mui是前端框架,所以是要引入mui.js才能使用的。
不要在没有plus和mui的环境下调用相关API
普通浏览器里没有plus环境,只有HBuilder真机运行、打包后、或流应用环境下才能运行plus api。
在普通浏览器里运行时plus api时控制台必然会输出plus is not defined错误提示。
mui作为一个前端框架,你必须保证当前页面引入了mui.js。否则也会出现mui is not defined。
不要在plus和mui未完成初始化时调用相关API
就像在dom初始化完成前(DOMContentLoaded)去操作dom,就会报错是一样的道理。
plus和mui都需要初始化,在初始化完成后调用再调用。
一般我们在plusready的回调事件里调用plus api。
document.addEventListener('plusready',function () {
// 在这里调用plus api
},false);
执行更高效的写法是这样,如果plus已经存在,就直接使用
function plusReady(){
// 在这里调用plus api
}
if(window.plus){
plusReady();
}else{
document.addEventListener('plusready',plusReady,false);
}
mui框架对此进行了封装,写法更简单:
mui.plusReady(function(){
// 在这里调用plus api
});
事实上,mui作为一个框架,也有初始化的过程,但mui的初始化过程在DOMContentLoaded完毕后就结束了。
mui ready的写法是这样,但一般无需使用。
mui.ready(function () {
})
关于加载顺序
plus的ready的时间,在2016年12月后的ios版本上,其实是随时可用状态,不需要plus ready概念,但为了保持向下兼容,也仍然存在plus的ready事件;而安卓版本,plus的ready的时间是可以调节的。具体参考http://ask.dcloud.net.cn/article/921
而mui的ready一般伴随DOMContentLoaded而完成。
详细的启动时序参考这里:http://ask.dcloud.net.cn/article/571
关于plus是哪里来的问题
plus是5+Runtime的内部对象。
就像chrome浏览器里有chrome.开头的一些对象方法,5+runtime内部内置了plus对象。
因为plus和mui不一样,plus是引擎级别的,不需要前端框架。而mui是前端框架,所以是要引入mui.js才能使用的。
不要在没有plus和mui的环境下调用相关API
普通浏览器里没有plus环境,只有HBuilder真机运行、打包后、或流应用环境下才能运行plus api。
在普通浏览器里运行时plus api时控制台必然会输出plus is not defined错误提示。
mui作为一个前端框架,你必须保证当前页面引入了mui.js。否则也会出现mui is not defined。
不要在plus和mui未完成初始化时调用相关API
就像在dom初始化完成前(DOMContentLoaded)去操作dom,就会报错是一样的道理。
plus和mui都需要初始化,在初始化完成后调用再调用。
一般我们在plusready的回调事件里调用plus api。
document.addEventListener('plusready',function () {
// 在这里调用plus api
},false);
执行更高效的写法是这样,如果plus已经存在,就直接使用
function plusReady(){
// 在这里调用plus api
}
if(window.plus){
plusReady();
}else{
document.addEventListener('plusready',plusReady,false);
}
mui框架对此进行了封装,写法更简单:
mui.plusReady(function(){
// 在这里调用plus api
});
事实上,mui作为一个框架,也有初始化的过程,但mui的初始化过程在DOMContentLoaded完毕后就结束了。
mui ready的写法是这样,但一般无需使用。
mui.ready(function () {
})
关于加载顺序
plus的ready的时间,在2016年12月后的ios版本上,其实是随时可用状态,不需要plus ready概念,但为了保持向下兼容,也仍然存在plus的ready事件;而安卓版本,plus的ready的时间是可以调节的。具体参考http://ask.dcloud.net.cn/article/921
而mui的ready一般伴随DOMContentLoaded而完成。
详细的启动时序参考这里:http://ask.dcloud.net.cn/article/571
App图标和启动封面不变的原因汇总
- 真机运行无法更换App图标和启动封面
因为这类信息的更改是必须打包后才能变化的。而真机运行不是打包,仅仅是替换我们的基座包的资源文件。 - 打包时选择的图片不对
请严格按照指定的尺寸使用png格式提交打包,尺寸不能差。
务必注意不能把jpg等文件改名为png来使用。 - 打包时漏选了图片
如果打包时漏选了图片,在漏选的平台上就会出现HBuilder默认的图片。比如只选了iphone没有选ipad,那ipad上就会有问题 - 缓存
其他配置都对,但打包后图标还不变化,如果在新安装的手机没问题,那就是老手机的桌面缓存,重启下手机,或者更换手机主题。
- 真机运行无法更换App图标和启动封面
因为这类信息的更改是必须打包后才能变化的。而真机运行不是打包,仅仅是替换我们的基座包的资源文件。 - 打包时选择的图片不对
请严格按照指定的尺寸使用png格式提交打包,尺寸不能差。
务必注意不能把jpg等文件改名为png来使用。 - 打包时漏选了图片
如果打包时漏选了图片,在漏选的平台上就会出现HBuilder默认的图片。比如只选了iphone没有选ipad,那ipad上就会有问题 - 缓存
其他配置都对,但打包后图标还不变化,如果在新安装的手机没问题,那就是老手机的桌面缓存,重启下手机,或者更换手机主题。
插件安装指南
前言
HBuilder是基于eclipse 3.7 开发的,英文版本为indigo,对eclipse3.x版本的插件是兼容的,不兼容eclipse4.x版本的插件。目前在HBuilder的工具→插件安装中已经集成了svn、git、php等常用的插件。以下为其他一些插件,如需要请按本文步骤进行安装。
VIM插件
1.依次点击工具-插件安装
- 点击手动安装eclipse插件
- 点击添加
- 在弹出框的名称随便填,地址填http://update.dcloud.net.cn/test/plugin_for_test如下图
5.点击确定,等待加载,选择vrapper - 一直点下一步,出现授权协议时点同意,装完后重启即可
node.js插件
全屏插件
点击这里下载全屏插件下载
解压到HBuilder根目录(注意不要改文件夹的名字),启动HBuilder,然后再次重启HBuilder即可。默认热键是CTRL+ALT+Z,你可以在工具-选项中搜索快捷键,在快捷键列表中搜索全屏,修改绑定热键。Eclipse Java Development Tools
Java开发环境,如需编辑java类和jsp需安装此插件,安装办法参见JDT插件安装办法
Eclipse Android Development Tools
Android开发环境,安装办法参见ADT插件安装办法
CVS
CVS插件被我们精简掉了,如需使用cvs插件,请下载cvs插件。将压缩包里的jar包放到HBuilder的dropins目录下,重启HBuilder即可
sexftp
HBuilder自带的插件列表中已包含ftp插件,但有用户反馈目前集成的ftp插件不是很好用,而且在某些情况下目前集成的ftp插件会出现问题。有不少推荐了sexftp,但是由于sexftp插件依赖JDT,导致暂时无法集成该插件,如有需要可按此步骤安装插件SexFtp插件安装
tomcat插件
需要先安装JDT,然后安装tomcat插件,下载后把com.sysdeo.eclipse.tomcat_3.2.1目录放在HBuilder的dropins目录下重启HBuilder即可
PDF预览插件
依次点击工具-插件安装-手动安装eclipse插件
点击添加,在名称处填写pdf(可以随意填写),在地址处填写http://borisvl.github.io/Pdf4Eclipse/如下图
点击确定等待加载,加载完毕后勾选安装即可
其他
此文章将会不停补充,如果大家也可以向官方推荐自己常用的一些插件,同时如果遇到安装某个插件装不上的问题也可以联系我
前言
HBuilder是基于eclipse 3.7 开发的,英文版本为indigo,对eclipse3.x版本的插件是兼容的,不兼容eclipse4.x版本的插件。目前在HBuilder的工具→插件安装中已经集成了svn、git、php等常用的插件。以下为其他一些插件,如需要请按本文步骤进行安装。
VIM插件
1.依次点击工具-插件安装
- 点击手动安装eclipse插件
- 点击添加
- 在弹出框的名称随便填,地址填http://update.dcloud.net.cn/test/plugin_for_test如下图
5.点击确定,等待加载,选择vrapper - 一直点下一步,出现授权协议时点同意,装完后重启即可
node.js插件
全屏插件
点击这里下载全屏插件下载
解压到HBuilder根目录(注意不要改文件夹的名字),启动HBuilder,然后再次重启HBuilder即可。默认热键是CTRL+ALT+Z,你可以在工具-选项中搜索快捷键,在快捷键列表中搜索全屏,修改绑定热键。Eclipse Java Development Tools
Java开发环境,如需编辑java类和jsp需安装此插件,安装办法参见JDT插件安装办法
Eclipse Android Development Tools
Android开发环境,安装办法参见ADT插件安装办法
CVS
CVS插件被我们精简掉了,如需使用cvs插件,请下载cvs插件。将压缩包里的jar包放到HBuilder的dropins目录下,重启HBuilder即可
sexftp
HBuilder自带的插件列表中已包含ftp插件,但有用户反馈目前集成的ftp插件不是很好用,而且在某些情况下目前集成的ftp插件会出现问题。有不少推荐了sexftp,但是由于sexftp插件依赖JDT,导致暂时无法集成该插件,如有需要可按此步骤安装插件SexFtp插件安装
tomcat插件
需要先安装JDT,然后安装tomcat插件,下载后把com.sysdeo.eclipse.tomcat_3.2.1目录放在HBuilder的dropins目录下重启HBuilder即可
PDF预览插件
依次点击工具-插件安装-手动安装eclipse插件
点击添加,在名称处填写pdf(可以随意填写),在地址处填写http://borisvl.github.io/Pdf4Eclipse/如下图
点击确定等待加载,加载完毕后勾选安装即可
其他
此文章将会不停补充,如果大家也可以向官方推荐自己常用的一些插件,同时如果遇到安装某个插件装不上的问题也可以联系我
收起阅读 »TabBar中使用WebView模式子页面中返回主页面时遇到的问题
在TabBar中使用WebView模式子页面中,有这样的一个流程,首页是index.html页面,能实现四个tab之间的切换
此时,tabbar已经不再显示了,然后再页面A里面再mui.open打开页面B,页面B有一个按钮,点击返回主页,我用的也是mui.openWindow()打开index.html,结果返回到我的index.html时候,无论我点击哪一个tab时候只显示第一个页面,这是什么原因呢?
在TabBar中使用WebView模式子页面中,有这样的一个流程,首页是index.html页面,能实现四个tab之间的切换
此时,tabbar已经不再显示了,然后再页面A里面再mui.open打开页面B,页面B有一个按钮,点击返回主页,我用的也是mui.openWindow()打开index.html,结果返回到我的index.html时候,无论我点击哪一个tab时候只显示第一个页面,这是什么原因呢? 收起阅读 »
插件开发示例汇总
Android平台插件
调用系统通讯录选择手机号
http://ask.dcloud.net.cn/article/153
系统通知栏显示进度条
http://ask.dcloud.net.cn/article/155
iOS平台插件
IOS指纹识别插件开发方法
Android平台插件
调用系统通讯录选择手机号
http://ask.dcloud.net.cn/article/153
系统通知栏显示进度条
http://ask.dcloud.net.cn/article/155
iOS平台插件
IOS指纹识别插件开发方法
http://ask.dcloud.net.cn/article/1348
收起阅读 »