2016/02/03

你、我、他

記得在服役時,長官都交代不說「你我他」。那時也不知道原因,問班長他也說不出為什麼,只說從以前就這樣,不要問太多,遵守就對了!

經過這些年來的歷鍊,逐漸地端倪出這個規定真的是很受用的規定。
口語上少用「你我他」,多用「我們」,除非讚美他人時

因為你我他有高度針對性
當語氣拿捏不好時,很容易讓聽者有不同的詮釋
用「我們」,則讓人覺得你我是同一團隊,禍福與共
後面的那些話,聽起來就不那麼刺耳了

GCM SERVICE_NOT_AVAILABLE

今天又遇到怪事了
在修改一支Android APP,這支APP有用到GCM來做push notification,但是修改的點只有在UI的部份
修改完放到Samsung Galaxy Mega(4.2.2)一跑就當,以前沒發生過這問題
查了一下,是跑到GoogleCloudMessaging的register()就當,這段程式應該是很標準的寫法

if (gcm == null) {
    gcm = GoogleCloudMessaging.getInstance(parent);
}
String regId = gcm.register(Global.GCM_SENDER_ID);


丟出來的exception是SERVICE_NOT_AVAILABLE
java.io.IOException: SERVICE_NOT_AVAILABLE
at com.google.android.gms.gcm.GoogleCloudMessaging.register(Unknown Source)
at com.ruby.switch2go.manager.GCMHelper$GCMAsyncTask.doInBackground(GCMHelper.java:76)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask.run(FutureTask.java:234)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
at java.lang.Thread.run(Thread.java:856)

把程式放到ASUS Nexus 7(6.0.1)上跑,耶!一樣的程式,卻可以正常執行喔。所以應該不是程式的問題,那...難道是Android版本的問題?

再找來另一支6.0的手機,嗶~~~,還是SERVICE_NOT_AVAILABLE!
看來應該不是Android版本問題了
這幾台的Google Play Service都是8.4.89版的

再回到Samsung GALAXY Mega,用另一個類似但sender ID不同的程式來跑,卻又正常了

看了這篇Google Cloud Messaging is Extremely Unreliable for Push Notifications,手機端能檢查的都看過,好像也無解。

那~~~問題在那裡?真的是Google server-side的問題嗎?
是不是不同的phone token與sender ID會分派到不同的server去處理,而負責DUT的server剛好這時候有問題了?

果然,時間是最好的解藥。經過兩個多小時的等待,一切都恢復正常了。看來,是GCM server-side有問題了。