讀古今文學網 > 微信公眾平台開發:從零基礎到ThinkPHP5高性能框架實踐 > 19.7 案例實踐:會議簽到及室內定位 >

19.7 案例實踐:會議簽到及室內定位

基於搖一搖事件通知功能,開發會議簽到及室內定位功能非常容易。搖一搖事件通知可以作為簽到的依據,而事件中的Distance參數可以得到用戶離設備的距離,也就可以對用戶進行一個大致的定位。

首先需要配置一個自定義鏈接的簽到頁面及一個搖一搖設備,自定義鏈接中可以填寫會議詳情頁面。配置好後的效果如圖19-26所示。

圖19-26 設備綁定頁面

然後在開發者接口中接收搖一搖事件通知,並解析事件的XML數據包。相應代碼如下。


 1 // 接收事件消息
 2 private function receiveEvent($object)
 3 {
 4     $content = "";
 5     switch ($object->Event)
 6     {
 7         case "subscribe":
 8             $content = "歡迎關注方倍工作室";
 9             break;
10         case "ShakearoundUserShake":
11             $content = "搖一搖\nUuid:".$object->ChosenBeacon->Uuid.
12             "\nMajor:".$object->ChosenBeacon->Major.
13             "\nMinor:".$object->ChosenBeacon->Minor.
14             "\nDistance:".$object->ChosenBeacon->Distance.
15             "\nRssi:".$object->ChosenBeacon->Rssi.
16             "\nMeasurePower:".$object->ChosenBeacon->MeasurePower.
17             "\nChosenPageId:".$object->ChosenBeacon->ChosenPageId
18             ;
19             require_once('weixin.class.php');
20             $weixin = new class_weixin;
21             $openid = strval($object->FromUserName);
22             $data = array("title"=>"簽到成功", "description"=>"歡迎參加集團公司2017年
               年會。\r\n會議時間:12月31日 19:00-22:00\r\n會議地點:XX路123號XX大酒
               店5樓\r\n聯繫電話:0755-1234567\r\n簽到地點:主席台 ".round($object->
               ChosenBeacon->Distance ,1)." 米範圍內", "picurl"=>"http:// discuz.comli.
               com/weixin/weather/icon/cartoon.jpg", "url" =>"");
23             $result2 = $weixin->send_custom_message($openid, "news", $data);
24             break;
25         default:
26             $content = "receive a new event: ".$object->Event;
27             break;
28     }
29 
30     if(is_array($content)){
31         $result = $this->transmitNews($object, $content);
32     }else{
33         $result = $this->transmitText($object, $content);
34     }
35     return $result;
36 }
  

上述代碼解讀如下。

第10行:接收到搖一搖事件通知。

第11~18行:解析出搖一搖事件XML數據的參數。

第19~21行:引入微信類文件,創建新對象,解析出OpenID。

第22行:構造簽到成功的圖文消息,同時計算出用戶離設備的距離並放入圖文消息的描述字段中。

第23行:使用客服接口發送圖文消息。

最終用戶搖到的簽到頁面及收到的圖文消息如圖19-27所示。

圖19-27 會議簽到及室內定位

另外,本案例沒有將用戶記錄寫入數據庫。在實際中,這樣的需求一般是需要保存入庫,以便統計人數的。讀者可以自己完成該部分的代碼。