在flipswitch中杀死应用程序

时间:2014-03-13 20:22:24

标签: ios iphone objective-c theos

我今天使用theos创建了我的第一个flipswitch。

开关编辑调整的.plist文件以将其打开

交换机工作并打开调整但为了使调整对应用程序生效,必须重新启动应用程序

因此我需要在每次打开和关闭时切换特定应用程序

顺便说一下,我是Objective-c的新手,非常感谢你的帮助,谢谢!

我的switch.x

#import "FSSwitchDataSource.h"
#import "FSSwitchPanel.h"
#import <notify.h>
static NSString * const PREF_PATH = @"/var/mobile/Library/Preferences/file.plist";
static NSString * const kSwitchKey = @"enabled";


@interface waplastseenSwitch : NSObject <FSSwitchDataSource>
@end

@implementation waplastseenSwitch

- (FSSwitchState)stateForSwitchIdentifier:(NSString *)switchIdentifier
{
    NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:PREF_PATH];
    id existEnable = [dict objectForKey:kSwitchKey];
    BOOL isenabled = existEnable ? [existEnable boolValue] : YES;
    return isenabled ? FSSwitchStateOn : FSSwitchStateOff;
}

- (void)applyState:(FSSwitchState)newState forSwitchIdentifier:(NSString *)switchIdentifier
{
    NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:PREF_PATH];
    NSMutableDictionary *mutableDict = dict ? [[dict mutableCopy] autorelease] : [NSMutableDictionary dictionary];
    switch (newState) {
        case FSSwitchStateIndeterminate:
            return;
        case FSSwitchStateOn:
            [mutableDict setValue:@YES forKey:kSwitchKey];
            break;
        case FSSwitchStateOff:
            [mutableDict setValue:@NO forKey:kSwitchKey];
            break;
    }
    [mutableDict writeToFile:PREF_PATH atomically:YES];
    notify_post("Flipswitch.settingschanged");
}

@end

2 个答案:

答案 0 :(得分:1)

我使用

解决它
 system("killall -9 AppName");
像这样

case FSSwitchStateOn:
    [mutableDict setValue:@YES forKey:kSwitchKey];
     system("killall -9 AppName");
    break;
case FSSwitchStateOff:
    [mutableDict setValue:@NO forKey:kSwitchKey];
    system("killall -9 AppName");
    break;

干杯!

答案 1 :(得分:0)

抱歉,我不能发表评论,所以我不得不在答案中提出这个问题。 你的钩子代码是什么?我只是问,因为你不应该重新启动应用程序以使你的调整工作。

确保钩子代码在每个阶段检查plist,而不是仅仅在app启动时检查。

因此,在每种方法中测试是否要运行代码。

如果您的调整依赖于启动时的某些内容,可能会将此值存储在内存中,因此如果您决定启用调整,则可以获得所需内容。