HBuilderX

HBuilderX

极客开发工具
uni-app

uni-app

开发一次,多端覆盖
uniCloud

uniCloud

云开发平台
HTML5+

HTML5+

增强HTML5的功能体验
MUI

MUI

上万Star的前端框架

苹果内购 的经验分享

IAP

我这里说下我对苹果内购的理解,理解不正确,多指教。
对于我这种不懂苹果开发的程序员来说,用uni-app开发一个苹果APP,难点卡在了苹果内购,微信支付宝支付都是先下单,再付款,修改订单状态

而苹果内购有点不同,他的流程是先付款,再服务器二次验证,验证成功写入自己的数据库。

找了很多资料,后来hbuilder里的一个工作人员告诉我文档里有部分苹果内购代码,我试了下,可以跑起来。可是案例里uni.requestPayment()返回的只有状态,没有校验数据。就再次的看文档,5+文档。结合2个文档,后来通过5+实现了苹果内购,为了让其他的开放人员少走坑,这里把我测试成功的例子发布下。

<view>  
    <view class="uni-list">  
        <radio-group @change="applePriceChange">  
            <label class="uni-list-cell uni-list-cell-pd" v-for="(item, index) in priceList" :key="index">  
                {{item.text}}  
                <radio :value="item.value" :checked="item.checked" />  
            </label>  
        </radio-group>  
    </view>  
    <view class="uni-padding-wrap">  
        <button class="ipaPayBtn" @click="requestPayment" :loading="loading" :disabled="disabled">确认支付</button>  
    </view>  
</view>  
</view>  

let iapChannel = null,
productId = 'chongzhi_2019_1_14_168',
productIds = ['chongzhi_2019_1_14_168', 'chongzhi_2019_1_14_288','chongzhi_2019_1_14_588','chongzhi_2019_1_14_898'];
export default {
data() {
return {
loading: false,
disabled: true,
priceList: [{
value: 'chongzhi_2019_1_14_168',
text: '支付1元',
checked: true
}, {
value: 'chongzhi_2019_1_14_288',
text: '支付2元',
checked: false
},{
value: 'chongzhi_2019_1_14_588',
text: '支付3元',
checked: false
}, {
value: 'chongzhi_2019_1_14_898',
text: '支付4元',
checked: false
}]
}
},
onLoad: function() {
// 扩展API加载完毕,现在可以正常调用扩展API
var that = this;
plus.payment.getChannels(function(channels){
console.log(JSON.stringify(channels) );
for (var i in channels) {
var channel = channels[i];
if (channel.id === 'appleiap') {
iapChannel = channel;
//获取服务器产品
that.requestOrder();
}
}
if(!iapChannel){
console.log("不支持苹果内购");
}
}, false);
},
methods: {
//获取服务器产品
requestOrder() {
var that = this;
uni.showLoading({
title:'检测支付环境...'
});
iapChannel.requestOrder(productIds, (orderList) => { //必须调用此方法才能进行 iap 支付
that.disabled = false;
uni.hideLoading();
console.log('requestOrder success: ' + JSON.stringify(orderList));
}, (e) => {
that.disabled = false;
uni.hideLoading();
console.log('requestOrder failed: ' + JSON.stringify(e));
});
},
//点击支付
requestPayment(event) {
var that = this;
that.loading = true;
var statement = {
productid: productId
}
plus.payment.request(iapChannel, statement, function(e){
that.loading = false;
//这里的e包括了验证数据,可以发送到服务器端进行验证
console.log(JSON.stringify(e));
}, function(){
that.loading = false;
console.log("支付失败")
});
},
applePriceChange(e) {
productId = e.detail.value;
}
}
}

继续阅读 »

我这里说下我对苹果内购的理解,理解不正确,多指教。
对于我这种不懂苹果开发的程序员来说,用uni-app开发一个苹果APP,难点卡在了苹果内购,微信支付宝支付都是先下单,再付款,修改订单状态

而苹果内购有点不同,他的流程是先付款,再服务器二次验证,验证成功写入自己的数据库。

找了很多资料,后来hbuilder里的一个工作人员告诉我文档里有部分苹果内购代码,我试了下,可以跑起来。可是案例里uni.requestPayment()返回的只有状态,没有校验数据。就再次的看文档,5+文档。结合2个文档,后来通过5+实现了苹果内购,为了让其他的开放人员少走坑,这里把我测试成功的例子发布下。

<view>  
    <view class="uni-list">  
        <radio-group @change="applePriceChange">  
            <label class="uni-list-cell uni-list-cell-pd" v-for="(item, index) in priceList" :key="index">  
                {{item.text}}  
                <radio :value="item.value" :checked="item.checked" />  
            </label>  
        </radio-group>  
    </view>  
    <view class="uni-padding-wrap">  
        <button class="ipaPayBtn" @click="requestPayment" :loading="loading" :disabled="disabled">确认支付</button>  
    </view>  
</view>  
</view>  

let iapChannel = null,
productId = 'chongzhi_2019_1_14_168',
productIds = ['chongzhi_2019_1_14_168', 'chongzhi_2019_1_14_288','chongzhi_2019_1_14_588','chongzhi_2019_1_14_898'];
export default {
data() {
return {
loading: false,
disabled: true,
priceList: [{
value: 'chongzhi_2019_1_14_168',
text: '支付1元',
checked: true
}, {
value: 'chongzhi_2019_1_14_288',
text: '支付2元',
checked: false
},{
value: 'chongzhi_2019_1_14_588',
text: '支付3元',
checked: false
}, {
value: 'chongzhi_2019_1_14_898',
text: '支付4元',
checked: false
}]
}
},
onLoad: function() {
// 扩展API加载完毕,现在可以正常调用扩展API
var that = this;
plus.payment.getChannels(function(channels){
console.log(JSON.stringify(channels) );
for (var i in channels) {
var channel = channels[i];
if (channel.id === 'appleiap') {
iapChannel = channel;
//获取服务器产品
that.requestOrder();
}
}
if(!iapChannel){
console.log("不支持苹果内购");
}
}, false);
},
methods: {
//获取服务器产品
requestOrder() {
var that = this;
uni.showLoading({
title:'检测支付环境...'
});
iapChannel.requestOrder(productIds, (orderList) => { //必须调用此方法才能进行 iap 支付
that.disabled = false;
uni.hideLoading();
console.log('requestOrder success: ' + JSON.stringify(orderList));
}, (e) => {
that.disabled = false;
uni.hideLoading();
console.log('requestOrder failed: ' + JSON.stringify(e));
});
},
//点击支付
requestPayment(event) {
var that = this;
that.loading = true;
var statement = {
productid: productId
}
plus.payment.request(iapChannel, statement, function(e){
that.loading = false;
//这里的e包括了验证数据,可以发送到服务器端进行验证
console.log(JSON.stringify(e));
}, function(){
that.loading = false;
console.log("支付失败")
});
},
applePriceChange(e) {
productId = e.detail.value;
}
}
}

收起阅读 »

分享获取ios应用图标角标数量,修改并发送至个推服务器

Native.JS iOS 个推

ios离线推送消息是apns发送控制应用图标数量+1,点击消息后应用上的数字消失,实际上并没有-1,以下方法可实现。

plus.push.addEventListener( "click", function( msg ) {  
    //导入ios UIApplication  
    var UIApplication = plus.ios.import("UIApplication");  
    var app = UIApplication.sharedApplication();  
    //获取应用图标的数量  
    var oldNum = app.applicationIconBadgeNumber();  
    var newNum = oldNum - 1;  
    //设置应用图标的数量  
    plus.runtime.setBadgeNumber(newNum);  
    //导入个推原生类  
    var GeTuiSdk = plus.ios.importClass('GeTuiSdk');  
    GeTuiSdk.setBadge(newNum);  
});  
继续阅读 »

ios离线推送消息是apns发送控制应用图标数量+1,点击消息后应用上的数字消失,实际上并没有-1,以下方法可实现。

plus.push.addEventListener( "click", function( msg ) {  
    //导入ios UIApplication  
    var UIApplication = plus.ios.import("UIApplication");  
    var app = UIApplication.sharedApplication();  
    //获取应用图标的数量  
    var oldNum = app.applicationIconBadgeNumber();  
    var newNum = oldNum - 1;  
    //设置应用图标的数量  
    plus.runtime.setBadgeNumber(newNum);  
    //导入个推原生类  
    var GeTuiSdk = plus.ios.importClass('GeTuiSdk');  
    GeTuiSdk.setBadge(newNum);  
});  
收起阅读 »

郑州在线购票app,制作报价是多少钱呢

5 App开发

  在线购票app开发是否值得投资呢,这个问题找郑州app外包公司可以解决,而且在郑州app制作看来,随着智能手机和平板电脑的普及,app已融入到我们的日常生活当中。一项最新数据显示,目前国内手机族每天花在app和网络的时间比例上升到81%,下载到手机上的app数量从32上升到41。作为指尖上的消费,app改变着我们的生活方式。所以在线购票app开发是有发展前景的。

  那么在线购票app开发行业解决方案都要有哪些功能呢?下面就为大家讲解下一款手机在线购票app应用的功能需求:

  在线购票、预定服务

  在线购票功能能够提供用户通过在线进行选购电影票,并且进行选择电影场次、选择观影座位等。同时也能够通过在线进行预定其他服务,根据商家的服务内容为其提供产品服务的展示位。

  互动圈子

  用户可以通过登录会员账号,就能够参与影院圈子的互动,对电影进行点评等,营造良好的平台互动氛围。

  数据统计

  在数据统计中,对会员的消费内容进行统计,并且对个人消费数据分析,为营销人员提供运营的科学数据支持,帮助影院app开发平台实现精准化营销。

  会员积分

  通过商家制定的赢取积分的制度,会员能够通过消费或者参与活动获得积分,并且可以通过积分商城进行换购产品,能够有效提高app的粘性。

  分类排序

  那么多的电影类型,细分开来才是为了用户考虑。

  各大主流票务平台的价格一目了然,不用你一个一个应用逐个打开,便能够一眼看出该选择在哪一家购买。一款软件搞定所有票务平台的购票问题,而且一定能够帮你最快找出最低价。真正实现哪里便宜买哪里!
本文由专业的郑州app外包公司燚轩科技整理发布。

继续阅读 »

  在线购票app开发是否值得投资呢,这个问题找郑州app外包公司可以解决,而且在郑州app制作看来,随着智能手机和平板电脑的普及,app已融入到我们的日常生活当中。一项最新数据显示,目前国内手机族每天花在app和网络的时间比例上升到81%,下载到手机上的app数量从32上升到41。作为指尖上的消费,app改变着我们的生活方式。所以在线购票app开发是有发展前景的。

  那么在线购票app开发行业解决方案都要有哪些功能呢?下面就为大家讲解下一款手机在线购票app应用的功能需求:

  在线购票、预定服务

  在线购票功能能够提供用户通过在线进行选购电影票,并且进行选择电影场次、选择观影座位等。同时也能够通过在线进行预定其他服务,根据商家的服务内容为其提供产品服务的展示位。

  互动圈子

  用户可以通过登录会员账号,就能够参与影院圈子的互动,对电影进行点评等,营造良好的平台互动氛围。

  数据统计

  在数据统计中,对会员的消费内容进行统计,并且对个人消费数据分析,为营销人员提供运营的科学数据支持,帮助影院app开发平台实现精准化营销。

  会员积分

  通过商家制定的赢取积分的制度,会员能够通过消费或者参与活动获得积分,并且可以通过积分商城进行换购产品,能够有效提高app的粘性。

  分类排序

  那么多的电影类型,细分开来才是为了用户考虑。

  各大主流票务平台的价格一目了然,不用你一个一个应用逐个打开,便能够一眼看出该选择在哪一家购买。一款软件搞定所有票务平台的购票问题,而且一定能够帮你最快找出最低价。真正实现哪里便宜买哪里!
本文由专业的郑州app外包公司燚轩科技整理发布。

收起阅读 »

找长沙开发者开发混合APP

外包 移动APP

找长沙开发者开发混合APP,要求Hbuildx,mui;微信:13802520106

找长沙开发者开发混合APP,要求Hbuildx,mui;微信:13802520106

农家乐预订小程序开发_餐饮行业小程序开发- 深圳素与简科技

小程序

近几年农家乐市场如火如荼,各地的农家乐办的有声有色,进出的游客络绎不绝,那对于一个传统行业来说如何通过小程序打通线上线下平台呢?定制一款农家乐预订小程序需要哪些功能呢?餐饮行业点餐系统方案

农家乐小程序核心功能:

1、农庄动态:对农庄的情况做一个介绍,让顾客快速了解农庄概况。

2、农庄相册:发布农庄实景图供顾客查看,让顾客能更加快速更加直观的了解并选择自己喜欢的农庄。

3、住宿介绍:住宿房间分类,条件介绍,顾客可以直接在小程序上直接预订。

4、套餐游玩:游玩项目套餐集合,针对套餐内容有详细图文介绍。

5、优惠券:商家可以设置优惠券。顾客可以在小程序端领取、使用。

5、房间预订:预订房间数、入住人数、姓名、电话、房间保留时间等。

6、房间详情:房间设施、条件详细介绍。

农家乐小程序模块介绍:

农家乐平台支持农庄介绍、饮食、套餐、住宿介绍,同时支持旅行套餐预约、住宿预约,为旅游行业、农家乐市场开拓线上营销。

1、房间列表:包含房间服务、配置、设施等信息;

2、农家详情:包含农家图片、位置、预订、房间详情等信息;

3、预订功能:客户可根据时间、房间类型、价格进行预订;

4、轮播图:可宣传、展示农家乐。

小程序开发推荐深圳素与简科技有限公司(http://www.suyujane.com)多年软件开发经验,海量的开发案例可供参考,看得见的开发经验,让客户更加的省心省力。技术团队都是10年开发工程师,完善的售后服务体系,保障项目开发顺利进行。

继续阅读 »

近几年农家乐市场如火如荼,各地的农家乐办的有声有色,进出的游客络绎不绝,那对于一个传统行业来说如何通过小程序打通线上线下平台呢?定制一款农家乐预订小程序需要哪些功能呢?餐饮行业点餐系统方案

农家乐小程序核心功能:

1、农庄动态:对农庄的情况做一个介绍,让顾客快速了解农庄概况。

2、农庄相册:发布农庄实景图供顾客查看,让顾客能更加快速更加直观的了解并选择自己喜欢的农庄。

3、住宿介绍:住宿房间分类,条件介绍,顾客可以直接在小程序上直接预订。

4、套餐游玩:游玩项目套餐集合,针对套餐内容有详细图文介绍。

5、优惠券:商家可以设置优惠券。顾客可以在小程序端领取、使用。

5、房间预订:预订房间数、入住人数、姓名、电话、房间保留时间等。

6、房间详情:房间设施、条件详细介绍。

农家乐小程序模块介绍:

农家乐平台支持农庄介绍、饮食、套餐、住宿介绍,同时支持旅行套餐预约、住宿预约,为旅游行业、农家乐市场开拓线上营销。

1、房间列表:包含房间服务、配置、设施等信息;

2、农家详情:包含农家图片、位置、预订、房间详情等信息;

3、预订功能:客户可根据时间、房间类型、价格进行预订;

4、轮播图:可宣传、展示农家乐。

小程序开发推荐深圳素与简科技有限公司(http://www.suyujane.com)多年软件开发经验,海量的开发案例可供参考,看得见的开发经验,让客户更加的省心省力。技术团队都是10年开发工程师,完善的售后服务体系,保障项目开发顺利进行。

收起阅读 »

【素与简科技】家政服务小程序开发

小程序

当下各行各业都已步入互联网行业,那对于传统的家政服务业来说应该用哪种方式来插入呢?以我来看,其实制作一款小程序是一个较为稳妥的选择

开发家政服务小程序的优势在于:

1、服务分类多样化,有利于进行细分营销

2、一店变多店,实现多样化经营

3、线上实时接单,方便店家,方便客户

家政服务小程序开发:

1、利用会员积分制,例如消费50元可以积1分,达到20分可以赠送一次服务。这样操作不仅可以增加用户粘性,同时也可以掌握用户数据,并且分析用户数据,从而得出一个精准的用户画像。为以后提供更好的服务做准备。

2、利用线上庞大的用户基数再配合线下的优质服务和营销手段进行配合可以达到客户高质量的转化,稳定客源。通过线上线下相辅相成让生意更好做。

3、有了这样一个小程序可以让阿姨的空余时间进行更加充分的利用,雇主也可以更快更方便地找到阿姨。

4、通过定位功能,可以向雇主推荐周围的阿姨,提高成单效率。

通过定位功能可以向雇主推荐周围的阿姨,提高成单效率,随着通过定位功能可以向雇主推荐周围的阿姨提高成单效率。通过定位功能可以向雇主推荐周围的阿姨,提高成单效率  

推荐:生鲜水果店+门店小程序解决方案

小程序开发推荐深圳素与简科技有限公司(http://www.suyujane.com)多年软件开发经验,海量的开发案例可供参考,看得见的开发经验,让客户更加的省心省力。技术团队都是10年开发工程师,完善的售后服务体系,保障项目开发顺利进行。

继续阅读 »

当下各行各业都已步入互联网行业,那对于传统的家政服务业来说应该用哪种方式来插入呢?以我来看,其实制作一款小程序是一个较为稳妥的选择

开发家政服务小程序的优势在于:

1、服务分类多样化,有利于进行细分营销

2、一店变多店,实现多样化经营

3、线上实时接单,方便店家,方便客户

家政服务小程序开发:

1、利用会员积分制,例如消费50元可以积1分,达到20分可以赠送一次服务。这样操作不仅可以增加用户粘性,同时也可以掌握用户数据,并且分析用户数据,从而得出一个精准的用户画像。为以后提供更好的服务做准备。

2、利用线上庞大的用户基数再配合线下的优质服务和营销手段进行配合可以达到客户高质量的转化,稳定客源。通过线上线下相辅相成让生意更好做。

3、有了这样一个小程序可以让阿姨的空余时间进行更加充分的利用,雇主也可以更快更方便地找到阿姨。

4、通过定位功能,可以向雇主推荐周围的阿姨,提高成单效率。

通过定位功能可以向雇主推荐周围的阿姨,提高成单效率,随着通过定位功能可以向雇主推荐周围的阿姨提高成单效率。通过定位功能可以向雇主推荐周围的阿姨,提高成单效率  

推荐:生鲜水果店+门店小程序解决方案

小程序开发推荐深圳素与简科技有限公司(http://www.suyujane.com)多年软件开发经验,海量的开发案例可供参考,看得见的开发经验,让客户更加的省心省力。技术团队都是10年开发工程师,完善的售后服务体系,保障项目开发顺利进行。

收起阅读 »

youbug

IAP

youbug

youbug

郑州小程序代理,值不值得投资呢

微信小程序 小程序

  找郑州小程序开发或郑州小程序制作好呢?还是做小程序代理创业好呢?小程序上线以来,如今已经成为当下最火热创业风口,无论是小程序开发者,还是创业者,都想进入小程序领域,抢占一杯羹。而小程序也衍生出周边不少创业项目,例如小程序代理、小程序第三方开发平台等。对于没有开发技术的创业者来说,小程序代理到底好不好呢?下面就从几个方面跟大家来分析一下。

  1、抢风口

  除了微信小程序外,各种各样的小程序都有,互联网出现这么多小程序项目,必然是大势所趋。这些经验都告诉我们,站在风口上,就能开启捡钱的模式。

  2、小程序成实体店救命稻草

  众所周知,随着电商的不断发展,导致实体店处境困难。然而小程序的出现,简直是实体店得救命稻草。据不完全统计,前期开通附近小程序功能的实体店,一天能有30-50个浏览量,而且,这些客户都是实体店附近5公里的,随时可以到店。这些店老板做了小程序之后,发现的确有效,于是更多的实体店纷纷开通小程序,通过小程序各个入口引来大量流量。

  3、名字唯一性

  小程序名字具有唯一性,此前有一个小程序被一家中介出价18万收购,和域名一样。好的小程序名字方便用户搜索并发现。

  4、未来广告价值

  当代理商以门店+平台的方式进行的,代理商拓展的门店小程序,都会汇总到代理商的平台上面,等平台上面的商家积累到一定的程度,就有人在他们平台打广告了,

  一家实体店出现附近的小程序里面一次,如果这家店是通过你做的小程序,小程序上面有banner置顶的广告位,这些都可与实体店老板合作共同。如果你抢占的实体店越多,未来能够赚取的广告费就越多。

继续阅读 »

  找郑州小程序开发或郑州小程序制作好呢?还是做小程序代理创业好呢?小程序上线以来,如今已经成为当下最火热创业风口,无论是小程序开发者,还是创业者,都想进入小程序领域,抢占一杯羹。而小程序也衍生出周边不少创业项目,例如小程序代理、小程序第三方开发平台等。对于没有开发技术的创业者来说,小程序代理到底好不好呢?下面就从几个方面跟大家来分析一下。

  1、抢风口

  除了微信小程序外,各种各样的小程序都有,互联网出现这么多小程序项目,必然是大势所趋。这些经验都告诉我们,站在风口上,就能开启捡钱的模式。

  2、小程序成实体店救命稻草

  众所周知,随着电商的不断发展,导致实体店处境困难。然而小程序的出现,简直是实体店得救命稻草。据不完全统计,前期开通附近小程序功能的实体店,一天能有30-50个浏览量,而且,这些客户都是实体店附近5公里的,随时可以到店。这些店老板做了小程序之后,发现的确有效,于是更多的实体店纷纷开通小程序,通过小程序各个入口引来大量流量。

  3、名字唯一性

  小程序名字具有唯一性,此前有一个小程序被一家中介出价18万收购,和域名一样。好的小程序名字方便用户搜索并发现。

  4、未来广告价值

  当代理商以门店+平台的方式进行的,代理商拓展的门店小程序,都会汇总到代理商的平台上面,等平台上面的商家积累到一定的程度,就有人在他们平台打广告了,

  一家实体店出现附近的小程序里面一次,如果这家店是通过你做的小程序,小程序上面有banner置顶的广告位,这些都可与实体店老板合作共同。如果你抢占的实体店越多,未来能够赚取的广告费就越多。

收起阅读 »

uni-app 启动界面(splash)参数配置说明 | 启动慢的原因

白屏 启动慢 启动速度

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

HBuilderX 1.6.0 版本之后,新增是否等待首页渲染完毕后再关闭启动界面(splash)的配置,App引擎会自动检测首页渲染,若未渲染则不关闭splash,避免显示白屏,提升用户体验。

可在manifest.json文件中进行配置,支持以下三种关闭启动界面(splash)策略:

  • 首页渲染完毕后自动关闭启动界面
  • 首页加载完成后自动关闭启动界面
  • 代码控制关闭启动界面

首页渲染完毕后自动关闭启动界面

打开项目的manifest.json文件,在“App启动界面配置”中的“启动界面选项”下勾选“等待首页渲染完毕后再关闭Splash图”:

源码视图
切换到源码视图界面,在 "app-plus"->"splashscreen" 节点设置 alwaysShowBeforeRender 属性值为 true

    "app-plus" : {  
        "splashscreen" : {  
            "alwaysShowBeforeRender" : true  
        }  
        //...  
    }

提示:

  • App启动时,App引擎自动检测首页渲染情况,若首页未渲染(白屏),则不关闭splash;检测到首页渲染完成则关闭splash;
  • 若启动时间超过10秒,则不管首页是否白屏,都会自动关闭splash

首页加载完成后自动关闭启动界面

打开项目的manifest.json文件,在“App启动界面配置”中的“启动界面选项”下去掉勾选“等待首页渲染完毕后再关闭Splash图”:

源码视图
切换到源码视图界面,在 "app-plus"->"splashscreen" 节点设置 alwaysShowBeforeRender 属性值为 false

    "app-plus" : {  
        "splashscreen" : {  
            "alwaysShowBeforeRender" : false  
        }  
        //...  
    }

提示:
首页加载完成后关闭启动界面,此时首页可能没有完成渲染,在部分设备可能会闪一下白屏(不推荐)

代码控制关闭启动界面

启动界面不会自动关闭,需要开发者在代码中调用plus.navigator.closeSplashscreen()关闭启动界面。
需在“源码视图”中同时设置 alwaysShowBeforeRender 和 autoClose 属性值为 false

源码视图
切换到源码视图界面,在 "app-plus"->"splashscreen" 节点设置如下:

    "app-plus" : {  
        "splashscreen" : {  
            "alwaysShowBeforeRender" : false,  
            "autoclose": false  
        }  
        //...  
    }

提示:
不会自动关闭启动界面,需开发者根据业务逻辑在合适的时机调用 plus.navigator.closeSplashscreen() 关闭启动界面

另,如果uni-app不是v3编译器,请升级为v3,可以大幅提升启动速度:https://ask.dcloud.net.cn/article/36599

继续阅读 »

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

HBuilderX 1.6.0 版本之后,新增是否等待首页渲染完毕后再关闭启动界面(splash)的配置,App引擎会自动检测首页渲染,若未渲染则不关闭splash,避免显示白屏,提升用户体验。

可在manifest.json文件中进行配置,支持以下三种关闭启动界面(splash)策略:

  • 首页渲染完毕后自动关闭启动界面
  • 首页加载完成后自动关闭启动界面
  • 代码控制关闭启动界面

首页渲染完毕后自动关闭启动界面

打开项目的manifest.json文件,在“App启动界面配置”中的“启动界面选项”下勾选“等待首页渲染完毕后再关闭Splash图”:

源码视图
切换到源码视图界面,在 "app-plus"->"splashscreen" 节点设置 alwaysShowBeforeRender 属性值为 true

    "app-plus" : {  
        "splashscreen" : {  
            "alwaysShowBeforeRender" : true  
        }  
        //...  
    }

提示:

  • App启动时,App引擎自动检测首页渲染情况,若首页未渲染(白屏),则不关闭splash;检测到首页渲染完成则关闭splash;
  • 若启动时间超过10秒,则不管首页是否白屏,都会自动关闭splash

首页加载完成后自动关闭启动界面

打开项目的manifest.json文件,在“App启动界面配置”中的“启动界面选项”下去掉勾选“等待首页渲染完毕后再关闭Splash图”:

源码视图
切换到源码视图界面,在 "app-plus"->"splashscreen" 节点设置 alwaysShowBeforeRender 属性值为 false

    "app-plus" : {  
        "splashscreen" : {  
            "alwaysShowBeforeRender" : false  
        }  
        //...  
    }

提示:
首页加载完成后关闭启动界面,此时首页可能没有完成渲染,在部分设备可能会闪一下白屏(不推荐)

代码控制关闭启动界面

启动界面不会自动关闭,需要开发者在代码中调用plus.navigator.closeSplashscreen()关闭启动界面。
需在“源码视图”中同时设置 alwaysShowBeforeRender 和 autoClose 属性值为 false

源码视图
切换到源码视图界面,在 "app-plus"->"splashscreen" 节点设置如下:

    "app-plus" : {  
        "splashscreen" : {  
            "alwaysShowBeforeRender" : false,  
            "autoclose": false  
        }  
        //...  
    }

提示:
不会自动关闭启动界面,需开发者根据业务逻辑在合适的时机调用 plus.navigator.closeSplashscreen() 关闭启动界面

另,如果uni-app不是v3编译器,请升级为v3,可以大幅提升启动速度:https://ask.dcloud.net.cn/article/36599

收起阅读 »

uni-app 全面屏、刘海屏适配(iphoneX适配)及安全区设置

安全区 iphonex uniapp 全屏幕

方案一:使用原生占位(仅App端支持)

manifest.json 文件 app-plus 节点下配下 safearea

"safearea": {  
    "background": "#CCCCCC",  
    "bottom": {  
        "offset": "auto"  
    }  
}

方案二:不使用原生占位(非App端可以不配置manifest)

manifest.json 文件 app-plus 节点下配下 safearea

"safearea": {  
    "bottom": {  
        "offset": "none"  
    }  
}

然后在需要适配的页面内使用 css 常量 constant(safe-area-inset-bottom)、env(safe-area-inset-bottom) 来适配,参考:为iPhoneX设计网站。微信小程序模拟器不支持,以真机为准。

比如为列表底部添加内边距避开安全区,在 iPhoneX 上列表底部会有内边距,在其他设备上没有内边距:

<style>  
.list {  
  padding-bottom: 0;  
  padding-bottom: constant(safe-area-inset-bottom);  
  padding-bottom: env(safe-area-inset-bottom);  
}  
</style>

nvue 页面不支持 css 常量,可以使用 uni.getSystemInfo 获取 safeAreaInsets 动态设置到 style 属性。

注意:使用了pages.json里的原生tabbar,不管manifest里安全区设置如何,在tabbar下方都会留出空隙。

判断是否为刘海屏的方法

使用5+ API (plus.navigator.hasNotchInScreen)可查询当前设备是否为刘海屏。
详情参考:https://www.html5plus.org/doc/zh_cn/navigator.html#plus.navigator.hasNotchInScreen

安卓底部虚拟按键背景色修改方式

使用Native.js修改:

var Color = plus.android.importClass("android.graphics.Color");    
    plus.android.importClass("android.view.Window");    
    var mainActivity = plus.android.runtimeMainActivity();    
    var window_android = mainActivity.getWindow();    
    window_android.setNavigationBarColor(Color.GREEN);  
继续阅读 »

方案一:使用原生占位(仅App端支持)

manifest.json 文件 app-plus 节点下配下 safearea

"safearea": {  
    "background": "#CCCCCC",  
    "bottom": {  
        "offset": "auto"  
    }  
}

方案二:不使用原生占位(非App端可以不配置manifest)

manifest.json 文件 app-plus 节点下配下 safearea

"safearea": {  
    "bottom": {  
        "offset": "none"  
    }  
}

然后在需要适配的页面内使用 css 常量 constant(safe-area-inset-bottom)、env(safe-area-inset-bottom) 来适配,参考:为iPhoneX设计网站。微信小程序模拟器不支持,以真机为准。

比如为列表底部添加内边距避开安全区,在 iPhoneX 上列表底部会有内边距,在其他设备上没有内边距:

<style>  
.list {  
  padding-bottom: 0;  
  padding-bottom: constant(safe-area-inset-bottom);  
  padding-bottom: env(safe-area-inset-bottom);  
}  
</style>

nvue 页面不支持 css 常量,可以使用 uni.getSystemInfo 获取 safeAreaInsets 动态设置到 style 属性。

注意:使用了pages.json里的原生tabbar,不管manifest里安全区设置如何,在tabbar下方都会留出空隙。

判断是否为刘海屏的方法

使用5+ API (plus.navigator.hasNotchInScreen)可查询当前设备是否为刘海屏。
详情参考:https://www.html5plus.org/doc/zh_cn/navigator.html#plus.navigator.hasNotchInScreen

安卓底部虚拟按键背景色修改方式

使用Native.js修改:

var Color = plus.android.importClass("android.graphics.Color");    
    plus.android.importClass("android.view.Window");    
    var mainActivity = plus.android.runtimeMainActivity();    
    var window_android = mainActivity.getWindow();    
    window_android.setNavigationBarColor(Color.GREEN);  
收起阅读 »

uni-app 开发头条小程序注意事项

uniapp

> HBuilderX 1.6.0 开始,uni-app 支持开发头条小程序(字节跳动小程序)。

准备工作

首先,你需要下载相应的开发工具:

下载安装完成后,打开 HBuilderX 配置菜单->工具->设置->运行配置->字节跳动开发者工具路径。
注意,需要配置到具体的执行文件,即 字节跳动开发者工具.exe 文件。

开发

  • 选中 uni-app 项目,菜单->运行->运行到小程序模拟器->字节跳动开发者工具。
  • 如果没有配置字节跳动开发者工具的路径,则会提示配置相关信息。
  • 字节跳动开发者工具目前未支持直接唤醒并打开指定的项目,因此需要根据控制台提示的路径,再启动开发者工具后手动导入项目。
  • appid 等信息,可以 manifest.json 的可视化界面中操作配置。

发布

开发模式下代码未压缩且含有 SourceMap 等资源,如果正式发布则需要使用发布功能。

  • 填写 appid 等信息后,菜单->发行->小程序-字节跳动。
  • 然后,请根据 HBuilderX 控制台的路径信息,在字节跳动开发者工具中导入最终的项目。
  • 可能会存在重复的 appid 或项目名称,需要手动将之前开发模式的项目从字节跳动开发者工具中移除。
  • 导入项目成功后,在字节跳动开发者工具中选择上传即可。

平台差异

继续阅读 »

> HBuilderX 1.6.0 开始,uni-app 支持开发头条小程序(字节跳动小程序)。

准备工作

首先,你需要下载相应的开发工具:

下载安装完成后,打开 HBuilderX 配置菜单->工具->设置->运行配置->字节跳动开发者工具路径。
注意,需要配置到具体的执行文件,即 字节跳动开发者工具.exe 文件。

开发

  • 选中 uni-app 项目,菜单->运行->运行到小程序模拟器->字节跳动开发者工具。
  • 如果没有配置字节跳动开发者工具的路径,则会提示配置相关信息。
  • 字节跳动开发者工具目前未支持直接唤醒并打开指定的项目,因此需要根据控制台提示的路径,再启动开发者工具后手动导入项目。
  • appid 等信息,可以 manifest.json 的可视化界面中操作配置。

发布

开发模式下代码未压缩且含有 SourceMap 等资源,如果正式发布则需要使用发布功能。

  • 填写 appid 等信息后,菜单->发行->小程序-字节跳动。
  • 然后,请根据 HBuilderX 控制台的路径信息,在字节跳动开发者工具中导入最终的项目。
  • 可能会存在重复的 appid 或项目名称,需要手动将之前开发模式的项目从字节跳动开发者工具中移除。
  • 导入项目成功后,在字节跳动开发者工具中选择上传即可。

平台差异

收起阅读 »

个推用户画像的实践与应用

SDK

“以用户为核心”的概念在互联网时代深入人心,然而要真正了解用户懂得用户,就不得不提到“用户画像”。 随着大数据技术的深入研究与应用,借助用户画像,企业或APP可以深入挖掘用户需求,从而实现精细化运营以及为精准营销打下坚实基础。本文将重点介绍何为用户画像,用户画像的构建流程以及应用场景。

用户画像,本质是数据能力的体现

用户画像,即用户信息的标签化,而从本质上来说,用户画像是数据的标签化。常见的用户画像体系有三种:结构化体系、非结构化体系和半结构化体系。非结构化体系没有明显的层级,较为独立。半结构化层次有一定的层级概念,但是没有过于严格的依赖关系。结构化体系有较强的层级结构。以一个简单的三级结构化标签为例,一级标签有基本属性和兴趣偏好,并且由此可以延伸至二级标签和三级标签,具体到不同的属性和兴趣爱好。

在互联网、电商领域,用户画像常用来作为精准营销、推荐系统的基础性工作,其作用总体包括:

(1)精准营销:根据历史用户特征,运营人员可以分析产品的潜在用户和用户的潜在需求,继而通过相应的手段,针对特定群体进行营销。

(2)用户分析:根据用户的属性、行为特征对用户进行分类后,可以统计不同特征下的用户数量、分布,分析不同用户画像群体的分布特征。

(3)数据挖掘:以用户画像为基础,开发人员可以构建推荐系统、搜索引擎、广告投放系统,提升服务精准度。

(4)服务产品:描绘产品的用户画像,对产品进行受众分析,更透彻地理解用户使用产品的心理动机和行为习惯,完善产品运营,提升服务质量。

(5)行业报告&用户研究:通过用户画像分析可以使运营人员更加了解行业动态,比如人群消费习惯、消费偏好分析、不同地域品类消费差异分析等。

个推用户画像的实践

个推依托多年推送服务的积累和强大的大数据分析能力,推出了个推画像SDK(个像),为APP开发者提供丰富的用户画像数据以及实时的场景识别能力。

个推独有的冷、热、温数据标签,可以有效分析用户的线上线下行为,深入挖掘用户特征,助力APP运营者全面了解用户属性。其中,“冷数据”是指用户的基础属性,改变的概率较小,如性别、年龄层次等;“温数据”则可以回溯用户近期活跃的应用和场景,具有一定的时效性;“热数据”是指用户当下的场景及实时的用户行为,帮助APP运营者抓住稍纵即逝的营销机会。

个推不仅拥有丰富的通用标签体系,还可以根据客户特定的需求联合建模,输出定制化的标签,以满足APP在不同场景需求下的运营。

规范画像构建流程

用户画像的构建需要技术和业务人员的共同参与,以避免形式化的用户画像。个推也有一些做法可供开发者们进行参考。

(1)标签体系设计。开发者需要先了解自身的数据,确定需要设计的标签形式。

(2)基础数据收集、多数据源数据融合。个推在构建用户画像时,会整合个推以及该APP自身的数据。

(3)实现用户统一标识。多数情况下,APP的众多用户分布于不同的账号体系中,个推会将其统一标识。

(4)用户画像特征层构建。即将每一个数据进行特征化。

(5)画像标签规则+算法建模。两者缺一不可,在实际的应用中,算法难以解决的问题,利用简单的规则也可以达到很好的效果。

(6)利用算法对所有用户打标签。

(7)画像质量监控。在实际的应用中,用户画像会产生一定的波动,为了解决这个问题,个推搭建了相应的监控系统,对画像的质量进行监控。

个推用户画像构建的整体流程,可以分为三个部分,第一,基础数据处理。基础数据包括用户设备信息、用户的线上APP偏好以及线下场景数据等。

第二,画像中间数据处理。处理结果包括线上APP偏好特征和线下场景特征等。

第三,画像信息表。表中应有四种信息:设备基础属性;用户基础画像,包括用户的性别、年龄层次、相关消费水平等;用户兴趣画像,即用户更有兴趣的方向,如用户更偏好比价类APP还是海淘类APP;用户其它画像等。

在个推用户画像构建的过程中,机器学习占据了较为重要的位置。机器学习主要是海量数据持续更新、数据清洗、数据存储的过程。个推更多地利用机器学习平台进行相应的预测分析、模型输出等。

画像质量的关注有两个重点,第一,如何优化质量。个推会对用户画像的模型定期地进行修改和优化。第二,关注画像质量波动情况,对异常变化及时预警。

个推用户画像应用

个推画像SDK的集成,可以丰富APP的用户分析维度,其主要应用体现在两方面:第一,精准推荐,APP的运营者可以通过个像提供的性别、年龄层次、兴趣爱好、场景等丰富标签,为不同的用户推荐不同的内容,以达到更加精细化的运营,并提升用户活跃度和留存率。

第二,用户聚类,个推可以帮助APP处理用户数据,补全用户画像,建立用户的聚类模型。同时,通过用户特征分析,个推还能够将APP的老用户映射到某一聚类,以此产出APP的目标聚类,最终助力APP运营者针对不同用户群体制定更加精准的运营策略。

“千万人撩你,不如一人懂你”,当互联网逐渐步入大数据时代,APP只有真正地了解用户,才能得到用户并留住用户。基于个推完备的大数据计算架构,个推画像SDK的接入,不仅可以帮助开发人员提高开发决策的效率,也可以帮助APP运营人员开展精细化运营,从而提升企业的营销效率和市场竞争力。

继续阅读 »

“以用户为核心”的概念在互联网时代深入人心,然而要真正了解用户懂得用户,就不得不提到“用户画像”。 随着大数据技术的深入研究与应用,借助用户画像,企业或APP可以深入挖掘用户需求,从而实现精细化运营以及为精准营销打下坚实基础。本文将重点介绍何为用户画像,用户画像的构建流程以及应用场景。

用户画像,本质是数据能力的体现

用户画像,即用户信息的标签化,而从本质上来说,用户画像是数据的标签化。常见的用户画像体系有三种:结构化体系、非结构化体系和半结构化体系。非结构化体系没有明显的层级,较为独立。半结构化层次有一定的层级概念,但是没有过于严格的依赖关系。结构化体系有较强的层级结构。以一个简单的三级结构化标签为例,一级标签有基本属性和兴趣偏好,并且由此可以延伸至二级标签和三级标签,具体到不同的属性和兴趣爱好。

在互联网、电商领域,用户画像常用来作为精准营销、推荐系统的基础性工作,其作用总体包括:

(1)精准营销:根据历史用户特征,运营人员可以分析产品的潜在用户和用户的潜在需求,继而通过相应的手段,针对特定群体进行营销。

(2)用户分析:根据用户的属性、行为特征对用户进行分类后,可以统计不同特征下的用户数量、分布,分析不同用户画像群体的分布特征。

(3)数据挖掘:以用户画像为基础,开发人员可以构建推荐系统、搜索引擎、广告投放系统,提升服务精准度。

(4)服务产品:描绘产品的用户画像,对产品进行受众分析,更透彻地理解用户使用产品的心理动机和行为习惯,完善产品运营,提升服务质量。

(5)行业报告&用户研究:通过用户画像分析可以使运营人员更加了解行业动态,比如人群消费习惯、消费偏好分析、不同地域品类消费差异分析等。

个推用户画像的实践

个推依托多年推送服务的积累和强大的大数据分析能力,推出了个推画像SDK(个像),为APP开发者提供丰富的用户画像数据以及实时的场景识别能力。

个推独有的冷、热、温数据标签,可以有效分析用户的线上线下行为,深入挖掘用户特征,助力APP运营者全面了解用户属性。其中,“冷数据”是指用户的基础属性,改变的概率较小,如性别、年龄层次等;“温数据”则可以回溯用户近期活跃的应用和场景,具有一定的时效性;“热数据”是指用户当下的场景及实时的用户行为,帮助APP运营者抓住稍纵即逝的营销机会。

个推不仅拥有丰富的通用标签体系,还可以根据客户特定的需求联合建模,输出定制化的标签,以满足APP在不同场景需求下的运营。

规范画像构建流程

用户画像的构建需要技术和业务人员的共同参与,以避免形式化的用户画像。个推也有一些做法可供开发者们进行参考。

(1)标签体系设计。开发者需要先了解自身的数据,确定需要设计的标签形式。

(2)基础数据收集、多数据源数据融合。个推在构建用户画像时,会整合个推以及该APP自身的数据。

(3)实现用户统一标识。多数情况下,APP的众多用户分布于不同的账号体系中,个推会将其统一标识。

(4)用户画像特征层构建。即将每一个数据进行特征化。

(5)画像标签规则+算法建模。两者缺一不可,在实际的应用中,算法难以解决的问题,利用简单的规则也可以达到很好的效果。

(6)利用算法对所有用户打标签。

(7)画像质量监控。在实际的应用中,用户画像会产生一定的波动,为了解决这个问题,个推搭建了相应的监控系统,对画像的质量进行监控。

个推用户画像构建的整体流程,可以分为三个部分,第一,基础数据处理。基础数据包括用户设备信息、用户的线上APP偏好以及线下场景数据等。

第二,画像中间数据处理。处理结果包括线上APP偏好特征和线下场景特征等。

第三,画像信息表。表中应有四种信息:设备基础属性;用户基础画像,包括用户的性别、年龄层次、相关消费水平等;用户兴趣画像,即用户更有兴趣的方向,如用户更偏好比价类APP还是海淘类APP;用户其它画像等。

在个推用户画像构建的过程中,机器学习占据了较为重要的位置。机器学习主要是海量数据持续更新、数据清洗、数据存储的过程。个推更多地利用机器学习平台进行相应的预测分析、模型输出等。

画像质量的关注有两个重点,第一,如何优化质量。个推会对用户画像的模型定期地进行修改和优化。第二,关注画像质量波动情况,对异常变化及时预警。

个推用户画像应用

个推画像SDK的集成,可以丰富APP的用户分析维度,其主要应用体现在两方面:第一,精准推荐,APP的运营者可以通过个像提供的性别、年龄层次、兴趣爱好、场景等丰富标签,为不同的用户推荐不同的内容,以达到更加精细化的运营,并提升用户活跃度和留存率。

第二,用户聚类,个推可以帮助APP处理用户数据,补全用户画像,建立用户的聚类模型。同时,通过用户特征分析,个推还能够将APP的老用户映射到某一聚类,以此产出APP的目标聚类,最终助力APP运营者针对不同用户群体制定更加精准的运营策略。

“千万人撩你,不如一人懂你”,当互联网逐渐步入大数据时代,APP只有真正地了解用户,才能得到用户并留住用户。基于个推完备的大数据计算架构,个推画像SDK的接入,不仅可以帮助开发人员提高开发决策的效率,也可以帮助APP运营人员开展精细化运营,从而提升企业的营销效率和市场竞争力。

收起阅读 »