第五章,我想仿照做着,把辅助功能里面的小圆点功能逆向,然后放到sbseting设置下面,遇到了一些问题

Jun 1 12:08:19 iPad catcher: _CFXNotificationPost(NSConcreteNotification 0x18868970 {name = _UIWindowSystemGestureStateChangedNotification; object = <UIWindow: 0x17682460; frame = (0 0; 1024 768); autoresize = H; tintColor = UIDeviceRGBColorSpace 0 0.478431 1 1; gestureRecognizers = <NSArray: 0x17682ec0>; layer = <UIWindowLayer: 0x176817a0>>; userInfo = {
“_UIWindowSystemGestureCancellingTouchesUserInfoKey” = 0;
}})
Jun 1 12:08:19 iPad catcher: _CFXNotificationPost(NSConcreteNotification 0x177daca0 {name = UIViewAnimationDidCommitNotification; object = UIViewAnimationState; userInfo = {
delegate = “<UIViewAnimationBlockDelegate: 0x177dc070>”;
name = “”;
}})
Jun 1 12:08:19 iPad catcher: _CFXNotificationPost(NSConcreteNotification 0x177d8190 {name = UIViewAnimationDidCommitNotification; object = UIViewAnimationState; userInfo = {
delegate = “<UIViewAnimationBlockDelegate: 0x177c21a0>”;
name = “”;
}})
Jun 1 12:08:19 iPad catcher: notify_post(com.apple.accessibility.cache.ast)
Jun 1 12:08:19 iPad catcher: _CFXNotificationPost(__CFNotification 0x188619c0 {name = com.apple.accessibility.cache.ast})
Jun 1 12:08:19 iPad catcher: notify_post(com.apple.accessibility.cache.ax)
Jun 1 12:08:19 iPad catcher: _CFXNotificationPost(__CFNotification 0x1758a830 {name = com.apple.accessibility.cache.ax})
Jun 1 12:08:19 iPad SpringBoard[687]: catcher: _CFXNotificationPost(__CFNotification 0x1805c7d0 {name = com.apple.accessibility.asssistive.touch.status})
Jun 1 12:08:19 iPad SpringBoard[687]: catcher: notify_post(com.apple.accessibility.asssistive.touch.status)
Jun 1 12:08:19 iPad SpringBoard[687]: catcher: _CFXNotificationPost(__CFNotification 0x1805c7d0 {name = com.apple.accessibility.asssistive.touch.status})
Jun 1 12:08:19 iPad SpringBoard[687]: catcher: notify_post(com.apple.accessibility.status)
Jun 1 12:08:19 iPad catcher: notify_post(com.apple.accessibility.assistive.touch.hardware.status)
Jun 1 12:08:19 iPad SpringBoard[687]: catcher: _CFXNotificationPost(__CFNotification 0x1805c7d0 {name = com.apple.accessibility.status})
Jun 1 12:08:19 iPad catcher: _CFXNotificationPost(__CFNotification 0x1885d670 {name = com.apple.accessibility.assistive.touch.hardware.status})
Jun 1 12:08:19 iPad SpringBoard[687]: catcher: notify_post(com.apple.accessibility.status)
Jun 1 12:08:19 iPad SpringBoard[687]: catcher: _CFXNotificationPost(__CFNotification 0x1b21efa0 {name = com.apple.accessibility.status})
Jun 1 12:08:19 iPad catcher: notify_post(com.apple.accessibility.cache.ax)
Jun 1 12:08:19 iPad catcher: _CFXNotificationPost(__CFNotification 0x176d1450 {name = com.apple.accessibility.cache.ax})
Jun 1 12:08:19 iPad catcher: notify_post(com.apple.accessibility.cache.ax)
Jun 1 12:08:19 iPad catcher: _CFXNotificationPost(__CFNotification 0x188582d0 {name = com.apple.accessibility.cache.ax})
Jun 1 12:08:19 iPad SpringBoard[687]: catcher: notify_post(com.apple.accessibility.status)
Jun 1 12:08:19 iPad catcher: _CFXNotificationPost(__CFNotification 0x176e0520 {name = com.apple.accessibility.asssistive.touch.status})
Jun 1 12:08:19 iPad SpringBoard[687]: catcher: _CFXNotificationPost(__CFNotification 0x1ab451f0 {name = com.apple.accessibility.status})
Jun 1 12:08:19 iPad catcher: notify_post(com.apple.accessibility.asssistive.touch.status)
Jun 1 12:08:19 iPad catcher: _CFXNotificationPost(__CFNotification 0x176e0520 {name = com.apple.accessibility.asssistive.touch.status})
Jun 1 12:08:19 iPad catcher: notify_post(com.apple.accessibility.status)
Jun 1 12:08:19 iPad catcher: _CFXNotificationPost(__CFNotification 0x176e0520 {name = com.apple.accessibility.status})
Jun 1 12:08:19 iPad catcher: notify_post(com.apple.accessibility.status)
Jun 1 12:08:19 iPad catcher: _CFXNotificationPost(__CFNotification 0x176be590 {name = com.apple.accessibility.status})
Jun 1 12:08:19 iPad catcher: notify_post(com.apple.accessibility.status)
Jun 1 12:08:19 iPad catcher: _CFXNotificationPost(__CFNotification 0x18857810 {name = com.apple.accessibility.status})
Jun 1 12:08:19 iPad catcher: _CFXNotificationPost(NSConcreteNotification 0x188619c0 {name = _UIWindowSystemGestureStateChangedNotification; object = <UIWindow: 0x17682460; frame = (0 0; 1024 768); autoresize = H; tintColor = UIDeviceRGBColorSpace 0 0.478431 1 1; gestureRecognizers = <NSArray: 0x17682ec0>; layer = <UIWindowLayer: 0x176817a0>>; userInfo = {
“_UIWindowSystemGestureCancellingTouchesUserInfoKey” = 0;
}})
Jun 1 12:08:19: catcher: _CFXNotificationPost(__CFNotification 0x1759c460 {name = com.apple.accessibility.asssistive.touch.status})
Jun 1 12:08:19: catcher: notify_post(com.apple.accessibility.asssistive.touch.status)
Jun 1 12:08:19: catcher: _CFXNotificationPost(__CFNotification 0x176aaf80 {name = com.apple.accessibility.asssistive.touch.status})
Jun 1 12:08:19: catcher: notify_post(com.apple.accessibility.status)
Jun 1 12:08:19: catcher: _CFXNotificationPost(__CFNotification 0x17597a00 {name = com.apple.accessibility.status})
Jun 1 12:08:19: catcher: notify_post(com.apple.accessibility.status)
Jun 1 12:08:19: catcher: _CFXNotificationPost(__CFNotification 0x176bf200 {name = com.apple.accessibility.status})
Jun 1 12:08:19: catcher: notify_post(com.apple.accessibility.status)
Jun 1 12:08:19: catcher: _CFXNotificationPost(__CFNotification 0x1769ba90 {name = com.apple.accessibility.status})
Jun 1 12:08:19 iPad catcher: _CFXNotificationPost(NSConcreteNotification 0x177b63d0 {name = UIViewAnimationDidStopNotification; object = <UIViewAnimationState: 0x1774dbd0>; userInfo = {
delegate = “<UIViewAnimationBlockDelegate: 0x177dc070>”;
name = “”;
}})
Jun 1 12:08:19 iPad catcher: _CFXNotificationPost(NSConcreteNotification 0x177dc070 {name = UIViewAnimationDidStopNotification; object = <UIViewAnimationState: 0x17736180>; userInfo = {
delegate = “<UIViewAnimationBlockDelegate: 0x177c21a0>”;
name = “”;
}})

我找到了对应Plist文件,然后也修改了一些值,书中使用通知,然后就解决了,我发了通知没用,根据截取到的通知,我xm文件代码如下:
%orig;
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@“第二次” message:nil delegate:self cancelButtonTitle:@“OK” otherButtonTitles:nil];
[alert show];
NSMutableDictionary *dictionary = [NSMutableDictionary dictionaryWithContentsOfFile:@"/var/mobile/Library/Preferences/com.apple.Accessibility.plist"];

[dictionary setObject:[NSNumber numberWithInt:1] forKey:@"AssistiveTouchEnabled"];
[dictionary setObject:[NSNumber numberWithInt:1] forKey:@"AccessibilityEnabled"];
[dictionary setObject:[NSNumber numberWithInt:1] forKey:@"AssistiveTouchUIEnabled"];

[dictionary writeToFile:@"/var/mobile/Library/Preferences/com.apple.Accessibility.plist" atomically:YES];
notify_post("com.apple.accessibility.asssistive.touch.status");
notify_post("com.apple.accessibility.status");
notify_post("com.apple.accessibility.cache.ast");
notify_post("com.apple.accessibility.cache.ax");

然后make page install 后,发现 设置里面选项是改了(说明Plist改对了),但是,小圆点没有出来,然后我就没有思路了, 谁能告诉我,还有什么思路我继续往下搞,谢谢了。

其实我就想实现,把辅助功能里面的小白点,功能暴露出来

一步一个坑呀 yumen

没人吗?难道我问得太难了?

一个人也没 哎

会不会是plist的配置改后,还要通知下系统重新加载下。继续找找如何通知系统重新加载的方法。(猜测)

已经找了, 使用 狗神的,拦截通知,然后把看着像的 通知都发了一遍,_UIWindowSystemGestureStateChangedNotification这个通知没有发,但是感觉不是这个通知,然而还是没有用

自己继续顶

给个意见也行

你逆向看看啊,我在书上举的我早期的一个例子,就是改配置文件然后发通知,但不推荐这么做,肯定有更优雅的解决方案

您就是传说中的作者呀。
明白了,那我就不纠结这个问题,继续往下学了,找到更好的方法的时候再来看看