나는 내가 프레임 워크라는 SpringBoardServices에 대해 들어 본 적이 URL 체계없이 특정 응용 프로그램을 볼 수있는 응용 프로그램을 구축하기 좋아하지만jailbroken되지 않은 iDevice의 아이콘을 터치하지 않고 URL 스키마없이 애플리케이션을 시작하는 방법은 무엇입니까?
는 지금까지 내가 파일 SpringBoardServices.h이 코드를 사용 링커 오류를 항상있다
SpringBoardServices.h : 여기
#define SPRINGBOARDSERVICES_H
#if __OBJC__
#if __cplusplus
extern "C" {
#endif
#include <CoreFoundation/CoreFoundation.h>
#include <Availability.h>
mach_port_t SBSSpringBoardServerPort();
#pragma mark -
#pragma mark Application launching
/// Launch an application given the display ID.
/// Equivalent to -[UIApplication launchApplicationWithIdentifier:suspended:].
/// @return 0 on success, nonzero on failure. Feed the result to SBSApplicationLaunchingErrorString() to get the error string.
int SBSLaunchApplicationWithIdentifier(CFStringRef displayIdentifier, Boolean suspended) __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_3_0);
/// Launch an application for debugging.
/// The parameters are not known yet...
int SBSLaunchApplicationForDebugging(void* unknown, ...) __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_3_0);
/// Get the error string from error code returned by SBSLaunchApplicationWithIdentifier().
CFStringRef SBSApplicationLaunchingErrorString(int error);
#pragma mark -
#pragma mark Watchdog assertion
typedef struct __SBSWatchdogAssertion* SBSWatchdogAssertionRef;
CFTypeID SBSWatchdogAssertionGetTypeID();
void SBSWatchdogAssertionCancel(SBSWatchdogAssertionRef assertion);
SBSWatchdogAssertionRef SBSWatchdogAssertionCreateForPID(CFAllocatorRef allocator, pid_t pid);
int SBSWatchdogAssertionRenew(SBSWatchdogAssertionRef assertion);
CFTimeInterval SBSWatchdogAssertionGetRenewalInterval(SBSWatchdogAssertionRef assertion);
#pragma mark -
CFArrayRef SBSCopyApplicationDisplayIdentifiers(Boolean onlyActive, Boolean unknown);
CFStringRef SBSCopyIconImagePathForDisplayIdentifier(CFStringRef dispIden);
CFStringRef SBSCopyLocalizedApplicationNameForDisplayIdentifier(CFStringRef dispIden);
/*
SB functions should be generated by MIG!
#pragma mark -
#pragma mark SB functions - Media
void SBSetMediaVolume(mach_port_t port, int volume) __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_3_0);
void SBSetDisableNowPlayingHUD(mach_port_t port, Boolean disable) __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_3_0);
void SBSetNowPlayingInformation(mach_port_t port, void* info);
#pragma mark -
#pragma mark SB functions - Accessibility
void SBSetZoomTouchEnabled(mach_port_t port, Boolean enable) __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_3_0);
void SBSetDisplayColorsInverted(mach_port_t port, Boolean inverted) __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_3_0);
#pragma mark -
#pragma mark SB functions - Remote
void SBApplicationSetSimpleRemoteRoutingPriority(mach_port_t port, int priority) __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_3_0);
#pragma mark -
#pragma mark SB functions - Watchdog
void SBCancelWatchdogAssertionForProcess(mach_port_t port, pid_t pid, void* unknown);
void SBReloadApplication(mach_port_t port) __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_3_0);
*/
#if __cplusplus
}
#endif
#endif
및 내 ViewController.m 파일에 내 코드를 사용하고 있습니다 :
#import "SpringBoardServices.h"
-(IBAction)AdSheed {
SBSLaunchApplicationWithIdentifier(CFSTR("com.apple.preferences"), false);
}
누구든지이 문제를 어떻게 해결할 수 있을지 알고 있습니까?
'SBSLaunchApplicationWithIdentifier()'를 사용하는 방법은 [비슷한 답변을 볼 수 있습니다] (http://stackoverflow.com/a/15455831/119114) 참조하십시오. 문제는 ** 또한 ** 앱에 특별한 자격이 필요하다는 것입니다. 그리고 그렇게하려면 탈옥이 필요합니다 (적어도 본때를 추가하는 법을 모르겠다). – Nate