【脱獄アプリ開発】第6回 iOSOpenDevを使ったSBSettingsトグルの作り方

      2016/05/18


今回は、iOSOpenDevを使ってSBSettingsのトグルを作る方法を紹介します。SBSettingsは色々と応用が効くので、覚えておきましょう!


前回のあらすじ ~ しばらく時間が経ったので、復習してみてください。

【脱獄アプリ開発】第4回 XcodeとiOSOpenDevをインストールしよう!


手順は、でーもんさんとこ見れば分かるかと思います。

【iPhone】iOSOpenDevを使ってみよう(基礎編+SBSettings Toggle) : dmnlog


ポイント


Emacsの操作

起動$ emacs (file_path)
終了ctrl+x ctrl+c
開くctrl+x ctrl+f
保存ctrl+x ctrl+s
取消ctrl+g

iosod sshkey -h iPhoneのhostname.local もしくはWifiで割り当てられているIPアドレス(192.168.0.xとか)

Product→Build For→Build For Profiling

Command /bin/sh failed with exit code 255

ターミナルを開き以下を実行して下さい。

iosod sshkey -h [device-hostname-or-ipaddress]

それでもダメな場合は、sudo -sでrootになって同様に行ってください。



指定したプロジェクトのフォルダに「Packages」というフォルダができているので、その中のdebパッケージを使います。



iFunBoxなどで「/var/mobile」ディレクトリに入れます。

ターミナルを開き以下のコマンド入力

ssh root@[IPアドレス]
cd /var/mobile
dpkg -i com.ichitaso.test_1.0-1_iphoneos-arm.deb(作ったdebの名前)
killall SpringBoard



こんな感じで、インストールされたのを確認して下さい。

ResetCamera SBSettingsの作り方


ResetCamera iPhoneやiPadのカメラロールを一括削除できるSBSettings Toggle

これを作ってみます。

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#include <notify.h>

static BOOL isToggleEnabled = YES;

@interface DCIMClear : UIResponder <UIAlertViewDelegate>
{
}
- (DCIMClear*) initWindow;
@end

@implementation DCIMClear
- (DCIMClear*) initWindow
{
    UIAlertView *alert =
    [[UIAlertView alloc] initWithTitle:@"Delete the Camera Roll?"
                               message:@"If the tap of the OK,n a device will Reboot."
                              delegate:self
                     cancelButtonTitle:@"Cancel"
                     otherButtonTitles:@"OK",nil];
    [alert show];
    [alert release];
    return self;
}
- (void)alertView:(DCIMClear *) initWindow
clickedButtonAtIndex:(NSInteger)buttonIndex
{
	if (buttonIndex == 0) {
		isToggleEnabled = NO;
    } else if (buttonIndex == 1) {
		notify_post("com.ichitaso.dcimclear");
	}
}

@end

BOOL isCapable() // required; called when loaded; indicates if toggle supports current platform
{
	return YES;
}

BOOL isEnabled() // required; called when refresh button is pressed; functionally determines and indicates if toggle is on
{
	// perform something here to functionally determine if toggle is on and set isToggleEnabled accordingly
	// ...
	
	return isToggleEnabled;
}

BOOL getStateFast() // optional; called each time SBSettings window is shown; quickly indicates if toggle is on
{
	// nothing is performed to functionally determine if toggle is on, only return last known state using isToggleEnabled (for performance reasons)
	return isToggleEnabled;
}

void setState(BOOL enable) // required; called when user presses toggle button
{
    [[DCIMClear alloc] initWindow];
	isToggleEnabled = enable; // for getStateFast() use
}

float getDelayTime() // required; time in seconds spinner will show on toggle button after setState() returns (to allow background work to perform)
{
	return 0.1f;
}

BOOL allowInCall() // optional, if not implemented, assumed to return YES; indicates if toggle can be used during a call
{
	return YES;
}

これでビルドしてみましょう。

…はい、実際にインストールしても動きませんね。

SBSettingsでトグルをON/OFFした時に「com.ichitaso.dcimclear」というファイルに記載している内容を実行するんですが、それを準備してあげる必要があります。

#!/bin/sh

rm -rf /var/mobile/Media/DCIM
rm -rf /User/Media/DCIM/*

rm -rf /User/Media/PhotoData/Thumbnails/120x120.ithmb
rm -rf /User/Media/PhotoData/Thumbnails/158x158.ithmb

rm -rf /var/mobile/Media/PhotoData/Thumbnails/120x120.ithmb
rm -rf /var/mobile/Media/PhotoData/Thumbnails/158x158.ithmb

mkdir /var/mobile/Media/DCIM
chown -R mobile:mobile /var/mobile/Media/DCIM
chmod -R 0750 /var/mobile/Media/DCIM

reboot

このようにシェルスクリプトを書いて「/var/mobile/Library/SBSettings/Commands」の中に入れてあげましょう。

ボタンの画像を作りたい時は、「/var/mobile/Library/SBSettings/Themes/Default/トグルが入っているディレクトリと同じ名前のフォルダ」に「on.png」と「off.png」を入れてあげます。

今回はON/OFF関係なく動作するものなので、同じ画像でOKです。

ON/OFFで違う動きをするものの場合は、それぞれの画像を作成します。

テンプレート:SBSettings_templates.zip

あとは、こちらを参考に仕上げて見て下さい。

【脱獄アプリ開発】第2回 Cydia Debパッケージを作成しよう!

次回をお楽しみに!

 

この記事が気に入ったら
いいね!しよう

最新情報をお届けします

Twitter でWillFeelTipsをフォローしよう!


  関連記事

【脱獄アプリ開発】第7回theosのインストールから簡単なTweakの作成までのガイドライン

連載シリーズ第7回目となる今回は、現在のJailbreak Tweakを作る上で ...

BadgeCleaner - 個別にアプリのバッジを消すiOS 8/9対応のTweakを作成しました

iPhoneやiPad、iPod touchなどの脱獄したデバイス向けに、アプリ ...

【脱獄アプリ開発】第2回 Cydia Debパッケージを作成しよう!

前回は仮想マシンに「Ubuntu」をインストールしました。 今回は、実際にdeb ...

【脱獄アプリ開発】第4回 XcodeとiOSOpenDevをインストールしよう!

はい。やめようかと思ったけど、楽しみにしてくれてる方がいらっしゃるとのことで、脱 ...

【脱獄アプリ開発】第10回ichitasoリポジトリ変更のお知らせとCydiaダウンロードカウンタの設置方法

Cydia用のリポジトリが更新するたびにエラーとなってしまったため、新たにURL ...

 - iOS development