【问题标题】:Killing application in flipswitch杀死翻转开关中的应用程序
【发布时间】:2014-04-18 20:40:58
【问题描述】:

我今天使用 theos 创建了我的第一个翻转开关。

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

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

所以我需要让开关在每次打开和关闭时杀死特定的应用程序

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

我的开关.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

【问题讨论】:

    标签: ios iphone objective-c theos


    【解决方案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;
    

    干杯!

    【讨论】:

      【解决方案2】:

      对不起,我不允许发表评论,所以我不得不在回答中提出这个问题。 你的钩子代码是什么?我只是问,因为您不需要重新启动应用程序即可进行调整。

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

      因此,请测试您要挂钩的每个方法是否运行您的代码。

      如果您的调整依赖于启动时的某些内容,则可能将此值存储在内存中,这样如果您决定打开调整,您就有了所需的内容。

      【讨论】:

      • 它是一个翻转开关伴侣,一个控制中心切换开关,通过编辑该调整的 .plist 文件来打开和关闭一个调整正如我所说的它工作正常,我只是想让它也杀死一个打开和关闭调整时的特定应用程序
      • 我知道它是一个翻转开关,但你的调整代码是什么。你有什么要修改的?我做了一些调整,并且从来不需要重新启动我正在调整的应用程序。为什么需要重启?因为它会在启动时检查是否启用了调整?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-23
      • 1970-01-01
      • 2018-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多