« [iPhone][Jailbreak]SBSettings用Add-on MMSReq | Main | [iPhone][Jailbreak]iPhoneの時刻を自動的に設定するDTAdjuster »

2009.07.19

[iPhone][Jailbreak]iPhoneのSMS/MMS着信音振り分けを可能にするSmartBiff

開発終了のため、公開停止しました。再配布はしないように願います。(2010.05.30)

SMS/MMS着信音振り分けを可能にするMobile Substrate Plug-in、「SmartBiff」というのを作ってみました。

(動画は差し替え予定)

ついでに、i.softbank.jp (Eメール(i))の着信音と、着信メッセージも再定義できるようにもしました。

Smartbiff01

iPhone OS 3.0用です。iPhone 3GSは持っていないので、動くかどうか未確認です。

本来のSMS/MMS着信音と二重に鳴ってしまうので、「設定>サウンド>新着SMS/MMS」はオフにして使ってください。

(2009/0720追記)しかし、こうするとなぜかバイブレーションが作動しなくなってしまうので、「設定>サウンド>新着SMS/MMS」はオンのまま、SMS/MMSの着信音を「トライトーン」に設定。「/System/Library/Audio/UISounds/sms-received1.caf」を「_sms-received1.caf」などにリネームし、以下の無音ファイルをその代わりにコピーしてrespringすればバイブレーションが動作するようになります。
無音の「sms-received1.caf」をダウンロード
Ver.0.2でバイブレーションが動作するようになりました。SMSの送信音などが欲しい方には、上記の方法もあります。

MobileMail.app、i.softbank.jpの着信音振り分けは対応してませんし、対応する予定もありません。
設定はplistを直接編集という形です。今は設定アプリを作る元気がありません。
バイブレーションのパターンを個別に変えるという機能も追加は考えていません。
分かる人だけ使ってください。

関連ファイルは、「/var/mobile/Documents/SmartBiff」にまとめてあります。
振り分けの条件設定ファイルは、そこにある「SmartBiffRules.plist」です。

無保証です。

履歴

Ver.0.2 (2009.07.23)
 バイブレーションが動作しなかった想定外の動作を修正

Ver.0.1 (2009.07.19)
 初版

振り分け条件設定ファイルSmartBiffRules.plist解説

編集には、Xcode付属のProperty List Editorやテキストエディタなどを使ってください。
エンコーディングはutf-8です。

Root以下の要素

Active: SmartBiffの有効無効。無効にした場合は無条件でDefaultRingtoneに指定した着信音を鳴らす
RingtonePath: 着信音を設置するパス
DefaultRingtone: SMS/MMSで振り分け条件が一つも成立しなかった場合に鳴らす着信音
ISoftbankJpRingtone: i.softbank.jp(Eメール(i))の着信通知時に鳴らす着信音
ISoftbankJpAlertMessage: i.softbank.jp(Eメール(i))の着信通知時に表示されるダイアログの置き換えメッセージ

Root/rules以下の要素

Root/rulesは振り分け条件の配列になっています。
上のものから処理していきます。条件が成立した時点でそれ以下のものは飛ばしますので、順番をよく考える必要があります。

Active: この振り分け条件の有効無効
AllCriteriaMustBeSatisfied: Criteria以下の条件の全部一致を必須とするか(AND)、Criteria以下の条件のいずれか一つが一致すれば条件成立とするか(OR)決める。trueが前者、falseが後者
Ringtone: 着信音ファイル指定。「RingtonePath」で指定したパスに置いておく必要がある
RuleName: 振り分け条件名。どんな名前でも構わない
Criteria: 実際の振り分け条件を指定。詳しくは次項

Root/rules/dict/Criteria以下の要素

Root/rules/dict/Criteriaは、実際の振り分け条件の配列になっています。
上のものから処理していきます。AllCriteriaMustBeSatisfiedがfalseの場合は条件が一つでも一致した時点で成立となり、それ以下のものは飛ばしますので、順番をよく考える必要があります
AllCriteriaMustBeSatisfiedがtrueの場合は、Criterianにある条件はすべて評価します。そして、どれか一つでも一致しない条件があれば不成立となります

Criteria以下にある要素は、HeaderとExpressionの2要素から成ります。

Header: 着信したメールの、どのフィールドとExpressionとを照合するかを指定します。Address、Name、Messageの3種類指定できます。
Expression: 指定したフィールドに、どんな文字列が登場したら条件一致とするかを指定します。照合は部分一致で実施しますので、例えば、「Header」を「Address」、「Expression」を「gmail.com」と指定したら、Gmailのアドレスから来たメールはすべて条件一致となります。

Address: メールアドレス、SMSの場合はハイフン無しの電話番号を指定
Name: SMSの場合は、その電話番号が登録されている「連絡先」の名前
Message: 本文。どうもSubjectは引っかけられない模様?

ヘッダは3種類指定できますが、Criteria以下に同じ種類の「Header」を複数件登録しておくこともできます。
例えば、「Header」が「Address」のものばかり複数件登録ということもできます。これで「AllCriteriaMustBeSatisfied」をfalseにしておけば、着信音のグループ指定という意味になります。

この説明で理解できたあなたはすごい!
「/var/mobile/Documents/SmartBiffRules.plist」が簡単なサンプルになっているので、見てみてください。

インストール

インストールは、いつものCydiaのリポジトリから「SmartBiff」で検索してください。

|

« [iPhone][Jailbreak]SBSettings用Add-on MMSReq | Main | [iPhone][Jailbreak]iPhoneの時刻を自動的に設定するDTAdjuster »

Comments

SmartBiff公開ありがとうございます。
plist編集後の適用はrespring必要でしょうか?

Posted by: えるお | 2009.07.19 at 07:56 AM

どうもです。
respringは必要無いです。
無いはず。

Posted by: moyashi | 2009.07.19 at 08:38 AM

SmartBiff凄く良いです。期待通りの設定もできました。
どうもありがとうございます。

Posted by: いりの | 2009.07.19 at 09:48 AM

ありがとうございます。すばらしいです!

Posted by: ryu1ro | 2009.07.19 at 06:26 PM

SmartBiff、ありがとうございます!
iPhone 3GSでも問題なく動作しました。
ありがたく使わせていただきます☆

Posted by: 伊織☆ | 2009.07.20 at 11:14 AM

SMS/MMS のサウンドをなしにすると、バイブもOFFになってしまうのは仕様ですか?ついでに送信完了時のサウンドもOFFになります。

Posted by: ryu1ro | 2009.07.20 at 12:27 PM

送信完了時のサウンドが鳴らなくなるのは疑問の余地は無いかと思いますが、バイブレーションが動作しない件気がつきませんでした。対処方法を追記しましたので、このページを「received1.caf」で検索してください。

Posted by: moyashi | 2009.07.20 at 04:28 PM

ありがとうございます。ご教示いただく前に、無音ファイルでしのいでおりました。バイブも含めて、設定できるとすばらしいですね。
どちらにせよ、神アプリなので、使わせていただきます!ありがとうございました。

Posted by: ryu1ro | 2009.07.20 at 06:54 PM

これは素晴らしいですね!
とは言っても、仕事中に音が鳴るのはまずいので今までも無音着信サウンドを入れて基本的にメールは音を出さないように設定しています…
是非バイブの鳴り分け設定プラグインもお願いしたいです!

Posted by: | 2009.07.20 at 10:44 PM

バイブレーションのパターンの鳴り分けは無理ですね。
今使っている着信音を鳴らすAPIは音を鳴らしつつバイブレーションを同時に作動させるAPIなのです。

バイブレーションの挙動はSystemSoundVibrationPatterns.plistのDefaultで指定されているものが一律適用されます。
ここを変更しても適用されるのはrespring後(だったと思う)なので、都度変更はできません。

今使っているAPIを小刻みに呼び出せばできますが、今度は複数通同時に着信した場合の問題を考えないといけないですので、現実的でないです。着信音は複数同時に鳴らせますが、バイブレーションの場合はそうもいきません。

スレッドという複数プロセスを同時に走らせる処理をすることになりますが、自分はよく分かっていません。
Mobile Substrateではミスが許されないので、自分にはきちんと実装できる自信がありません。
かといって、今がきちんとしているかという保証も全然ありませんが。
iPhoneの動作が不安定になってしまっては元も子もないので、できるだけシンプルにしておくのがいいと思っています。

Posted by: moyashi | 2009.07.21 at 01:10 PM

iPhoneでも着信音の振り分けができるようになって、すごく嬉しいです。
ありがとうございました!

Posted by: | 2009.08.12 at 01:41 AM

振り分けができるようにしていただいて、ありがとうございました。
要望なのですが、SMS/MMSの着信音は30秒まで使えるのですが、その場合、メールを開いても着信音が鳴りっぱなしになってしまいます。
なので、開いたら止まるような設定はできないでしょうか?

Posted by: lyun | 2009.09.30 at 06:53 PM

不可能ではないと思いますが、対応は考えていません。
短い音をお使いください。

Posted by: moyashi | 2009.09.30 at 07:30 PM

初心者的な質問で申し訳ありません。
すばらしいソフトだと思います。
このアドレスだと、このメッセージを表示するという機能はできますでしょうか?
構成はACTIVE後に音の命令を書いてその後、HEADERで条件を設定するというプログラムなのでしょうか?
お時間ありましたら、回答の程よろしくお願いいたします。

Posted by: やす子 | 2010.01.18 at 12:36 AM

そういう機能はありませんです。>個別メッセージ表示

作れば作れないことはないですが、予定はありませんです。

動作については、とりあえず添付のplistを見ながら動作を確認すると分かりやすいと思います。

Posted by: moyashi | 2010.01.18 at 09:22 PM

つい先日iPhone3gsを手に入れたばかりなのですが、
SmartBiffがどうしてもほしいです。
勝手だと思いますが再配布していただけないでしょうか。よろしくお願いします。

Posted by: タカシ | 2010.06.20 at 11:15 PM

moyashiさんの便利なアプリが公開停止になるのは非常に残念です。
使わせて頂いている側の我侭ではありますが、再配布要求のあるアプリだけでも再度公開していただけませんでしょうか?

Posted by: | 2010.06.22 at 12:16 AM

最近iPhone4に乗り換えました。
普通のケータイなら出来て当り前のメール受信時のフォルダ振り分けや受信音の鳴り分け•オリジナル受信音など、不満な点が多くあり、jailbreakに至りました。
ネットでの検索でココにたどり着きましたが、公開停止とは残念でなりません。
再公開を是非お願いします。

Posted by: ジュン | 2010.11.04 at 02:49 PM

The comments to this entry are closed.

« [iPhone][Jailbreak]SBSettings用Add-on MMSReq | Main | [iPhone][Jailbreak]iPhoneの時刻を自動的に設定するDTAdjuster »