Parse Android SDK1.8+でPush通知を無視する

Push通知をON/OFFにしたい。それをParseでするのに以前はPushService.setDefaultPushCallbacknullを渡すことで実現していましたが、ひさしぶりにParseを使ってみるとPushService.setDefaultPushCallbackがdeprecatedになっていたので代替の方法を探しました。

環境は次のとおり。

  • Parse Android SDK1.8+
  • gradle 2.2.1

ググって見つかったsubscribe/unsubscribeを使ってchannel指定する方法だと、everyoneに配信したときに通知がでてしまう。ここのオペレーションは変えたくない。 そこで、Push通知を受け取るReceiverを継承してごにょごにょする方法を試したところ上手く行きました。

public class CustomReceiver extends ParsePushBroadcastReceiver {
    private static final String TAG = "CustomReceiver";

    @Override
    public void onReceive(Context context, Intent intent) {
        Setting setting = ((AnyApplication)context.getApplicationContext()).getSetting();
        if( setting.isEnabledReceiveNotification() ) {
            super.onReceive(context, intent);
        } else {
            abortBroadcast();
        }
    }
}
        <receiver
            android:name="${applicationId}.CustomReceiver"
            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>

参考

disabling-parse-notifications

parse-android-disable-push-notifications

MacでWifi共有で透過的にmitmproxy

mitmproxyをWifi共有を使って透過的proxyとして使うための手順メモです。 実施環境は下記の通り。

手順

  1. mitmproxyのインストール
  2. 証明書を端末(iPhone/Android)にインストール
  3. Wifi共有の設定
  4. Packet forwardingの設定

1.mitmproxyのインストール

$ pip install mitmproxy

2.証明書を端末(iPhone/Android)にインストール

下記に配置されているのでメールなどを使って端末に送る。 添付ファイルをタップすれば自動的にインストールのためのアプリ選択画面が表示される。

$ ~/.mitmproxy/mitmproxy-ca-cert.pem

f:id:bagpack:20140204225038p:plain

3.Wifi共有の設定

OS X側で、システム環境設定 -> 共有 -> インターネット共有からWifi共有の設定をする。 端末側はここで設定したWifiポイントにつなぐようにする。

4.Packet forwardingの設定

最後にport80/443に流れてくるパケットをmitmproxyにリダイレクトするようにする。 まずは、Wifi共有に使われているインターフェース名を調べる。

$ ifconfig

(たいてい、bridge0というような名前)

Packet forwardingを有効にする

$ sudo sysctl -w net.inet.ip.forwarding=1

Packet forwardingの設定を下記のような感じにする。

$ sudo vi /private/etc/pf.conf
scrub-anchor "com.apple/*"
nat-anchor "com.apple/*"
rdr-anchor "com.apple/*"
rdr pass on bridge0 inet proto tcp from 192.168.2.0/24 to any port http -> 127.0.0.1 port 8080
rdr pass on bridge0 inet proto tcp from 192.168.2.0/24 to any port https -> 127.0.0.1 port 8080
dummynet-anchor "com.apple/*"
anchor "com.apple/*"
load anchor "com.apple" from "/etc/pf.anchors/com.apple"

pfを有効にする。

$ sudo pfctl -f /private/etc/pf.conf
$ sudo pfctl -e

mitmproxyを透過的プロキシモードで起動する。

$ mitmproxy -T --host

おしまい。

 参考

mitmproxy公式

GradleでAndroidアプリを起動するタスクを追加する

GradleのAndroid Pluginはapkをビルドしてインストールするところまではやってくれますが、アプリの起動まではやってくれません。 ということで、アプリの起動をやってくれるタスクを追加しましょう。

実行環境は下記のとおりです。

タスクの追加

下記の記述をbuild.gradleに追加します。

使い方

次のようにして実行します。(実際にはbuildTypeの種類だけタスクが追加されます)

$ gradle runDebug 
$ gradle runRelease

参考

Custom Tasks hooking on to all flavors of a given buildtype

Thx

ichigotake様