【專訪】Buyandship:一站式國際代運服務 Flutter App

用力買、大力買、不用找代購了!跨海網購的最佳小夥伴

Flutter Taipei
Flutter Taipei
10 min readAug 3, 2020

--

編輯:Rebecca / Chloe Hsu

哈囉!這次 Flutter Taipei App 搜集企劃和大家分享國際集運服務公司如何使用 Flutter 在他們的商業應用上。聽到國際化的服務產品,立馬想到一個大家常問的問題:Localization 怎麼處理?

哦!老師我知道!用 Intl 呀!Flutter 官網不都這麼介紹嗎?

是拉~不過… 這似乎不符合 Buyandship 的使用情境

Buyandship 需要做到的不只有在語言上的不同,根據不同語言和地區也需要提供不同的內容

老樣子,在認識技術之前,先來認識 Buyandship 的服務!Go!

Buyandship 快速、安心血拼無國界

台灣買東西很方便,小小的島嶼應有盡有!但是,有時候還是買不到其他國家的產品,找代購或是朋友帶再加上運費,還要被扒個 2、3 層… 過程繁瑣又心累。或者海外網購店不一定有提供國際寄送服務,不然就是國際運費高得嚇人…消費者就像洋蔥一樣被一層一層地扒開,不停地流淚

於是乎,老話一句,有需求就有市場,有痛點就有市場!Buyandship 就此誕生。

Buyandship 目的就是為了愛東買西買、買不停的朋友們提供簡單、快捷的一站式代運服務。

8 國代運

想從美國、英國、日本、韓國、台灣、澳洲、義大利、泰國買東西沒問題!Buyandship 皆有提供以上國家的代運服務。除此之外,Buyandship 在美國波特蘭免稅州和日本千葉縣設有自營倉庫呢!

而且呀!每週均設有定時航班,貨物將透過最快捷、最安全、最有效率的方式運送到港,然後代運到台灣。

無隱藏收費

從國外買東西要考量到的費用不僅僅只有運費。同時還需要考量到關稅的問題。每次想到複雜的關稅計算,就耗掉了不少時間各種心累,還算不準確。沒想到 Buyandship 連這個也包了!Buyandship 以實重計算,收費透明,不設隱藏式收費或手續費。

免費合併多國貨件 運費輕鬆省

這個是非常貼心的功能,Buyandship 還幫你免費合併多國貨物,運費的計算方式也是以合併總重量來計算。

Buyandship App 功能

輕輕鬆鬆追蹤貨物

使用者可以透過 App 追蹤自己的貨物在哪一個階段。這功能實在非常的重要,也是在運送服務中不可或缺呀!

8 國倉庫

透過 App 即能夠及時查看 Buyandship 在各國的倉庫位置

Buyandship 技術背後

1. 可以跟我們分享聊聊這個 APP 的理念嗎?

Buyandship 是一項集運服務,原先提供網頁版讓使用者完成集運所需步驟:

  • 取得倉庫地址
  • 申報貨物
  • 追蹤貨物

使用 App 可以更快速且方便的使用我們的服務。

2. 為什麼決定採用 Flutter 技術來開發呢?大約花多久的時間評估要使用的技術?

當初要開始做這支 App 時,Flutter 開始有點名氣,且我們的 App 也不會使用到硬體或是原生技術,感覺很適合使用 Flutter 開發,於是就試試看 Flutter 能否滿足我們的需求。評估了一個月多,確認 Localization、Embed WebView 和一些 Third-Party 可以整合後,便著手開發。

3. 有多少人一起投入開發?大家是什麼樣的背景?

參與 Buyandship App 開發的團隊包含:

  • iOS Developer x 1
  • Frontend x 1
  • Backend x 1
  • UI/UX x 1
  • PM & QA x 1

App 初期是由我一個人開發 MVP,我過去開發 iOS 經驗大約四年,也曾碰過React Native。

到了中期,有一位 Front-End 同事加入協助開發 App,且他過去沒有 App 開發經驗,但他非常快速就上手了。這也讓我深深覺得 Dart 的語法與 Flutter Widget 非常平易近人。

4. 團隊花了多少時間開發?

從技術研究、設計、開發、測試到最後上架,MVP 大約花了 6 個月。後續持續開發新功能與各個國家的版本,到現在已開發了快一年。

5. Buyandship 提供的服務需要處理到各個地區,可以跟我們分享處理 Localization 的心得嗎?

早期規劃 Localization 時,發現 Buyandship 其實不適用一般的 Localization 。因為我們在不同的區域不只是語言不同,而是會提供不同的內容。這也讓我放棄使用 intl,而決定讓使用者可以在 App 內切換地區。為此,我們做了:

  • 取得使用者所在地區決定 App 的預設地區

在這邊 Android 就遇到一個問題,我原先以為 Android 跟 iOS 一樣在系統設定裡會有個裝置地區,沒想到 Android Device 本身不會有裝置地區的設定,最後只好特別在 Android 上透過抓 IP Address 的方式決定 Android 的預設地區(Call API)。

  • 使用 JSON 格式的 Translation File 給其他人修改不同語言的文字

使用內建的 json package 來 decode json file 沒有遇上什麼問題。不過,這部分後來加上了一個有趣的功能:帶入參數。因為 App 內有很多敘述都包含API 來的變數,且不同語言的語句對於這些變數會有不同的位置。方法是使用幾乎不會在文本上用到的大括弧作為參數取代的依據,例如:

zh_TW:貨件超過 {expired_days} 天會自動在系統中刪除。

en:Shipment(s) which older than {expired_days} days would be purged from the system automatically.

6. 團隊的 Flutter App 使用的後端是第三方服務還是自架後端?並還有用到哪些第三方服務?

自架後端。第三方使用的有:

  • Firebase Analytics
  • Firebase Crashlytics
  • Firebase Messaging
  • Intercom

7. 團隊之前有使用非 Flutter 的技術開發 App 的經驗嗎?使用 Flutter 後,在團隊協作或產出方面,有沒有特別想分享的經驗呢?

一開始就是使用 Flutter,沒有比較,沒有傷害😂。

8. 在決定使用 Flutter 技術時有什麼擔憂嗎?

主要是擔憂往後如果要使用其他沒有 Support Flutter 的 Third-Party 會有瓶頸,不過好在後來串接 Payment SDK 時已經有人寫 Flutter Package了。

雖然也有遇到要改原生 Code 的情形,不過在團隊沒有 Android 開發經驗的情況下,花點時間還是順利產出了。

9. 如何評估適合的設計模式,並取得共識並決定採用呢?

由於 Flutter 的 Widget 是基於 Material Design(雖然還有 Cupertino,但我下面會提到不考慮使用 Cupertino 的原因)且 Material Design 在 iOS 上也不會很突兀,與設計師討論後,他很快地就決定直接使用 Material Design 在 iOS 跟 Android 上。

10. 用 Flutter 開發的時候,什麼樣的事情讓你們覺得最有挑戰性/最困難?

目前去年接觸到現在,我覺得最難且最還有進步空間的還是 Architecture Design。

開始做這支 App 時發現了 BLoC,練習了一下 Example 覺得小有成就,但等到實際應用到專案上,才發現業務需求要如何拆,不同的 BLoC 要如何溝通,其實是很不容易的,剛開始寫架構時常常寫完後才發現不太合理又打掉重練,這個需要經驗累積的技術是我認為比較困難的部分。

11. 你們的 Flutter App之中 有什麼特別想介紹的技術嗎?(例如:藍芽、IOT、動畫、直播、AdobeXD、Rive等等…)

其實都是大多都是不太精深但比較雜,這邊我稍微列出來給大家參考:

12. 你們有使用任何 CI/CD 工具嗎?

目前使用 Codemagic 做 CI/CD。Codemagic 是為 Flutter 而生的 CI/CD 工具,一般使用情況不需要寫 Script,非常好上手。

13. 如果可以重新選擇開發技術,你們還是會選擇用Flutter來開發嗎?

還是會!Flutter 簡化了許多原生開發需要的技術與知識,讓我們可以更著重在功能上的開發,所以無論是時間還是人力,Flutter 大幅降低我們的開發成本。

14. 你們會推薦什麼樣的 App 使用 Flutter ?如果團隊決定使用Flutter 來開發,你們有什麼樣的建議想給大家嗎?

我認為有兩個前提:

1. App 沒有重度使用一些硬體或原生技術,例如:影音編碼。如果要特別為此寫 Bridge,可能會花更多時間或者讓程式碼更難維護(如果不同平台的原生 SDK 差異很大)

當然一些基本的 Flutter 已經可以支援了,例如:相機、藍芽等等。若是沒有到重度使用的情況,還是可以使用 Flutter 開發的。

2. 願意使用 Material Design 在 iOS 與 Android 上。雖然 Flutter 有提供Cupertino Style 的 Widget,但我認為如果還要為雙平台做完全不同 Style 的Design,就失去 Flutter 快速開發的優勢了。

除此之外,也有個實質上的問題,當 Apple 調整他們的設計時,但 Flutter 尚未更新或者專案沒有更新 Flutter 版本,使用者會在新的 iOS 版本上看到舊的 Cupertino Style,我相信這也會讓設計師無法接受。

15. 團隊現在或未來打算招募 Flutter工程師嗎?

目前暫時沒有打算招募新的夥伴,但歡迎大家使用 Buyandship 集運服務😂

團隊 & 產品資訊

Buyandship App Store 下載
Buyandship Google Play 下載

歡迎閱讀「台灣 Flutter App 蒐集企劃」以了解完整計畫資訊哦!

--

--