1-开发共享版APP(搭建指南)-快速搭建到自己的服务器

弱龄寄事外,委怀在琴书。这篇文章主要讲述1-开发共享版APP(搭建指南)-快速搭建到自己的服务器相关的知识,希望能为你提供帮助。
该APP安装包下载链接:
http://www.mnif.cn/appapk/IotDevelopmentVersion/20190820/app-debug.apk
或者扫描二维码下载

1-开发共享版APP(搭建指南)-快速搭建到自己的服务器

文章图片

注:该下载可能下载的为旧版本,可点击 用户 检查更新 升级为最新版本 
 
  APP源码获取方式:(请阅读宝贝说明)
此APP建立在基础篇,升级篇,数据篇和安全篇.只有把这些篇章全部学过才能看得懂源码!
https://item.taobao.com/item.htm?spm=a2oq0.12575281.0.0.70471debVGb9G8& ft=t& id=569295486025
 
如果用户获得了源码,想快速的应用到自己的服务器上,请参看此系列文章
 
一,搭建配置MQTT服务器
1,基础篇中,安装配置MQTT服务器
1-开发共享版APP(搭建指南)-快速搭建到自己的服务器

文章图片

 
 
  2,安全篇中,为MQTT配置安全连接
https://www.cnblogs.com/yangfengwu/category/1451836.html
1-开发共享版APP(搭建指南)-快速搭建到自己的服务器

文章图片

 
【1-开发共享版APP(搭建指南)-快速搭建到自己的服务器】 
二,安装配置数据库
1,数据篇中,安装数据库
https://www.cnblogs.com/yangfengwu/category/1410242.html
1-开发共享版APP(搭建指南)-快速搭建到自己的服务器

文章图片

 
请在云端数据库建一个数据库名字为login的数据库,名字为register的表格,表格中的字段名字如下
 
1-开发共享版APP(搭建指南)-快速搭建到自己的服务器

文章图片

 
 
 
三,搭建配置Apache 服务器
1,升级篇中,安装配置Apache 服务器
https://www.cnblogs.com/yangfengwu/category/1383497.html
 
1-开发共享版APP(搭建指南)-快速搭建到自己的服务器

文章图片

2,微信小程序篇中,
https://www.cnblogs.com/yangfengwu/category/1462689.html
 
1-开发共享版APP(搭建指南)-快速搭建到自己的服务器

文章图片

 
 
  四,云服务器配置解析登录注册的php程序
1,网页根目录建一个名字为    LoginAndRegistration 的文件夹
1-开发共享版APP(搭建指南)-快速搭建到自己的服务器

文章图片

1-开发共享版APP(搭建指南)-快速搭建到自己的服务器

文章图片

 
 
  ChangePassword.php
< ?php//http://IP地址/LoginAndRegistration/ChangePassword.php?Phone=13275429560& Password=25 //https://域名/LoginAndRegistration/ChangePassword.php?Phone=13275429560& Password=25 //PHP规定所有的变量前头必须加$ //明确一点,PHP的echo都是http返回的数据$servername = "localhost"; //链接本地数据库 $username = "root"; //root账户 $password = "qwer123456"; //密码,根据自己的修改 $dbname = "login"; //链接的数据库名字 $TableName = "register"; //链接的表格的名字function groupSelect($from, $where1, $condition1,$value1, $condition,$where2, $condition2, $value2) { $sql = "select *from ".$from." where ".$where1.$condition1."\'".$value1."\'".$condition ." ".$where2.$condition2."\'".$value2."\'"; return$sql; } function groupSelect1($from, $where1, $condition1,$value1) { $sql = "select *from ".$from." where ".$where1.$condition1."\'".$value1."\'"; return$sql; }try { $LoginPhone = $_GET["Phone"]; //用户提交的用户名 $Loginpassword= $_GET["Password"]; //用户提交的密码try { $conn = new PDO("mysql:host=$servername; port=3306; dbname=$dbname", $username, $password); //链接数据库 //echo "PDO的API连接成功"; // 设置 PDO 错误模式为异常 $conn-> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $Flage = false; $sql = groupSelect1($TableName, "phone","=",$LoginPhone); //查询有没有此手机号$result = $conn-> query($sql); //发送SQL语句并接收数据库返回if ($result & & $result-> rowCount()) {//查询到数据 $Flage = true; }if($Flage == true){ $Flage = false; $sql = "UPDATE ".$TableName." SET password = "."\'".$Loginpassword ."\'"." WHERE phone=" .$LoginPhone; //更新 $count=$conn-> exec($sql); //返回受影响的行数 if($count!=0){ echo "OK"; //返回 }else{ echo "errorCode:NoChange"; //返回 } } else{ echo "errorCode:NoUserName"; //没有用户 } $conn=null; //关闭 } catch(PDOException $e){ echo $e-> getMessage(); echo "errorCode:DataBase"; //返回 } } catch(PDOException $e) { echo $e-> getMessage(); echo "errorCode:ReadData"; //返回 }

 
 
  login.php

< ?php//http://IP地址/LoginAndRegistration/login.php?Phone=13275429560& Password=25 //PHP规定所有的变量前头必须加$ //明确一点,PHP的echo都是http返回的数据$servername = "localhost"; $username = "root"; $password = "qq946029359"; //根据自己的修改 $dbname = "login"; //链接的数据库名字 $TableName = "register"; //链接的表格的名字function groupSelect($from, $where1, $condition1,$value1, $condition,$where2, $condition2, $value2) { $sql = "select *from ".$from." where ".$where1.$condition1."\'".$value1."\'".$condition ." ".$where2.$condition2."\'".$value2."\'"; return$sql; } function groupSelect1($from, $where1, $condition1,$value1) { $sql = "select *from ".$from." where ".$where1.$condition1."\'".$value1."\'"; return$sql; }try { $LoginPhone = $_GET["Phone"]; //用户提交的用户名 $Loginpassword= $_GET["Password"]; //用户提交的密码try { $conn = new PDO("mysql:host=$servername; port=3306; dbname=$dbname", $username, $password); //链接数据库 //echo "PDO的API连接成功"; // 设置 PDO 错误模式为异常 $conn-> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $Flage = false; $sql = groupSelect1($TableName, "phone","=",$LoginPhone); //查询有没有此手机号$result = $conn-> query($sql); //发送SQL语句并接收数据库返回if ($result & & $result-> rowCount()) {//查询到数据 $Flage = true; }if($Flage == true){ $Flage = false; $sql = groupSelect($TableName, "phone","=",$LoginPhone,"and","password","=",$Loginpassword); //组合SQL语句 $result = $conn-> query($sql); //发送SQL语句并接收数据库返回 if ($result & & $result-> rowCount()) {//查询到数据 //其实只要查询到就可以$Flage = true; while($row = $result-> fetch()) {//循环读出数据 $Flage = true; //用户名和密码正确 //echo $row[\'phone\'].$row[\'password\']; //打印数据 break; } } if($Flage == true) { echo "OK"; //返回 } else { echo "errorCode:Password"; //密码错误 } } else{ echo "errorCode:NoUserName"; //没有用户 } $conn=null; //关闭 } catch(PDOException $e){ //echo $e-> getMessage(); echo "errorCode:DataBase"; //返回 } } catch(PDOException $e) { //echo $e-> getMessage(); echo "errorCode:ReadData"; //返回 }

 
  Register.php
< ?php //注册或者找回密码 //http://IP地址/LoginAndRegistration/Register.php?TAG=Register& Phone=13275429560& Password=25//注册 //http://IP地址/LoginAndRegistration/Register.php?TAG=RePassword& Phone=13275429560& Password=25//找回密码//https://域名/LoginAndRegistration/Register.php?TAG=Register& Phone=13275429560& Password=25//注册 //https://域名/LoginAndRegistration/Register.php?TAG=RePassword& Phone=13275429560& Password=25//找回密码 //PHP规定所有的变量前头必须加$ //明确一点,PHP的echo都是http返回的数据$servername = "localhost"; $username = "root"; $password = "qwer123456"; //根据自己的修改 $dbname = "login"; //链接的数据库名字 $TableName = "register"; //链接的表格的名字function groupSelect($from, $where1, $condition1,$value1, $condition,$where2, $condition2, $value2) { $sql = "select *from ".$from." where ".$where1.$condition1."\'".$value1."\'".$condition ." ".$where2.$condition2."\'".$value2."\'"; return$sql; } function groupSelect1($from, $where1, $condition1,$value1) { $sql = "select *from ".$from." where ".$where1.$condition1."\'".$value1."\'"; return$sql; } function groupDelete($from, $where, $condition,$value) { $sql = "delete from ".$from." where ".$where.$condition."\'".$value."\'"; return$sql; }function groupInsert($from,& $option,& $value) { $Option = $option[0]; $Value = "https://www.songbingjia.com/'".$value[0]; $bl = false; foreach($option as $va){ if ($bl == true){ $Option = $Option.",".$va; } else{$bl = true; } } $bl = false; foreach($value as $va){ if ($bl == true) $Value = https://www.songbingjia.com/android/$Value."\'".","."\'".$va; else $bl = true; } $Value=https://www.songbingjia.com/android/$Value ."\'"; $sql = "insert into ".$from ."(".$Option .")". " values(". $Value.")"; return$sql; } try { $LoginTAG = $_GET["TAG"]; //是注册还是找回密码 $LoginPhone = $_GET["Phone"]; //用户提交的用户名 $Loginpassword= $_GET["Password"]; //用户提交的密码try { $conn = new PDO("mysql:host=$servername; port=3306; dbname=$dbname", $username, $password); //链接数据库 //echo "PDO的API连接成功"; // 设置 PDO 错误模式为异常 $conn-> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $Flage = false; $sql = groupSelect1($TableName, "phone","=",$LoginPhone); //查询有没有此手机号 $result = $conn-> query($sql); //发送SQL语句并接收数据库返回 if ($result & & $result-> rowCount()) {//查询到数据 $Flage = true; }if($Flage == true){//有这个用户 $Flage = false; if($LoginTAG == "Register"){//如果是注册 echo "errorCode:UserAlreadyExists"; //返回用户已经存在 }else if ($LoginTAG == "RePassword"){//如果是找回密码 //注:用户找回密码我建议先清除掉该用户绑定的所有设备信息 /*写删除该用户的绑定设备的所有信息的函数*/ $sql = groupDelete($TableName,"phone","=",$LoginPhone); //删除该手机号的信息 $count=$conn-> exec($sql); //返回受影响的行数 if($count!=0){//删除了数据 $option=array("phone","password"); $value=https://www.songbingjia.com/android/array($LoginPhone,$Loginpassword); $sql = groupInsert($TableName,$option,$value); $count=$conn-> exec($sql); //返回受影响的行数 if ($count !=0){//插入数据成功 echo"OK"; //重置密码成功 }else{ echo "errorCode:DataBase"; //重置密码失败,访问数据库异常 } }else{ echo "errorCode:DeleteUser"; //删除用户信息异常 } } } else{//没有这个用户 if($LoginTAG == "Register"){//如果是注册 $option=array("phone","password"); $value=https://www.songbingjia.com/android/array($LoginPhone,$Loginpassword); $sql = groupInsert($TableName,$option,$value); $count=$conn-> exec($sql); //返回受影响的行数 if ($count !=0){//插入数据成功 echo"OK"; //注册成功 }else{ echo "errorCode:DataBase"; //注册失败,访问数据库异常 } }else if ($LoginTAG == "RePassword"){//如果是找回密码 echo "errorCode:NoUserName"; //没有用户 } } $conn=null; //关闭 } catch(PDOException $e){ //echo $e-> getMessage(); echo "errorCode:DataBase"; //返回 } } catch(PDOException $e) { //echo $e-> getMessage(); echo "errorCode:ReadData"; //返回 }

 
五,修改APP连接的地址信息
1,修改注册登录连接的IP地址
1-开发共享版APP(搭建指南)-快速搭建到自己的服务器

文章图片

 
 
 
  2,修改连接的MQTT的信息
1-开发共享版APP(搭建指南)-快速搭建到自己的服务器

文章图片

 
 
  3,APP的更新配置(只需要把更新文件和更新的安装包放在可以http或者https访问下载的地方就可以)
1,修改访问更新文件,根据自己的修改
1-开发共享版APP(搭建指南)-快速搭建到自己的服务器

文章图片

 
 
  访问的更新文件的内容
{ VerCode:5, VerName:1.2.1, Address:"http://www.mnif.cn/appapk/IotDevelopmentVersion/20190730/app-debug.apk", Details: "1,增加自定义MQTT连接,支持TCP,SSL; 2,绑定设备可以自定义订阅的主题 3,支持单路开关控制 4,优化了通信监听程序 " }

注:整个文件内容为JSON格式
VerCode:5, VerName:1.2.1,
每次上传APP安装包以后请修改此处和APP内部保持一致

1-开发共享版APP(搭建指南)-快速搭建到自己的服务器

文章图片

 

Address:"http://www.mnif.cn/appapk/IotDevelopmentVersion/20190730/app-debug.apk",
此为APP安装包的地址信息,请自行按照自己的修改

注:我的方式是先访问 updateinfo.txt 文件的内容,然后对比版本信息,
如果有新版本则提示

1,增加自定义MQTT连接,支持TCP,SSL; 2,绑定设备可以自定义订阅的主题 3,支持单路开关控制 4,优化了通信监听程序

用户点击更新以后,APP 访问 http://www.mnif.cn/appapk/IotDevelopmentVersion/20190730/app-debug.apk
下载安装包,下载完,调起安装.

 

我的存放方式:(我使用的阿里云的OSS存储,http/https下载比较快,当然也可以存放在自己的云端)
1-开发共享版APP(搭建指南)-快速搭建到自己的服务器

文章图片

 

如果其它问题,将在后续文章中说明

https://www.cnblogs.com/yangfengwu/p/11273743.html

 

 

    推荐阅读