Dogpa Chen

上一篇透過Python練習開啟指定網址輸入搜尋資訊,減少了許多重複的資料搜尋工作並建立自己side project的資料庫。

而這篇則要跟大家分享已經上架的作品,這是我自己上架的第四個做品 (開發者保護費繳滿就好好利用XD)。

開發緣由:

記得是從2017年開始露營,那時候台灣還沒有這麼瘋露營這件事,畢竟裝備營地等等的資訊以及準備都會讓一般人卻步,然而疫情開始封鎖出國的方向,台灣人無處可去只好重新聚焦在本土的活動當中,這兩年可以看到露營這件事情成為了顯學,更有許多免裝備的營地誕生,而露營這件事情就分層更多的層次與定義,我自己則偏好自己搭好帳棚然後悠哉地度過一天後隔天再收好帳篷回家,露營總是要搭建些什麼才有露營的感覺,截至目前已經累積了14露的經驗。

而約六月初朋友相約露營,才得知在尋找露營地的時候耗費大量的時間,原因在於台灣現有的露營地的訂位在兩大露營地平台上,更有露營地是自架營地網站接受訂位,亦有營地是靠著電話才能訂位,加上我們又有營位、海拔等考量,所以在聚焦「集合」這個過程中耗費我朋友不少時間。這引發了我一個想法,如果有一個App可以快速依照自己的條件篩選出自己想要的營地是否能夠幫助我們省下更多在尋找營地的時間?這也就催生了尋露APP的誕生。這個APP主要聚焦在一般的營位上,也就是需要自搭帳篷的營地,目前的豪華露營及網美露營應該會是收錄比較少的資訊在裡面。

開發內容與使用套件

主要使用SwiftUI當作開發的框架,搭配MVVM架構。

資料庫使用Google Driver的Sheets 建立營地資訊的資料庫後透過App Script 將資料庫資料轉成JSON

Sliders 製作有範圍的Sliders

Admob 建立Banner 廣告

--

--

是的沒有看錯這是一篇關於Python的練習,主要的原因是因為side project已經完成的差不多準備送審,但是side project的資料需要自己手動建立,所以就需要仰賴Python的協助。簡單來說也算是一種爬蟲的練習,但我不用將資料存取下來,因為特殊的關係只要自己能看到就好,所以這篇將練習透過Python與selenium開啟台灣三大電信商的網頁並輸入指定的地點進行搜尋並確認通訊覆蓋率。

安裝Chrome與ChromeDriver與selenium

網路上有提到其實也可以透過Safari來完成,但基於方便性所以我先使用Chrome來爬,雖然我平常還是使用Safari比較多。

若是Chrome安裝好,先檢查Chrome的版本,點擊右上角的三個點點>設定>關於Chrome即可看到目前安裝的Chrome版本。

--

--

上一篇完成了透過中央氣象局的API資料實作出單一鄉鎮市區的天氣預報資料與天氣預報圖示的顯示。使side project又多一項小功能。

而這篇則要來看看一個閃退的問題,原本自己的side project最初的版本已經送審完成但是因為需要後續微調處理所以再次送審,原本認為應該沒有太大的問題但蘋果官方送回覆了一個閃退的情況發生。

在15.7的iPad點擊我的分享的按鈕會引發閃退,但剛好自己手上的iPad沒有升到15.7,但先在一樣的地方嘗試點擊,果然會引發閃退,因為這個功能在iPhone測試沒有問題,但iPad時忘記測試所以就被退了。所以要來研究iPhone可以執行的功能為何iPad會引發閃退,讓我們看看程式碼。

嘗試在iPhone 與 iPad運行看看

--

--

上一篇完成了可以拿到指定的ID開啟相對的中央氣象局鄉鎮市區的JSON,讓自己的side Project可以多一個快速功能。

而這篇則要來優化一個自己寫ScrollView+Foreach的頁面遇到的一個小狀況。

有在使用SwiftUI的人多少有透過Foreach+NavigationView製作列表,簡單的狀況應該回如同下面的程式碼與Gif檔案演示一樣。

接著嘗試將上面的程式碼內的List換成ScrollView

可以直接把上面的some view替換成以下內容

--

--

上一篇解決了使用Google Admob套件所產生的Link問題,讓廣告可以順利顯示。

這篇則是side project的延伸功能,原本不在計畫內,但思考如果多這個功能使用者應該會比較快掌握到所需要的資訊。

主要的目標是要讓使用者在點選指定地點後,能有一個按鈕可以快速連結到中央氣象局的網頁查看當地的天氣。

這篇則會分成兩個部分

取得中央氣象局的鄉鎮市區ID

透過上述取得的ID建立自己的JSON

取得中央氣象局的鄉鎮市區ID

首先可以先看下列連結,點選進入會直接進到台北市中正區的天氣資料內。

https://www.cwb.gov.tw/V8/C/W/Town/Town.html?TID=6300500

接著可以看看中央氣象局台北市北投區天氣資訊的網址

https://www.cwb.gov.tw/V8/C/W/Town/Town.html?TID=6301200

可以看到網址前面都一樣,差別只在於TID=後面的數字不一樣,所以我查看其他縣市,觀察到每一個鄉鎮市區都會有對應的ID,如果要透過所在的地點確認當地天氣,TID=後面的值應該就會對應各自的鄉鎮市區。

其實可以一個一個查看鄉鎮市區ID就好,但台灣有368個鄉鎮市區,這樣一個個查估計查到9月底,所以想到的方法是透過爬蟲把368個ID取下來,但嘗試過爬蟲發現輸入不同的網址回傳都是台北市中正區,可能是遇到了動態網站,所以透過Chrome的開發者選項(fn+F12)進入開發者選項後輸入command+R來確認網站的其他資料並搜尋關鍵字看到了一個充滿曙光的東西。

從上圖搜尋完查看到右側的程式碼,發現到一個類似JSON結構的Info_Town資料格式,嘗試把這個資料丟到下列網站解析

解析過程發現有些許的問題,但研究了JSON格式後發現將原本的 [’]改成[”]就可以了,於此我們拿到了中央氣象局幫我們建立好鄉鎮市區ID的JSON檔案(可至文末Github連結下載),大大省下一個一個輸入ID更改的時間。

建立自己的JSON

基本上如果是單純的對應鄉鎮市區ID,上述的JSON應該已經可以讓許多人練習,但因我自己已經有建立一個JSON檔案,加上中央氣象局單一縣市的鄉鎮市區排序並不像一般人習慣依照郵遞區號排序的狀態,所以我嘗試將上面的ID整合到自己的JSON內。而這引發了下一個問題,我要如何快速的將每一個ID放到自己的JSON,如果還是一個一個處理,基本上耗時又有可能輸入錯誤,所以我嘗試透過自己原本有的台灣鄉鎮市區的JSON檔案與上面建立好的中央氣象局JSON這兩個JSON檔,透過程式碼的幫忙產出單一縣市類似JSON的字串結構再貼到JSON中修改成最後使用的JSON檔案。又加上兩邊的JSON檔案的鄉鎮市區排序因為不一致,所以再處理上會再多一個判斷。

簡單而言就是透過自己目前的JSON進去中央氣象局有鄉鎮市區ID的JSON中找到對應的鄉鎮市區ID寫成String,最後再貼到JSON檔案內即可。文字無法理解的話嘗試看程式碼來理解吧。

首先先加入兩個JSON檔案到檔案中

taiwanDistrictsZip AndName.json //台灣行政區的JSON
ConvertCWBInfoFromChrome.json. //中央氣象局帶有鄉鎮市區ID的JSON

model:

ViewModel:

接著在View加入ViewModel跟在onappear執行Function即可開始列印。

--

--

上一篇簡單的練習改變SwiftUI Map的顯示比例,達到所有顯示資料都能夠顯示在Map的比例尺中

這一篇則要來分享一個在side project遇到的狀況,side project預計也要放入Google Admob 的Banner廣告,所以就用了之前的方法來使用Admob,也有注意到要先將自己的ID放入在Info-plist內以防止閃退,但在build的過程中還是遭遇到閃退狀況,所以要來看看要如何排解。

遇到的閃退如下

Thread 2: "The Google Mobile Ads SDK was initialized without AppMeasurement. Google AdMob publishers, follow instructions here: https://googlemobileadssdk.page.link/admob-ios-update-plist to include the AppMeasurement framework and set the -ObjC linker flag. Google Ad Manager publishers, follow instructions here: https://googlemobileadssdk.page.link/ad-manager-ios-update-plist"

其實在這個閃退錯誤內Google已經告訴我們可以到閃退提供的連結來找到解法,而解法就是之前沒有需要設定的Other Linker Flags,先到專案>Targets>Build Settings>點選All後搜尋Other Linker Flags,就會找到它。

--

--

上一篇透過SPM加入範圍的Slider,玩成了區間飯為設定的公能與過率搜尋。

這篇要研究side project的一個小功能,原本沒有要納入,但突然發現使用者可能會需要這樣的顯示狀況。

主要研究的是MapKit內的Map

在iOS14內新加入的功能,在之前的練習也有曾經使用過。

之前的練習在於說取得使用者的位置透過使用者的位置當作Map的中心點並設定跨度(Span)來當作顯示的比例尺。在使用Google或是一些地圖相關的App都能看到這樣的設定。

基本上地圖的顯示一定要有中心點與跨度,而這個需要透過MKCoordinateRegion來完成。

Span就是上面有提到的跨度,而跨度到底該設定多少就成為我想研究的一個方向。首先我先嘗試取得台灣本島東西南北四極點的位置,在透過東西向差距的一半與南北向差距的一半取得中心點來顯示。

--

--