2014-03-27 4 views
1

나는 항상 Android 용으로 코딩했으며 이제는 iOS 개발에 대한 지식을 넓히기 위해 노력하고 있습니다. 그래서 저는 이것에 정말로 새로운 것입니다. 잠시 기다려주십시오.

작은 그룹의 앱만 백그라운드에서 무기한 실행될 수 있다는 것을 알고 있습니다. 이들은 VoIP, 음악 플레이어 및 위치 추적 앱입니다.

XMPP 프레임 워크를 사용하여 채팅 앱을 작성하고 싶습니다. 사용자가 백그라운드에서 앱을 넣을 때까지는 아무런 문제가 없습니다.이 경우 앱은 약 10 분 동안 계속 연결되어 시스템에 의해 종료되고 사용자는 새 메시지를받을 수 없습니다.

나는 앱을 유지하기 위해 해킹에 대해 알고 있습니다. info.plist 파일에서 음악 재생 응용 프로그램으로 정의한 다음 빈 사운드를 무기한 재생하는 등의 해킹. 하지만 애플이 앱 스토어에 게시 할 시점에 애플이 앱을 거부 할 것이라는 것도 알고있다.

그래서 일반적으로 다른 앱에서 어떻게 처리합니까? 백그라운드에서 다른 채팅 응용 프로그램이 서버에서 새 메시지를 받기 위해 어떻게 살아있을 수 있습니까? Google 행 아웃, IM + 등의 앱?iOS 채팅 앱은 백그라운드에서 어떻게 계속 실행됩니까?

+0

아이폰 OS 대화에서 모바일 휴대 전화의 핵심 기능이기 때문에 애플은 데몬 모든 시간을 실행합니다. –

답변

3

푸시 알림을 불리는 일부 서버 인프라가 필요가 존재한다

자습서 온라인 수백하는 알림 코드를 구현하는 방법과 그러한 메시지를받을 때 응답하는 방법을 알려줍니다. Image http://www.raywenderlich.com/32960/apple-push-notification-services-in-ios-6-tutorial-part-1

확인 푸시 알림에 대한 심도있는 튜토리얼 아웃 링크! http://maniacdev.com/2011/05/tutorial-ios-push-notification-services-for-beginners

1

몇 가지 해킹이 있지만 앱이 백그라운드에서 진행될 때까지 (더 이상 보장 할 수없는 상태로) 더 많은 시간을 요청할 수 있지만 이는 푸시 알림을위한 완벽한 애플리케이션입니다.

서버에서 전화기에 메시지가 있음을 알리며 iOS가 처리를 위해 앱을 작동시킵니다.

https://developer.apple.com/library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Introduction.html

3

나는 이러한 애플 리케이션의 대부분은 푸시 알림을 사용하고 단지 즉시 응용 프로그램이 열려있는대로 서버에서 마지막 메시지를로드 생각합니다.

+0

나는 ViteZite라고 불리는이 어플리케이션을 똑같이하고 있습니다. 이것이 최고의 표준 솔루션인지 아닌지 알고 싶습니다. 또는 whatsapp 또는 Vibe와 같은 메시징 응용 프로그램이 IOS에서도 동일하게 적용되는지 여부는 알 수 없습니다. – Khay

1

iOS 7부터 새로운 데이터를 주기적으로 가져와야하는 앱의 경우 '백그라운드 가져 오기'모드가 새로 추가되었습니다. 당신의 사건이 그 정의를 충족시키는 것처럼 들립니다.

당신은 iOS App Programming Guide의 정보를 찾을 수 있습니다 -

가져 오기 작은 컨텐츠의 양은 정기적으로

아이폰 OS 7 년 이상에서 요청할 수 네트워크에서 정기적으로 컨텐츠를 검색하는 응용 프로그램 시스템을 백그라운드 실행 시간으로 설정하여 새 콘텐츠를 확인하십시오. Xcode 프로젝트의 기능 탭에있는 백그라운드 모드 섹션에서 백그라운드 페치에 대한 지원을 활성화합니다. ( UIBackgroundModes 키를 앱의 Info.plist 파일 인 파일에 가져 오기 값과 함께 포함 시키면이 지원을 사용할 수 있습니다.) 적절한 시간에 시스템은 배경 모드를 지원하는 앱에 배경 실행을 제공하고 앱을 시작합니다 필요한 경우 배경에 을 직접 입력하십시오. 앱 객체는 application:performFetchWithCompletionHandler: 앱 대리인 메서드를 호출하여 실행 시간을 사용할 수있게되면 알려줍니다.

또한 푸시 알림을 사용할 수 있습니다

,하지만 아이폰 OS 운영 체제가 무언가의 존재를 허용

1

이상적으로는 실제로 백그라운드에서 실행되는 것이 아니라 푸시 알림을 사용하는 것이 이상적입니다.

일부 채팅 클라이언트는 다른 작업을하는 것처럼 보입니다. 적어도 유휴 iOS 기기의 트래픽을 스니핑하여 Google 행 아웃, Facebook 및 Skype 모두가 백그라운드에서 지속적으로 열린 영구 소켓을 유지한다는 것을 확인했습니다. 그것을 유지하기 위해 트래픽을 보내십시오.

저는 Apple의 엄격한 백그라운드 실행 정책에 대해 VoIP 예외를 사용하고있는 것으로 의심됩니다. iOS는 "VoIP 앱"을 백그라운드에서 실행하고 들어오는 호출 및 메시지에 대해 알리도록 하나의 소켓을 열어 둘 수 있습니다.

iOS 7의 새로운 "백그라운드 가져 오기"기능을 사용하고있을 수도 있지만, 알고있는 한 지속적으로 소켓 연결을 허용하지 않을 수 있습니다.

0

백그라운드에서 실행중인 앱에는 기능이 제한되어 있습니다. 앱 상태를 읽고 철저하게 멀티 태스킹을 수행하여 앱을 설계하는 최선의 방법을 결정하십시오. 채팅은보다 완화 된 정책으로 작동 할 수있는 특정 예외 중 하나로 나열되지 않습니다. "[당신의] 앱을 배경으로 영원히 살려 둘 수는 없습니다." 소량의 콘텐츠를 정기적으로 가져 오는이 가이드에서 설명 된 iOS 7 기능을 활용할 수도 있습니다.

iOS 앱 프로그래밍 가이드 : 앱 미국과 멀티 태스킹 https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOS ProgrammingGuide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html

관련 문제