XADs 社群協助解決第三方 iOS Library Binding 到 Xamarin.iOS 問題實記...

Xamarin Asia Developers 社群 (簡稱 XADs 社群)

是我多年前開始接觸 Xamarin 這能讓會 C# 攻城獅們也能寫 App 的跨平台開發技術時,在 Facebook 上所設立線上社團,給大家有一個可以用來了解、討論與分享 Xamarin 技術的地方。

逐漸地透過這個 Facebook 社團演變成 XADs 社群(不要問我怎定義的,這是一種 Fu...XD),據 FB 的統計目前社團人數也已突破千人,雖跟那些動則數萬的各大 FB 技術社團相比,這種人數實在是微不足道沒什麼好說嘴的,但至少可算是在專門討論 Xamarin 技術的 FB 社團當中名列前茅的了吧~

而近日有一位加入社團的朋友,在社團裡發了個問題,我看到後雖然也有快速地回覆他,但後來因剛好是我的飄泊流浪忙碌期,只好透過一些其他的形式來協助,而後他也寫了一篇論述他的解決過程與感謝文來給我。


在徵得他的同意後,就公開在此 Blog 當中做為紀錄吧! 有興趣的朋友就繼續看下去囉~~~

以下為原文:
(某些部分有經過去識別化處理)


Xamarin iOS Binding Project

前言:

本身是寫 Native iOS 和 Android 的工程師,沒寫過 C# 也沒有聽過 Xamarin,在四月底的時候,接到一個麻煩的案子,客戶使用我的 iOS Native Library 在 Xamarin Binding 的過程不熟悉,便質疑我的 Library 有問題無法使用,而我的Library 在 Xcode 的環境上建置 iOS App 的使用是沒有問題的,為了要證明在 Xamarin 上使用也沒問題,就開始了我這一個半月多的痛苦旅程……

痛苦程度有多高呢,身為一個拳擊愛好者,痛苦程度就像拳王泰森的對手被泰森打到那樣!

(圖 1)

 

旅程開始:

一開始按照 Microsoft 的官方文件把我的 Objective-C Library 成功 build 好成 DLL,再給 Xamarin.iOS 中使用,希望可以像在 Xcode 一樣成功的呼叫 API 並且看到相對應的 callback API 回傳。


舉例:

呼叫 A function 就要看到 A callback function 的自動回傳。只要能完成這樣的 iOS demo App,我的任務就結束。

在經過我無數次的試驗之後,一直失敗,完全沒有頭緒之餘,決定要找人求救。

  1. 找到了 Xamarin 的 Facebook 社群發問。
  2. 上網使用了 Codementor.io,只要用關鍵字搜尋 Xamarin 出現的 Developer,每一個我都有去做詢問,不誇張!!!真的是每一個。
    (圖 2)
  3. 尋找了親友團,朋友的朋友,朋友妻子的朋友,各種關係,都給他用上。
  4. 美國的外包公司兼解 Bug。(實在太多,很多不記得名字了)
  5. 台灣的外包公司:世 X 資訊。
  6. 台灣有介紹 Xamarin 的各路人士與部落客,也都有詢問。

鋪了非常多條線,每次深夜只要有任何一條線有傳訊息跟我說狀況,我都會馬上起床,立馬回覆,只要有任何一絲希望,都不給他放棄!只要可以解決,我都很高興,本身是願意付錢,畢竟花了對方時間,但很可惜的,以上的鋪線,都沒有成功解決。

在最後,James 前輩幫我找到了一個方法,可以跟微軟開免費的 ticket 試試看,我當下其實沒有抱很大期望,根據我之前在美工作經驗,跟這些大公司開 ticket 就算是有付費的 ticket,他們很常會把問題給撇開,不會給你很正面的解答或是幫助,所以我就抱著嘗試的心態,心裏哼著以前微軟開機的音樂,並且心裡想像著這張圖:

帶給我的回憶,偉大的微軟拜託幫我一個忙吧~~~~~~

 

於是我就抱著"幫一個善良的宅宅解決問題好嗎?" 就這樣的心情,按照 James 前輩指引的方式,直接向總部開了線上 ticket。

微軟回覆的速度非常快,第一位 support engineer 就跟我約了台灣本地時間晚上九點和我通了國際電話,和我一起工作到台灣早上五點左右,但是基於他對 mac 的不熟悉,他最後決定把這個 case 移交給另外一位工程師,說另位工程師會很快回覆我,我抱著緊張期待的心情慢慢等待,就這樣三天過後,完全沒消息,根據經驗,不應該會這麼多天無任何的進度更新,所以我就打電話去美國確認一下這個 ticket 現在的狀況。

這通電話非常有用,打過去後,當天晚上(美東上班時間)我就收到新的 engineer 給我回覆了。

他在測試了數天後,也是無法解決,他很坦白的跟我說他也卡關,他必須去請教另外一位 Xamarin.iOS 的 Binding 專家,看看問題是出在哪裡,這時候我的心裡是已經沒有抱很大的希望,我甚至已經有成見的認為問題可能是 Xamarin 並沒有把 iOS Native SDK 給完整的轉過去,所以在 binding 的過程中就出現了錯誤,因此這陣子也其實一直在想如何用別的方式來避開

 

但心中苦悶的吶喊是: 就~~

 

但偉哉微軟,真的偉哉!突然在一個周末前這位工程師後來回我 “Anyway, this issue has been resolved.” ,並附上改好的 Sample Code 傳給我。

就是這樣 Amazing!!!!!解決,我整個人心情撒花~~~~~~~~

結束了一個半月的痛苦旅程!!!(圖 4)

 

後記:

要非常感謝,這段時間所有任何被我詢問過的人,很感謝你們的時間,我都非常感激,尤其是 James 前輩,還三不五時的關心我,問我問題解決了嗎,這些都讓我記在心裏,台灣人真的是很溫暖,謝謝他也提供了微軟這條管道,才讓我順利解決!
 

圖 1 取自: https://kknews.cc/zh-tw/sports/pe3mzp8.html
圖 2 取自: https://www.codementor.io/
圖 3 取自: http://www.viwin7.com/win8/201111/4124.html
圖 4 取自: http://www.bhmpics.com/view-mike_tyson-800x480.html


 

在收到這篇文的時候我其實有點驚訝也很開心,而這位發問的社群朋友其實一直抱持的很積極正面的態度在求問。

我有私下另外稍微找這位社群朋友稍微聊一下時得知,他說他甚至已經有在 Codementor.io 上面付錢請幾位 mentor 處理,但接下這個 Case 的幾位 mentor 最後都不了了之,草草結束。
(不用擔心,如果你回報問題沒得到解決 Codementor.io 會退錢回來。)

而其實這位社群朋友自己因為留美唸書工作一陣子後才回台工作,所以他有能力可以直接跟美國總部開 ticket 並直接打電話去溝通問題,這可能是我也無法就這麼直接簡單做到的解決作法。而據他自己的形容在這個問題開始到獲得解決的這段期間,讓他感覺到整個人生是 down 到了谷底了無生趣(...?)

無論如何,還是恭喜他終於解決了困擾他將近兩個月的問題!

可喜可賀~~~
可喜可賀~~~
可喜可賀~~~


 


I'm a Microsoft MVP - Developer Technologies (From 2015 ~).
 

MVP_Logo



I focus on the following topics: Xamarin Technology, Azure, Mobile DevOps, and Microsoft EM+S.

If you want to know more about them, welcome to my website:
https://jamestsai.tw 


本部落格文章之圖片相關後製處理皆透過 Techsmith 公司 所贊助其授權使用之 "Snagit" 與 "Snagit Editor" 軟體製作。