【脱獄アプリ開発】第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 [email protected][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をフォローしよう!


  関連記事

【脱獄アプリ開発】第8回armv6からarm64(iPhone 3Gから5s)に対応したTweakの作成

連載シリーズ第8回目となる今回は、今では懐かしいiPhone 3Gから現行機種の ...

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

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

【脱獄アプリ開発】第5回 Cydia 有料Tweakの提出方法 BigBoss編

今回は、自分で開発した脱獄アプリをCydiaの本家であるBigBossへ提出する ...

【脱獄アプリ開発】第3回 Google App Engineを使ったCydiaリポジトリの作成方法

さて!連載3回目です。今回は、自分で作ったdebパッケージをCydia Repo ...

【脱獄アプリ開発】第11回新しいtheosのインストールと簡単なTweakの作成方法

今回は、以前紹介したtheosの構築方法が古いものになってしまったので、新しくな ...

 - iOS development