2015年11月20日 星期五

ANR with Google Analytics when purchasing the in-app-purchase items

     昨天suffer了一個離奇的deadlock issue,情境是如果User已經買過某個IAP Item後,重複購買時有些Device就會卡住然後ANR,結果dump出來Thread的狀態後發現,結果Main Thread卡在在GA回報Crash的Task。

stackoverflow有人建議直接把它回報crash的功能關掉(專心做event的事情就好了啊GA)

http://stackoverflow.com/questions/30654669/anr-with-google-analytics

2015年11月18日 星期三

Parse Push Notification 1.11.0 Integration issue

今天無聊拿side project來整合Parse的Push Notification,結果弄了一個多小時才try出來;故事是這樣子的,使用的Parse版本是1.11.0,照著官方文件(或者Github Sample Project)設定完AndroidManifest.xml、在Application.onCreate()塞Code後,你會得到一個完全收不到Notification的程式碼;此時你必須注意兩件事情。

第一,AndroidManifest.xml的ParseBroadcastReceiver的intent-filter要ㄕ對:

<receiver android:name="com.parse.ParseBroadcastReceiver">
  <intent-filter>
    <action android:name="android.intent.action.BOOT_COMPLETED" />
    <action android:name="android.intent.action.USER_PRESENT" />
  </intent-filter>
</receiver>

但你必須要這樣
<receiver android:name="com.parse.ParsePushBroadcastReceiver"
    android:exported="false">
  <intent-filter>
      <action android:name="com.parse.push.intent.RECEIVE" />
      <action android:name="com.parse.push.intent.DELETE" />
      <action android:name="com.parse.push.intent.OPEN" />
    </intent-filter>
</receiver>

第二,記得把ParsePushBoradcastReceiver寫進去AndroidManifest.xml

官方文件沒有教你寫進去,是我自己開Debug Log跟追SDK Code之後才發現,發送Notification的人是ParsePushBoradcastReceiver,但它沒有權限接受Broadcast。



搞不好過一陣子官方就會把文件全部更新到正確,而這篇文章則是紀念這一個小時的自己到底發生了什麼事情;不過好險Parse把SDK也Open Source,某種程度也是鼓勵開發者發現Bug時先別急著回報,可以幫忙它們修一點Bug。