iphone SprintBoard部分私有API总结

原创 2015年11月18日 17:49:43

本文介绍iOS SrpintBoard框架的部分私有API,具体包括:

  • 获取ios上当前正在运行的所有App的bundle id(不管当前程序是在前台还是后台都可以)
  • 获取ios上当前前台运行的App的bundle id(不管当前程序是在前台还是后台都可以)
  • 根据ios app的bundle id得到其App名称、图标(不管当前程序是在前台还是后台都可以)
  • 直接通过App 的bundle id来运行该App,无需使用url scheme(仅限当前程序在前台时,假如程序在后台能随便运行其他App,那就无敌了@_@)

(1)初始化

复制代码
    void * uikit = dlopen("/System/Library/Framework/UIKit.framework/UIKit", RTLD_LAZY);
    int (*SBSSpringBoardServerPort)() =
    dlsym(uikit, "SBSSpringBoardServerPort");
    p = (mach_port_t *)SBSSpringBoardServerPort();
    dlclose(uikit);
    sbserv = dlopen(SBSERVPATH, RTLD_LAZY);
复制代码

(2)获取iphone上所有正在运行的app的bundle id列表

 

复制代码
NSArray* (*SBSCopyApplicationDisplayIdentifiers)(mach_port_t* port, BOOL runningApps,BOOL debuggablet) =

                    dlsym(sbserv, "SBSCopyApplicationDisplayIdentifiers");

NSArray *currentRunningAppBundleIdArray= SBSCopyApplicationDisplayIdentifiers(p,NO,YES);
复制代码

 

(3)得到iphone 前台运行的app的bundle id

void* (*SBFrontmostApplicationDisplayIdentifier)(mach_port_t* port,char * result) = dlsym(sbserv, "SBFrontmostApplicationDisplayIdentifier");
char topapp[256];
SBFrontmostApplicationDisplayIdentifier(p,topapp); currentTopAppBundleId
=[NSStringstringWithFormat:@"%s",topapp];

(4)根据iphone app的bundle id得到其app名称

 NSString * (*SBSCopyLocalizedApplicationNameForDisplayIdentifier)(NSString* ) =   dlsym(sbserv, "SBSCopyLocalizedApplicationNameForDisplayIdentifier");

NSString *strAppName = SBSCopyLocalizedApplicationNameForDisplayIdentifier(strBundleId);

 (5)根据iphone app 的bundle id得到其图标

复制代码
 NSData* (*SBSCopyIconImagePNGDataForDisplayIdentifier)(NSString * bundleid) =
    dlsym(sbserv, "SBSCopyIconImagePNGDataForDisplayIdentifier");
    UIImage *icon = nil;
    NSData *iconData = SBSCopyIconImagePNGDataForDisplayIdentifier(bundleid);
    if (iconData != nil) {
        icon = [UIImage imageWithData:iconData];   
    }
    return icon;
复制代码

(6)直接通过app 的bundle id来运行该app

 在ios中,一个app调起另一个app的方式通常是用url scheme,但是用这个 私有app,可以在不需要url scheme的情况下运行任何app

复制代码
-(void)openAppByBundleId:(NSString*)bundleId
{
    void* sbServices = dlopen("/System/Library/PrivateFrameworks/SpringBoardServices.framework/SpringBoardServices", RTLD_LAZY);
    int (*SBSLaunchApplicationWithIdentifier)(CFStringRef identifier, Boolean suspended) = dlsym(sbServices, "SBSLaunchApplicationWithIdentifier");
    const char *strBundleId = [bundleId cStringUsingEncoding:NSUTF8StringEncoding];
    int result = SBSLaunchApplicationWithIdentifier((__bridge CFStringRef)bundleId, NO);
    dlclose(sbServices);
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

iphone SprintBoard部分私有API总结(不支持iOS8)

转载自:   http://www.cnblogs.com/gugupluto/p/3206772.html 本文介绍iOS SrpintBoard框架的部分私有API,具体包括: 获...
  • chenyong05314
  • chenyong05314
  • 2015年10月27日 00:29
  • 1041

关于苹果私有API的查找和使用

本文由2篇文章综合而成,原文地址为: http://www.cocoachina.com/iphonedev/sdk/2011/0531/2906.html http://bbs.51cto.c...
  • ergoucheng
  • ergoucheng
  • 2015年03月19日 11:20
  • 4258

iOS-private-api-checker私有API检测工具使用详细步骤

转自http://www.jianshu.com/p/07779e293ca7 iOS-private-api-checker私有API检查详细步骤(涉及到 Python、Flask、sqlite 环...
  • sinat_29789455
  • sinat_29789455
  • 2017年01月04日 11:56
  • 3962

iphone SprintBoard部分私有API总结(不支持iOS8)

转载自:   http://www.cnblogs.com/gugupluto/p/3206772.html 本文介绍iOS SrpintBoard框架的部分私有API,具体包括: 获...
  • chenyong05314
  • chenyong05314
  • 2015年10月27日 00:29
  • 1041

[转载]iphone SprintBoard部分私有API总结

原文链接 [http://www.cnblogs.com/gugupluto/archive/2013/07/22/3206772.html] 本文介绍iOS SrpintBoard框架的...
  • Apple_0611
  • Apple_0611
  • 2014年06月13日 15:52
  • 617

iPhone开发技巧之私有API(3)--- UIButton

如下图所示,指定 100 以上的UIButton的buttonWithType:就可以得到非公开的按钮风格。其中 100 ~ 102 是 UINavigationButton 风格的按钮1 2 3...
  • demigod2009
  • demigod2009
  • 2011年05月17日 21:42
  • 1699

iPhone私有API使用

iPhone中的API除了公开的 API:Published API外(或者叫文档中记录的API:Documented API),还有两类API:私有API:Private API和未公开的API:U...
  • kaizi318
  • kaizi318
  • 2012年06月16日 17:48
  • 3316

取iphone本机ip地址方法(非调用私有api方法)

[cpp] view plaincopyprint? 私有方法:      NSHost* myhost =[NSHost currentHost];   NSStri...
  • a351945755
  • a351945755
  • 2012年12月04日 09:37
  • 1804

Iphone的私有API

一.基本知识 iPhone中的API除了公开的API:Published API外(或者叫文档中记录的API:Documented API),还有两类API:私有API:Private API和...
  • luobo140716
  • luobo140716
  • 2016年01月12日 17:39
  • 236

iPhone开发技巧之私有API --- 设备相关信息

http://www.yifeiyang.net/iphone-development-skills-of-the-private-api-1-equipment-information/ ...
  • ydj213
  • ydj213
  • 2012年03月13日 14:24
  • 1397
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iphone SprintBoard部分私有API总结
举报原因:
原因补充:

(最多只允许输入30个字)