获取给定应用程序的元素层次结构

时间:2014-02-07 06:34:14

标签: ios instruments ui-automation iphone-privateapi

我想制作一个内部应用程序(不想把它放在AppStore上)。我有以下场景。

我将我的应用(说“XApp”)放在后台。现在,我在前台打开其他应用程序(说“YApp”)。现在,我想获得Xapp中YApp的当前元素hieararchy。我正在为Yapp提供开发配置文件/证书。

我只想要Element层次结构,几乎与我得到的相似,如果我运行UIAutomation of instruments并通过.js脚本抛出以下命令。

UIATarget.localTarget().frontMostApp().logElementTree();

简而言之,我需要与上述命令相同的结果,但无需通过USB电缆将设备连接到任何PC。没关系,如果是使用私人api或越狱设备。正如我已经提到的那样,我不想把它放在App Store上。

修改

我可以找到我自己的应用程序的元素层次结构,即对于XApp本身,通过运行以下代码,

-(void) showViewHeirarchy:(UIView*)v
{
    for (UIView *vv in v.subviews) 
    {
        NSLog(@"SubView:%@",[vv description]);
        NSLog(@"count:%lu",(unsigned long)vv.subviews.count);
        if (vv.subviews.count>0) 
        {
            [self showViewHeirarchy:vv];
        }
    }
}

在viewDidLoad方法完成执行后(不在viewDidLoad中)调用上面的函数,并调用它如:

UIWindow *v=[[UIApplication sharedApplication] keyWindow];
[self showViewHeirarchy:v];

所以,任何人都可以知道如何从其他应用程序(在后台运行)获得一个应用程序的UIApplication对象,以便我的工作变得更容易。

0 个答案:

没有答案