2014-05-14 2 views
3

내 첫 번째 앱 (CoreApp이라고 함)은 백그라운드에서 작동합니다. 이 CoreApp이 자동 푸시 알림을 수신하면 두 번째 앱 (UiApp)으로 데이터를 전달하고 싶습니다. CoreApp가 배경에있을 때두 개의 백그라운드 앱간에 데이터를 전달하는 방법

  • [[UIApplication sharedApplication] openURL:url] 반환 NO : 때문에 사용자 정의 URL 스킴은 여기에 옵션이 아닙니다.
  • URL 스키마를 통해 열면 UiApp은 전경으로 으로 이동하지만 배경으로 유지하려고합니다.

나는 두 앱에 VoIP 키를 추가하고 소켓을 통해 통신 할 생각입니다.

다른 아이디어? 두 앱 모두 앱 스토어 용 앱이 아니므로 해킹을 사용할 수 있습니다.

편집

목표는 CoreApp 통지를 받았을 때 UiApp의 배지 번호를 증가시키는 것이다. 그래서, 나는 CoreApp에서 UiApp까지 간단한 int number를 전달하기를 원합니다.

+1

귀하의 케이스가 배지 번호를 늘리는 것과 같이 간단하면 다윈 알림 센터 https://developer.apple.com/library/mac/documentation/corefoundation/Reference/CFNotificationCenterRef/Reference/reference.html을 사용해보십시오. 데이터를 보낼 수는 없지만 여러 알림을 보내서 번호를 하나씩 늘릴 수는 있습니다. – creker

+0

UiApp **이 백그라운드에서 실행 중이거나 일시 중지 되었습니까? 이것은 차이를 만듭니다. – Nate

+0

@creker, 나는 지금 그걸 가지고 놀고있는 답변을 주셔서 감사합니다. –

답변

0

2 개의 VoIP 앱을 사용하고 소켓을 통해 통신하기로 결정했습니다.

기능 :

SBSetApplicationBadgeNumber(mach_port_t* port, char* appID, int number); 

는 iOS7에 사용할 수 없습니다 나는이 유사 새로운 API를 찾지 못했습니다.

다윈 알림 센터 & UiApp가 전경에있을 때 UIPasteboard가 완벽하게 작동하지만 앱이 일시 중지되었을 때 Darwin 알림이 수신되지 않습니다.

+1

알림을 사용하여 계속 할 수 있습니다. 백그라운드에서 앱을 계속 실행하면됩니다. 이것은 오디오 파일을 반복하여 수행 할 수 있습니다. 그러나 voip과 소켓은 아마도 당신의 경우에 더 잘 작동 할 것입니다. – creker

2

해결 방법은 없지만 두 번째 앱에 어떤 데이터를 공유할지, 두 번째 앱에 어떤 데이터로 저장할지, 더 특히 :이 데이터를 두 번째 응용 프로그램 작업)을해야 할 필요가있을 때

은 아마 당신은 원하는 것 (

+ (UIPasteboard *)pasteboardWithName:(NSString *)pasteboardName create:(BOOL)create 

두 응용 프로그램에서 사용할 수있는 두꺼운 종이를 만들려면 UIPasteboard를 살펴 보자 persistent 속성을 YES로 설정).

addItems : 메서드를 사용하여 요소를이 페이스트 보드에 추가 할 수 있습니다. 두 번째 응용 프로그램을 실행하면 대지의 내용을보고 사용하고 제거 할 수 있습니다.

+0

답변 해 주셔서 감사합니다. 업데이트 질문이 있습니다. –

+0

나는 배지를 즉시 업데이트하고 싶기 때문에 안타깝게도 UIPasteboard는 옵션이 아닙니다. –

+0

@SergeyDemchenko, UIPasteboard가 효과적 일지 모르지만 다른 응용 프로그램에 대지가 변경되었음을 알리는 알림을 보내야합니다. 정상적인 'UIPasteboardChangedNotification'은 백그라운드에서 전송되는 것처럼 보이지 않으므로 자신 만의 맞춤 알림을 사용하고 ** 다음에 ** 새로운 배지 번호 데이터를 찾기 위해 붙여 넣기를 확인해야합니다. 대답은 – Nate

0

CoreApp이 원격 푸시 알림을 수신 할 때마다 서버의 백그라운드 URL을 호출하면 서버가 배지 번호를 증가시키고 (새로운 배지 번호와 함께) 원격 푸시 알림을 UiApp로 보냅니다. 모든

+0

주셔서 감사합니다. 예, 해결책이지만 서버와의 추가 통신이 필요합니다. 나는 애플 리케이션을 로컬에서 통신하는 방법을 찾기 위해 노력하고있다. 대답에 대한 –

2

첫째, 애플리케이션 간의 데이터 공유에 대한 내 질문에 대해 살펴 : 내가 당신이라면,이 대지 또는 소켓 갈 것 Sharing info between multiple iOS apps

.

그 꼭대기에, 당신은 개인 API보고 관심을 가질 수 있습니다

SBSetApplicationBadgeNumber(mach_port_t* port, char* appID, int number); 

그것은 권리의 보호 및 다른 응용 프로그램에 배지를 설정 할 수 있었다되지 않았습니다.

+0

주셔서 감사합니다. SBSetApplicationBadgeNumber 설명서를 찾을 수 없습니다 ...이 기능을 사용하려면 어떤 헤더를 포함해야합니까? –

+0

@SergeyDemchenko, 해당 함수는 실제 (문서화 된) 헤더에 없습니다. 자신 만의 헤더 파일을 만들고 Victor가 보여준 선언을 넣을 수 있습니다. 그런 다음, 해당 심볼이 실제로 정의 된 SpringBoardServices.framework에 대한 앱 연결을 확인하십시오. 그러나이 메서드를 호출하면 나는 실제로 다른 응용 프로그램을 깨울 것이라고 생각하지 않습니다. – Nate

+0

@SergeyDemchenko :이 문서화되지 않은 함수에 대해 언급 한 유일한 이유는 privateapi 태그에 게시했기 때문입니다. –

관련 문제