GoogleAnalytics

SyntaxHighlighter

2014年2月4日火曜日

[Glaeja Ext.] noobs



『noobs』は、不在着信・未読メッセージ(SMS/MMS)および任意アプリの通知の情報を『Glaeja』で取り扱えるようにするエクステンションです。

ちなみに、『notification observer』の略で『noobs』です。

インストールと使い方の簡単な説明は以下から。



インストール


『noobs』の最新版は、OSバージョンによって異なり
  • 4.0~4.3:ver. 1.1.1 (2014-02-19)
  • 4.4以上:ver. 1.2.1 (2016-12-09)
となっています。
下のアイコンをクリックするとPlayストアにジャンプしますので、そこからインストールしてください。

また、『noobs』をバージョンアップや再インストールした場合には、一度ドロワーから『Glaeja』を起動して[データ管理]→[エクステンションの管理]を開いてください。この[エクステンションの管理]を開くことでエクステンションの再登録が自動的におこなわれます。


『noobs』は無料ですが、「通知を監視できるアプリは1つのみ」という機能制限がかかっています。

有料の制限解除コード『noobs Unlocker』をインストールすることで、この機能制限を解除して最大23個のアプリの通知を監視できるようになります。


使用前の準備


『noobs』を使用する前には、通知情報にアクセスするのに必要な権限の許可を、ユーザー自身によっておこなっていただく必要があります。

その許可の方法は、OSバージョンや端末機種によって異なります。以下では、各OSバージョンごとに標準的な許可方法を説明します。

OSバージョンが 4.4 以上


『noobs』をインストールした後、ドロワーからの初回起動時には、以下の様なダイアログが表示されます。


OSバージョン4.4以上においては、『noobs』でアプリの通知を監視するために「通知へのアクセス」での設定をおこなう必要があります。

ダイアログの[「通知へのアクセス」を開く]ボタンをクリックして、「通知へのアクセス」設定を開き、『noobs』を[ON]に設定してください。


[バック]ボタンで『noobs』の設定画面に戻ることができます。

※  「通知へのアクセス」設定の場所は、OSバージョン(および端末機種)によって異なり、
  • 4.4:[設定]→[セキュリティ]→ [通知へのアクセス]
  • 5.0:[設定]→[音声と通知]→[通知へのアクセス]
となっているのが一般的です。

OSバージョンが 4.0 ~ 4.3


『noobs』をインストールした後、ドロワーからの初回起動時には、以下の様なダイアログが表示されます。


OSバージョン4.0~4.3では、『noobs』ではアプリの通知を監視するために「ユーザー補助」での設定をおこなう必要があります。

ダイアログの[「ユーザー補助」を開く]ボタンをクリックして、「ユーザー補助」設定を開き、『noobs』を[ON]に設定してください。


[バック]ボタンで『noobs』の設定画面に戻ることができます。


『Glaeja』でのエクステンション登録


エクステンションは『Glaeja』で登録しないと機能しません。

ドロワーから『Glaeja』を起動し、[データ管理]→[エクステンションの管理]に進み、[新規登録]ボタンをクリックして『noobs』を登録してください。


「GEXコード」の初期値は“GEX_NOOBS”ですが、お好みで変更しても構いません。

アイテム欄右端の設定アイコンをクリックすると、『noobs』の設定画面を開くことができます。


『noobs』の設定

『noobs』の設定画面


『noobs』の設定画面は以下のようになっています。

動作や通知を監視する対象がアイテムとしてカード状に表示されています。

上2つの「不在着信」と「未読メッセージ」はビルトインの監視対象で、残りがユーザーが選択したアプリです。


各カードに記載されている情報の意味は、

  1. アプリのアイコン
  2. アプリ名
  3. 識別コード
となっています。

[識別コード]は、『Glaeja』のエスケープキャラクタ・シーケンスから『noobs』を呼び出した際に、どのアプリの情報を取得するかを識別するための文字で、1文字の英大文字が使用できます。


各カードを長押しすると、以下の様なダイアログが表示され、各アプリに対する操作を選択できます。


  • 登録解除:このアプリを監視対象から外します
  • カウントをリセット:このアプリの通知カウント数を強制的にゼロにします

ただし、ビルトインである「不在着信」と「未読メッセージ」では、このダイアログは表示されません。


監視アプリの追加


カードリストの一番下にある[アプリを登録…]ボタンをクリックすると、監視対象に新しく加えるアプリを選択するダイアログが表示されます。


ただし、無料の機能制限版では1つしかアプリを登録できず、2つ目以降を登録しようと[アプリを登録…]ボタンをクリックすると、以下のような「有料の制限解除コード」を紹介するダイアログが表示されます。


もしご興味を持たれたならば、[Playストアを開く]ボタンをクリックして、Playストアから制限解除コードをご購入ください。

制限解除コードをインストールした後、一度『noobs』設定画面を閉じてドロワーから起動しなおせば、制限が解除されて最大23個のアプリを登録することが可能となっています。


監視アプリの設定


設定画面で各アプリのカードをクリックすると、以下の様なアプリごとの設定ダイアログが表示されます。


  • 識別コード
このアプリに割り当てられている識別コードを選ぶことができます。ピッカードラムをフリックして、好きな文字を選んでください。
ただし、他のアプリで既に選ばれている文字は選ぶことができません(ダイアログの[OK]ボタンがクリックできません)。

  • 通知をカウントする条件
    • 全通知をカウント
    • ティッカーが一致する場合のみ
    • ティッカーに含まれる場合のみ
このアプリの通知が発生した場合に、『noobs』が通知を検知して情報を収集するかどうかの条件を設定します。

全通知をカウント」なら、どのような通知でも検知して、その情報を収集します。

ティッカーが一致する場合のみ」と「ティッカーに含まれる場合のみ」を選んだ場合には、このスピナーの下にテキスト入力欄が表示されます。



ティッカーが一致する場合のみ」なら、この入力欄の文字列とティッカーが一致した場合にのみ、通知を検知して情報を収集します。
ティッカーに含まれる場合のみ」なら、ティッカーに入力欄の文字列が含まれていた場合にのみ、通知を検知して情報を収集します。

  • カウントのタイプ
    • 通知ごとに1増やす
    • 含まれる件数を用いる
『noobs』では、「アプリの通知が何件あったか」という情報をカウント数として記憶します。

通知ごとに1増やす」では、通知があるごとにこのカウント数を1つずつ増やして記憶します。

含まれる件数を用いる」では、通知に含まれる「件数情報」を取り出して、その件数でカウント数を上書きします。

例えば、Twitterクライアントの通知を監視していて、現在の未読ツイート数が「3」、『noobs』でのカウント数も「3」であるとします。ここで『2件の新着ツイート』のような通知が発生したとします。この通知内に件数情報が含まれていた場合、それは全未読ツイート数なので「5」となっているはずです。

こうした場合に、 「通知ごとに1増やす」では『noobs』のカウント数が「4(=3+1)」となってしまいます。
そこで「含まれる件数を用いる」でカウント数を「5」とすることで、より正しい未読数を取得することができるようになります。

ただし、すべてのアプリが通知内の件数情報を利用しているわけではありませんので、実際に確かめて使用するようにしたほうが良いでしょう。

  • カウントリセット
    • ☑ 通知数のみリセット
ここでは、このアプリを起動したときに『noobs』が記憶しているどの情報がリセットされるかを設定します。

[通知数のみリセット]をチェックすると、『noobs』のカウント数のみがゼロにリセットされますが、その他の「最後にきた通知の日時/ティッカー/タイトル/テキスト」という情報はリセットされずにそのまま残ります。

それに対して[通知数のみリセット]がチェックされていないと、カウント数はゼロに、「最後にきた通知の日時/ティッカー/タイトル/テキスト」は空文字列にリセットされます。


カウントがリセットされる条件


登録したアプリからの通知のカウントがリセットされる条件は、
  1. そのアプリを起動する
  2. ステータスバーの通知欄にある[すべて削除]ボタンをクリック
  3. ステータスバーの通知を左右フリックして削除 ※OS 4.4以上のみ対応
 となっています。

1. ですが、アプリの起動方法は「ステータスバーの通知欄をクリック」でも「ドロワーから直接に起動」でもどちらでも構いません。また、既に起動しているアプリに切り替えてもカウントがリセットされます。

2. ですが、OSバージョン4.0~4.3では(機種独自カスタマイズにより)[すべて削除]ボタンクリックではリセットされないことがあるかもしれません。

3. ですが、OSバージョン4.4以上で ver. 1.2.0 以上を使用されている場合のみ、ステータスバーの通知を左右フリックで削除した場合にもリセットされます。


『Glaeja』上での使い方

『Glaeja』からの『noobs』の呼び出し


『noobs』はエクステンションですので、『Glaeja』からは「該当部分文字列:GEX_NOOBS@.../.../\Z@」のようなエスケープキャラクタ・シーケンスで呼び出します。

『noobs』は受け取った該当部分文字列から『noobs』独自のエスケープキャラクタを探しだして、対応する不在着信/未読メッセージ/登録アプリの通知に関する情報に展開・置換して出力し、その結果文字列を『Glaeja』に返します。


『noobs』のエスケープキャラクタ


『noobs』独自のエスケープキャラクタは、「^(カレット)」から 始まる2文字の英文字(もしくは1文字の記号)です。エスケープキャラクタとその展開・置換のルールは以下のとおりです。
  1. ^^」のようにカレットが2つ並んだエスケープキャラクタは、1文字の「^」として結果文字列に出力されます。

  2. ^XY」のようにカレットの後に2文字の英文字が並んだエスケープキャラクタは、「X」という識別コードに対応する不在着信/未読メッセージ/登録アプリが持っている、「Y」に対応する情報に展開・置換されて結果文字列に出力されます。
    このとき、「X」に対応するアプリがない、もしくは「Y」に対応する情報がない場合には何も出力されません。

  3. 上記2つにあてはまらないエスケープキャラクタではない文字は、そのまま結果文字列に出力されます。

^XY」の「Y」が通知の持つどの情報に対応するかは、登録アプリの場合は以下のようになっています。
  • c」:カウント数
  • D」:最後にきた通知の日付(yyyy/MM/dd
  • d」:最後にきた通知の時刻(HH:mm
  • w」:最後にきた通知の日時(yyyyMMddHHmm
  • N」:このアプリのパッケージ名
  • n」:このアプリの名前
  • S」:最後にきた通知のティッカー
  • T」:最後にきた通知のタイトル
  • t」 :最後にきた通知のテキスト
ティッカー・タイトル・テキストが通知のどの部分かは、下図を参考にしてください。



不在着信/未読メッセージの場合、「Y」の一部が登録アプリとは以下のように異なっています。
  • N」:常に空文字列
  • n」:常に空文字列
  • S」:常に空文字列
  • T」:「連絡先」に発信者が登録されていれば名前、登録されてなければ空文字列
  • t」 :発信番号

実際に『Glaeja』で使ってみているシーンを以下に提示しておきますので、参考にしてみてください。



その他

OSSライセンス


『noobs』は以下のオープンソース・ソフトウェアを利用しています。
Copyright (c) 2014 kanitawa

ライブラリJar“GlaejaExtension_v100.jar”は、MITライセンスのもと公開されています。
http://opensource.org/licenses/mit-license.php


既知の不具合


  • 設定画面のカード上で、登録したアプリのアイコン表示が「システムのデフォルトアプリアイコン」となるアプリが稀に存在します。これは、そのアプリのアイコンが特殊な形式のものである場合にそうなります。動作には影響がありません。
  • Playストアでのバージョンアップ時は、『Glaeja』でのエクステンション登録が一旦解除されてしまいますので、バージョンアップ終了後に一度『Glaeja』の[データ管理]→[エクステンションの管理]を開いてください。開くだけで自動的に再登録がおこなわれます。

更新履歴


  • noobs
    • 2016-12-09:ver.1.2.1 (OSバージョン 4.4以上のみ対応)
      • 不在着信/未読SMS数が正しくリセットされない不具合を修正
      • 未読SMSにおいて[未読タイプ]を選択できるよう変更
      • 一部アプリが登録できない不具合を修正
      • OS6.0以上でのランタイムパーミッションに対応
      • ランタイムパーミッションで一部の権限が許可されていない場合、設定画面の[不在着信/未読SMS]表示に取消線等が表示されるよう変更

    • 2014-12-12:ver.1.2.0 (OSバージョン 4.4以上のみ対応)
      • ステータスバーの通知を左右フリックで削除した場合にカウントがリセットされるよう変更
      • OS 5.0で強制終了する不具合を修正

    • 2014-02-19:ver.1.1.1
      • OS 4.4.2における特殊な形式の通知を検知した場合に異常終了する不具合を修正

    • 2014-02-08:ver.1.1.0
      • 通知を既読にした際にカウント数のみゼロリセットする設定を追加
      • ダイアログからPlayストアアプリを開けない不具合を修正
      • 電話機能を持たない端末にインストールできない不具合を修正

    • 2014-02-07:ver.1.0.0 公開


  • noobs Unlocker
    • 2014-02-07:ver.1.0.0 公開


以上

5 件のコメント:

yoct さんのコメント...

不在着信のリセットについて

はじめまして
最近Glaejaを知り試行錯誤しながらいろいろ試しているのですが
不在着信のリセットで困っています。
トリガーを使い不在着信があるときは「着信あり」と表示させたいのですが、
電話帳アプリを開くなどしても表示が消えません。
カウントがリセットされていないのかと思い以下のことを試しました。

テキストレイヤーの文字列に「^Cc:GEX_NOOBS@Z@」といれカウント数を表示させる
1.不在着信3件:表示は「3」
2.電話帳アプリを開く:更新時間の1分を過ぎてもウィジェットをクリックして更新しても表示は「3」のまま
3.新たに不在着信:表示は「1」

おかしな表現になりますがカウントはリセットされているが、カウント数は0にならないといった感じです

ほかに試したことは
ステータスバーの通知を削除:表示は「3」
電話帳の着信履歴を全部削除:表示は「3」
2の後に新たにもうひとつウィジェットをつくりカウント数を表示:新たなウィジェットでも表示は「3」
2の後にエクステンションの管理でnoobsをいったん登録解除して再登録:表示は「3」
2の後にnoobsをアンインストールして再インストール:表示は「0」
再インストールした場合のみカウント数が0になりましたが、他は同じ結果でした。

カウント数が0にならない原因で何かわかることはあるでしょうか?
よろしくお願いします。

スマホ:au Xperia Z3
Android:ver. 5.0.2
Glaeja:ver. 4.7.0
noobs:ver.1.2.0

kanitawa さんのコメント...

あ~~~、、、不在着信か~、、、

この問題は機種依存(厳密にはGoogleが定めた仕様を
忠実に守っている端末が少ない)なんですね。

一番カンタンな解決方法は「不在着信数にはnoobs使わない」で、
代わりに『Missed Call (Glaeja Ext.)』を使うのが、
不在着信数表示だけなら確実ですね。

https://play.google.com/store/apps/details?id=com.gmail.kanitawa.gex_missed_call

コイツは、Glaejaエクステンション機能を実装したときに、
最初に機能デモとして開発して公開したものです。
エクステンションをインストールして管理画面で登録した後、
「C:GEX_MISSCALL@Z@」とすると、不在着信数が表示されます。
コイツなら、ダイアルアプリ起動や、ステータスバーの不在着信
通知を削除すれば、表示がゼロに戻ります
(今、手持ちのdocomo XperiaZ5Cで確認しました)。

こちらのご使用をご検討ください。

kanitawa さんのコメント...

今ちょろっと『Missed Call』と『noobs』のコードを確認してみたんですが、
なぜ『noobs』で上手く動かないのかちょっとよくわかりません。

『noobs』が3年近く前に開発したアプリでして、最新の開発環境に移行できるかどうか
やってみるのにちょいと時間がかかりますが、仕事がヒマになったら作業してみようかと
思います。

yoct さんのコメント...

早速の回答ありがとうございます。

『Missed Call』を試したところ、カウント数は0になり
「着信あり」の表示も消えるようになりました。
今後は『Missed Call』を利用させて頂きます。
ありがとうございました。

kanitawa さんのコメント...

えらく時間がかかってしまいましたが、『noobs』をver.1.2.1に更新しました。
不在着信のカウントリセット不具合は修正してあります。