查看完整版本: 如何使用推播系統推播訊息到手機?
頁: 1 [2]

chevylin0802 發表於 2017-5-16 06:50 PM

本帖最後由 chevylin0802 於 2017-5-17 10:12 AM 編輯

a7813195 發表於 2017-5-16 05:43 PM
剛剛是用好範例 但是我用時候內部設定都好說
想請問大大給個方向
他說我們要更改public static final Stri ...
FCM或GCM都一定要透過他們的網站
而且你還得注意到它有1000個Clients的限制

這還不是最麻煩的事情
假定你做了五家醫院
門診科室一共有80間
都透過FCM/GCM來傳遞資料好了
那麼你就會看到手機不斷的在彈出不必要的訊息
因為病人所預約的醫師只會有一個
但彈出來的訊息卻是所有80間門診科室的號碼
所以會使得手機的APP完全沒有達到病人所要使用的目的跟意義
除非你在App裏面還做過濾器
過濾掉所有不必彈出來的訊息
除此之外
比如台大醫院的門診
有的病人排到500多號
可是科室醫師才看到200多號
這時候有必要每看完一個病人就要通知到病人手上告訴他說現在是200多號嗎?
我想這一定會讓人覺得很煩
至於多家醫院是不是共用同一個FCM/GCM所註冊的網址
反而不是什麼重點
因為API_KEY只跟著你所申請的FCM/GCM的網址跑的
註冊不同的FCM/GCM網址就會個別產生出不同的金鑰給你
只是我必需要告訴你的是
你這個專案題目真的很複雜
真的要做到可以用
起碼也要四五個人一起做
要有設計資料庫的人
要有設計App的人
要有設計伺服器跟通信協議的人
還要有硬體裝置端系統整合的人

另外
說實在的如果是真的要安裝到醫院去的話
那才真的是一件可怕的事情
FCM/GCM目前都是免費提供給人使用的
但難保哪一天Google或Mozilla協會做出政策上的改變
不管是從免費變成要收費或者是有其他的要求
那麼整套系統的運作可能就跟著廢了
所以基本上
企業在接這種專案的時候都會盡可能避免使用GCM/FCM這種平台
因為一個不小心就被Google他們掐住脖子

正確的做法是把門診科室看成是社群裏的某一個群組
所有病人在門診預約掛號之後就自動加入這個群組
群組有任何訊息就直接發佈到社群群組上
所有加入群組的人員都可以從社群群組上看到發佈出來的訊息
然後App再去進行號碼過濾
初步可以設定成進入100號以內才顯示訊息
或者也可以由用戶自己設定20號以內或50號以內才顯示訊息
這麼一來就變得比較容易做
每一個醫院每一個科室都有自己專屬的群組
然後只需要一台社群伺服器給所有醫院共用就可以


...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div>

a7813195 發表於 2017-5-17 03:20 PM

chevylin0802 發表於 2017-5-16 06:50 PM static/image/common/back.gif
FCM或GCM都一定要透過他們的網站
而且你還得注意到它有1000個Clients的限制



那個問題已解決 好像是版本關係

我知道FCM以及GCM有著1000個client限制
然後之前也有想過萬一沒有篩選就會有一堆不必要的訊息
反而跟此專題的結果相互牴觸
之前有想過推播應該是所有訊息都送出,但是手機依照不同需求去擷取顯示的訊息(類似濾波器)
也或許是有依照不同設定去篩選送出到各自手機
還是覺得全部送出比較有可能

我有跟已經在外工作的哥哥討論過大略問題
但是他好像認為大學專題不需要那麼認真去看待
我也想過這專題是否不是那麼容易
但是組員只有我一個
也沒時間改組了

昨日討論過後
有想過我用java socket建造一個server(選用java是想說 android也是java架構 那麼應該沒有什麼相互連線不成功的問題 也不需要考慮跨平台)
至於硬體可以使用TCP去傳 只是後面好像又考慮到推播的問題

目前是使用官方範例真的成功做出來推播 但是感覺就蠻雞肋的(官方好像可以使用NodeJS 可是還蠻找到相關數據)
後來失眠一直想 有一個想法
raspberry pi 是使用ARM架構
那麼我可以在raspberry pi上灌上作業系統
之後直接寫個java讓他直接架設SERVER
至於掛號號碼 就可以隨便使用Arduino去抓去存入資料庫
server則可直接抓取資料庫數據 更動實在做推播動作
則推播後顯示篩選 倒是目前還沒有想法

想取問大大給的作法
那所謂的分群 我該如何去做呢
目前想法是server獨立下 一個門診科室就可以當作是一個群組
至於篩選的數字 我則是想說掛號後可以給予一個QR Cord掃描後可以直接做篩選設定 ...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

chevylin0802 發表於 2017-5-17 05:12 PM

本帖最後由 chevylin0802 於 2017-5-17 08:24 PM 編輯

a7813195 發表於 2017-5-17 03:20 PM static/image/common/back.gif
那個問題已解決 好像是版本關係

我知道FCM以及GCM有著1000個client限制

Raspberry Pi的問題是你要找到MIPS版的java VM才行
如果不是MIPS版的Java VM
是沒有辦法工作的
至於ARM架構
市面上是有很多種
比如Banana Pi (它是使用全志的A20 SOC去做的板子)
我記得大概800塊台幣就可以買得到
如果你採用它Linano的映像檔的話
也可以直接在裏面用apt-get的方式去下載到GNU版本的JAVA VM

至於我講的社群群組的概念方式的話並不難做
即使你使用我建議的香蕉派的板子
也一樣可以安裝MySQL Server在裏面
概念並不難
你可以想像當App跳出操作介面的時候
申請註冊的方式採用身份證字號以及自己預設一組密碼
以後再次開起App以後就改成自動登入
登入完成之後
可以由User自己選醫院, 門診科室, 還有輸入掛號的號碼
接下來就根據輸入的醫院跟門診科室去加入社群群組
你可以自己用一組文數字去自動編輯出科室群組的編號
比如亞東醫院內科第二診室, 編號為YDH01002
於是App就傳送出這幾個資料給伺服器
比如說
A123456780 JOIN TO YDH01002 FOR NUMBER 283 ON Nov 27, 2017
或者你也可以把它改成JSON格式
{ "A123456780",  "YDH01002", "283", "2017/10/27" }
連進伺服器之後
伺服器就會把它儲存到資料庫裏面
伺服器就可以根據所有同一個科室已加入的成員名單傳送
伺服器要寫這段程式應該是很簡單才對

反而是你用Arduino想去讀伺服器的資料庫的這段
就有點怪怪的
Arduino並沒有網路給你用
你只能透過TTL COM Port去連接
如果你還去外加Wifi或Ethernet介面
反而成本變高了
另外還有一點是有的門診科室有時候是會跳號的
很可能突然間會從381號跳到192號
然後再跳回去382
像這種狀況你要怎麼去處理?
所以也很可能要用到的並不是一個按鍵開關就可以
而是可能需要一個數字鍵盤
那麼就有可能會是USB介面了
但USB數字鍵盤是無法連接到Arduino上的
而你要怎麼去處理?

而且科室內是不可能架成伺服器的
因為它不是外網
以系統架構來說
每一間門診科室
都需要一台能接上醫院內網的裝置
所以最好是用樹莓派相近的實驗板
最好是用LAN port
而以它作為社群群組發布訊息的終端裝置
然後只要架一台伺服器
不管有多少個科室多少間醫院
都共同連接到這台伺服器即可
作為發布訊息的群組裝置
仍然是這台伺服器的客戶端
只是它負責主動上傳號碼更新訊息
當伺服器收到某醫院某門診科室的更新訊息時
就搜尋出所有已加入這個群組的成員名單
然後就主動發送給成員手機上
手機App就可以根據這個更新資料
決定是否彈出訊息
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

a7813195 發表於 2017-5-17 09:02 PM

chevylin0802 發表於 2017-5-17 05:12 PM static/image/common/back.gif
Raspberry Pi的問題是你要找到MIPS版的java VM才行
如果不是MIPS版的Java VM
是沒有辦法工作的


至於板子的選擇
我會慎重考慮大大的推薦

如果是自己選擇醫院之類的
對於有些年長的人可能不太方便
是否能夠使用QR CORD去簡化設定的步驟(在掛號後會提供一組QR CORD 拍完顯示簡略掛號資訊 按下確定後自動加入群組)

的確跳號問題也是該解決的 但若暫不考慮跳號問題(精進可考慮直接抓取目前掛號號碼)

大大的最後一段其實不太了解
科室內是內網大概可以理解
那要如何推播真會頭痛
要完善的問題其實也真不少

我想問
我目前應該是要
1.先做個Server跟手機做連結(確保可以連接)
2.手機設定帳號密碼(我想問 手機通常都會有ID之類的吧? 那我可不可以拿那當作識別呢?)
3.掛號數據傳送至Server(目前簡略的討論單診室)
4.server根據群組發送訊息
能接收到訊息 推播也只是顯現出來罷了
不知是否有錯誤地方 請大大指教...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

chevylin0802 發表於 2017-5-17 10:54 PM

本帖最後由 chevylin0802 於 2017-5-18 05:51 PM 編輯

a7813195 發表於 2017-5-17 09:02 PM
至於板子的選擇
我會慎重考慮大大的推薦


基本上是這個樣子
你可以先照你的意思做

QRCode的問題比較大一些
因為很多人是用電話掛號的
人並不在醫院現場
更何況掛號處總不可能每一個診室都貼一張QRCode讓你掃
像台大醫院多達數十個門診科室根本不可能有空位弄出那麼多診室的QRCode
即使弄一整個牆面讓你去掃
你也會發現光找門診科室所對應的QRCode就必需要找個老半天
所以QRCode通常都只能針對一個統一入口
因此我認為QRCode的設計在這個地方是有很大的問題存在的
至於網路掛號的情況
雖然可以使用QRCode的方式
問題是網站通常都由醫院發包給特定廠商去處理
對方是否同意加設QRCode也是問題
不是你自己認為OK他們就會同意
所以真的要實施QRCode來加入群組的可能性我認為機率很低

以下是通訊協議的時序圖



我做了簡易的測試程式已經可以工作了
放在Github上
https://github.com/zhengyi0802/hibp_test
不過我自己的電腦只安裝Ubuntu Linux 16.04 LTS版本
所以如果你要改成Windows版
恐怕要自己去改
畢竟我只是把概念做出來給你看而已
你Server的部份仍然最好是用Java寫
而且一定只能寫成multithreaded server
網路上有現成的參考範例
我記得也有人git上傳到github裏

...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><br><br><br><br><br><div></div>

love88131496 發表於 2018-3-4 03:58 PM

本帖最後由 love88131496 於 2018-3-4 03:59 PM 編輯

小弟補充一個基本觀念:

要用哪種方式達到”手機收到訊息”,要看你的手機是要在怎樣的情況下”收到訊息”。
如果你是要用iPhone, 然後在沒有開啟網頁、沒有開啟APP的情況下,推播吧。或者乾脆走傳統的”收到簡訊”
如果你是要再APP開啟的狀態下收到訊息,那很多技術可用。
因為對於iPhone來說,APP開啟狀態(但可能在背景),或者沒開啟(不在背景),是完全不同的控制,所以所有寫在你自己手機端的使用技術,都要考慮這個。

再來,如果是Android,你可以寫服務。等於是App”關掉後”偷藏起來還在跑的,當然,你就有更多技術的選擇。

所以不管要用哪種方式”手機接到訊息”,要先確定你要收的訊息的”即時性”、”數量”、”應用情境”才能夠決定要使用哪種技術。...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

evo0508 發表於 2018-3-16 03:34 PM

謝謝大大的分享 謝謝大大的分享 謝謝大大的分享 謝謝大大的分享

a7813195 發表於 2018-3-31 03:58 AM

love88131496 發表於 2018-3-4 03:58 PM static/image/common/back.gif
小弟補充一個基本觀念:

要用哪種方式達到”手機收到訊息”,要看你的手機是要在怎樣的情況下”收到訊息” ...

目前有接觸MQTT,之前所構想的也就是目前的MQTT架構。
關於APP部分,IPhone似乎有在背景限制(沒接觸過說的可能是錯的),至於Android原先是使用App Inventer去簡易設置,但是會遇到一段時間沒反應的情況;至於Android Studio部分好像能夠寫Service讓他在背景執行,之前有稍微嘗試一下,可能是能力不夠而沒有寫出來。
感謝大大給予的思考方向,"即時性"及"準確性"是目前最首要完成的目標之一。...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

s947477 發表於 2018-4-7 07:10 PM

要看你的需求  簡單的方法可以試試 telegram 免費 開放 功能多 自由發揮
頁: 1 [2]