源代码的开发(以新浪SAE为例),位置与天气编写
原创1.地理位置
在微信公众服务号开发需求中经常有获取用户位置信息的功能,通过用户的位置信息,可以做一些地图导航,以及基于 LBS 的营销活动。地理位置获取流程如图 9-16 所示。
图 9-16 位置信息获取流程
开通了上报地理位置接口的公众号,用户在关注后进入公众号会话时,会弹框让用户确认是否允许公众号使用其地理位置。弹框只在关注后出现一次,用户以后可以在公众号详情页面进行操作。第三方在收到地理位置上报信息之后,只需要回复 success 表明收到即可,不允许回复粉丝消息。
用户同意上报地理位置后,每次进入公众号会话时,都会在进入时上报地理位置,上报地理位置以推送 XML 数据包到开发者填写的 URL 来实现。
推送 XML 数据包示例:
<xml>
< ToUserName ><![CDATA[toUser]]></ ToUserName >
< FromUserName ><![CDATA[fromUser]]></ FromUserName >
< CreateTime >123456789</ CreateTime >
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[LOCATION]]></Event>
<Latitude>23.137466</Latitude>
<Longitude>113.352425</Longitude>
<Precision>119.385040</Precision>
</xml>
Event 为事件类型,即 LOCATION;Latitude 为地理位置纬度; Longitude 为地理位置经度; Precision 为地理位置精度。
2.天气
推送天气情况需要先行获得用户的地理位置信息,才能为用户提供相应地区的天气预报。同时需要通过中国天气网提供的开放 API 进行相关地区天气查询。
用户发送过来查询天气的消息的格式是固定好的,即 “地区 + 天气”,所以,首先截取后两个字,判断是否为“天气”关键词。
使用 php 函数 mb_substr()截取,关于该函数的用法如图 9-17 所示。
图 9-17 函数用法
$str=mb_ substr($keyword,- 2,2,”UTF-8”);
从消息的结尾数第二个字符开始截取,截取两个字符,然后加以判断是否为“天气”关键词。下面进行地区提取,还是使用 mb_substr()函数。从消息的开头开始,截掉末尾的两个字符(天气),即得地区关键词。然后进行判断,继而调用函数查询天气数据。
if($str==' 天气 ' && !empty($str _key))
{
//调用函数查询天气数据
}
weather()函数查询返回信息比较全面,也是以 json 格式提供,格式如下。
{ "weatherinfo": {
//基本信息;
"city":"北京","city_ en":"suzhou",
"date_y":"2013 年 7 月 9 日 ","date":"","week":" 星期二 ","fchh":" 18 ","cityid":" 101190401",
//摄氏温度
"temp1":"30℃~37℃",
"temp2":"30℃~37℃",
"temp3":"29℃~35℃",
"temp4":"27℃~33℃",
"temp5":"27℃~31℃",
"temp6":"27℃~35℃",
//华氏温度;
"tempF1":"86℉~98.6℉",
"tempF2":"86℉~98.6℉",
"tempF3":"84.2℉~95℉",
"tempF4":"80.6℉~91.4℉",
"tempF5":"80.6℉~87.8℉",
"tempF6":"80.6℉~95℉",
//天气描述;
"weather1":"晴转多云",
"weather2":"晴转多云",
"weather3":"晴转多云",
"weather4":"多云",
"weather5":"雷阵雨转中雨",
"weather6":"雷阵雨转多云",
//天气描述图片序号
"img1":"0",
"img2":"1",
"img3":"0",
"img4":"1",
"img5":"0",
"img6":"1",
"img7":"1",
"img8":"99",
"img9":"4",
"img10":"8",
"img11":"4",
"img12":"1",
//图片名称;
"img_single":"1",
"img_title1":"晴",
"img_title2":"多云",
"img_title3":"晴",
"img_title4":"多云",
"img_title5":"晴",
"img_title6":"多云",
"img_title7":"多云",
"img_title8":"多云",
"img_title9":"雷阵雨",
"img_title10":"中雨",
"img_title11":"雷阵雨",
"img_title12":"多云",
"img_title_single":"多云",
//风速描述
"wind1":"西南风 3-4 级",
"wind2":"西南风 3-4 级",
"wind3":"东南风 3-4 级",
"wind4":"东南风 3-4 级转 4-5 级",
"wind5":"东南风 4-5 级转西南风 3-4 级",
"wind6":"西南风 3-4 级转 4-5 级",
//风速级别描述
"fx1":"西南风",
"fx2":"西南风",
"fl1":"3-4 级",
"fl2":"3-4 级",
"fl3":"3-4 级",
"fl4":"3-4 级转 4-5 级",
"fl5":"4-5 级转 3-4 级",
"fl6":"3-4 级转 4-5 级",
//今日穿衣指数;
"index":"炎热",
"index_d":"天气炎热,建议着短衫、短裙、短裤、薄型 T 恤衫等清凉夏季服装。",
//48 小时穿衣指数
"index48":"炎热",
"index48_d":"天气炎热,建议着短衫、短裙、短裤、薄型 T 恤衫等清凉夏季服装。",
//紫外线及 48 小时紫外线
"index_uv":"中等",
"index48_uv":"中等",
//洗车指数
"index_xc":"适宜",
//旅游指数
"index_tr":"较不宜",
//舒适指数
"index_co":"很不舒适",
"st1":"36",
"st2":"28",
"st3":"36",
"st4":"28",
"st5":"34",
"st6":"27",
//晨练指数
"index_cl":"较适宜",
//晾晒指数
"index_ls":"适宜",
//过敏指数
"index_ag":"不易发"}}
我们可以通过解析 JSON,获取相应城市的天气数据。
weather()函数如下。
private function weather($n) {
include("weather _ cityId.php");
$c_ name=$weather _cityId[$n];
if(!empty($c _name)){
$json=file _get_ contents("http: // m.weather.com.cn /data/".$c_ name.".html");
return json _ decode($json);
} else {
return null;
}
}
这里 include 了一个城市对应关系文件 weather_ cityId.php ,格式如下。
<?php
$weather_ cityId=array(" 北京"=>"101010100","上海"=>"101020100","苏州"=>"101190401");
?>
根据传入的城市名,得到城市代码,如果不为空,则调用中国天气网的 API 进行查询,返回 json 格式的数据,然后进行解析并返回数据,如果为空,则返回 null 值。
判断返回数据是否为空,若为空,则 $contentStr=“ 抱歉,没有查到\”“.$str_key."\"的天气信息!”;若返回数据不为空,会返回相关的信息,如下所示。
$contentStr=" 【".$data-> weatherinfo- >city."天气预报】\n".$data-> weatherinfo- >date_ y." ".$data- > weatherinfo- >fchh."时发布"."\n\n 实时天气\n".$data-> weatherinfo- >weather1 ." ".$data- > weatherinfo- >temp1 ." ".$data- > weatherinfo- >wind1."\n\n 温馨提示:".$data-> weatherinfo- >index_d."\n\n 明天\n".$data-> weatherinfo- >weather2 ." ".$data- > weatherinfo- >temp2 ." ".$data- > weatherinfo- >wind2."\n\n 后天\n".$data-> weatherinfo- >weather3 ." ".$data- > weatherinfo- >temp3 ." ".$data- > weatherinfo- >wind3;
版权保护: 本文由 李斯特 原创,转载请保留链接: https://www.wechatadd.com/artdet/8398
阅读推荐
更多...- 微信内容运营技巧,内容完善 2023-05-29
- 利用微信公众号开展线上线下活动,线下活动案例:线上线下双管齐下,合二为一 2023-05-31
- 快速引流、聚集粉丝的9大技巧,爆破营销之炸网 2023-05-30
- 公众号运营怎么做?怎么运营一个微信公众号? 2022-06-01
- 怎样写好软文文稿(美容行业软文案例) 2021-10-14
- 公众号未来发展的5大趋势 2023-05-30
- 公众号的设计、开通与使用技巧,“统计”区功能使用详解 2023-05-30
- 微信公众号在新闻传播中的应用 2023-05-31
- 公众号二维码制作工具怎样弄? 2023-05-27
- 微信公众号排版黑科技,建议收藏!!! 2023-05-27
- 都市报微信公众号的运营策略 2023-05-31
- 怎样写好微商软文(文案要有温度才能让读者牢记) 2021-10-22
- 「公众号运营」初始用户期吸粉方法,初始用户期:绑定擅长渠道 2023-05-29
- 「公众号运营」如何通过软文植入盈利,植入广告的盈利方法 2023-05-29
- 公众号营销的策略,小众营销 2023-05-29
- 微信支付,微信支付申请流程 2023-05-29
- 「公众号运营秘籍」资源少,但执行力到位也能行 2023-05-28
- 微信公众号引流的推广方案(公众好吸粉方法) 2021-05-22