iPhone없이 Apple 푸시 알림 서비스를 테스트하려면 어떻게해야합니까?


78

iPhone 애플리케이션없이 Apple Push Notification Services를 테스트 할 수 있습니까? (Windows에서 에뮬레이터를 만드시겠습니까?)

그렇지 않은 경우 어떻게 테스트 할 수 있습니까? 이를 위해 컴파일 된 무료 샘플 애플리케이션이 있습니까?

서버 공급자를 만들었지 만 기능을 테스트해야합니다.


1
베스트 답변을 업데이트 할 때입니다. 내 대답의 라이브러리는 매우 유용합니다 .'acoomans '에게 감사드립니다!
kaspartus jul.

시뮬레이터를 사용하여 페이로드를 테스트 할 수 있습니다. 시뮬레이터에 버그가 있지만 여전히 mutable-content키 를 인식하지 못하는 것 같습니다 . 여기를
Honey

답변:


79

이 답변은 구식 입니다. 2020 / Xcode 11.4부터 시뮬레이터에서 푸시 알림을 테스트 할 수 있습니다.

아래 답변 에서 전체 설명을 참조하십시오.

죄송합니다.이 기능을 테스트하려면 하드웨어를 찾아야합니다.

시뮬레이터에서는 푸시 알림을 사용할 수 없습니다. iTunes Connect의 프로비저닝 프로파일이 필요하므로 장치에 설치해야합니다. 그것은 또한 당신이 아마도 애플 아이폰 개발자 프로그램에 가입하고 $ 99를 지불해야한다는 것을 의미합니다.

밝은면에서는 iPhone OS 3.0 업데이트를 통해 1 세대 iPhone을 포함한 모든 장치에서이 기능을 테스트 할 수 있습니다.


2
나는 같은 문제를 만났는데, 당신은 질문의 두 번째 부분에 대해 말하는 것이 명확하지 않습니다. If isn't, how could I test that? Is there a free sample application compiled to do that? I created the Server provider, but I need test the functionallity.
JackLeo

시뮬레이터의 푸시 알림 지원을위한 튜토리얼 링크입니다. medium.com/swlh/…
Hardik Vyas

하지만 좋은 소식이 있습니다. Xcode 11.4 베타가 출시되었으며이 릴리스의 가장 좋은 점은 iOS 시뮬레이터에서 푸시 알림을 마침내 테스트 할 수 있다는 것입니다! 샘플 구현은 다음 - medium.com/better-programming/...은
Rajath Kornaya

56

실제 푸시 알림은 테스트 할 수 없습니다. 그러나 프로그래밍 방식으로 하나를 만들고 AppDelegate의 메서드를 수동으로 트리거하여 시뮬레이션 된 푸시 알림에 대한 앱의 응답 을 테스트 할 수 있습니다 - application:application didReceiveRemoteNotification:notification.

다른 클래스 (예 : UIViewController)에서이를 트리거하려면 :

[[[UIApplication sharedApplication] delegate]
                    application:[UIApplication sharedApplication]
   didReceiveRemoteNotification:testNotification];

testNotification은 실제 알림과 동일한 형식이어야합니다. 즉, 속성 목록 개체와 NSNull이 포함 된 NSDictionary입니다.

testNotification위의 정보 를 제공하는 방법의 예는 다음과 같습니다 .

NSMutableDictionary *notification = [[NSMutableDictionary alloc] init];
[notification setValue:@"Test" forKey:@"alert"];
[notification setValue:@"default" forKey:@"sound"];

NSMutableDictionary *testNotification = [[NSMutableDictionary alloc] init];
[testNotification setValue:notification forKey:@"aps"];

작업 할 합리적인 알림 NSDictionary를 만들어야합니다.


1
어딘가에 이것의 샘플 구현이 있습니까?
mirageservo 2013 년

나는 하나가 없습니다 (내 테스트 구현은 위에서 제안한 것을 실제로 수행해야하지만 다른 경로를 취합니다). 내가 생각하는 고전적인 "내가 말한대로하지 말고"시나리오.
Jamon Holmgren 2013 년

1
이것은 좋은 대답입니다.
Kwnstantinos Nikoloutsos

30

요즘에는 이 라이브러리로 푸시 알림을 테스트 할 수 있습니다 .

터미널을 통해 푸시를 보내는 것은 매우 쉽습니다.

echo -n '{"message":"message"}' | nc -4u -w1 localhost 9930

echo -n '{"aps":{"alert" : "message","badge" : 99,"sound" : "default"}, "myField" : 54758}' | nc -4u -w1 localhost 9930

18

Xcode 11.4 iOS 시뮬레이터를 사용하여 푸시 알림 테스트

현재 엑스 코드 11.4 ,으로 푸시 알림을 시뮬레이션 할 수있게되었습니다 드래그 앤 드롭.apns 아이폰 OS 시뮬레이터에 파일을. 엑스 코드 11.4 릴리스 노트는 새로운 기능에 대해 할 말이 다음을 가지고 :

Simulator는 백그라운드 콘텐츠 가져 오기 알림을 포함한 원격 푸시 알림 시뮬레이션을 지원합니다. Simulator에서 APNs 파일을 대상 시뮬레이터로 끌어다 놓습니다 . 파일은 "aps"키를 포함하여 유효한 Apple Push Notification Service 페이로드가있는 JSON 파일이어야합니다 . 또한 최상위 "시뮬레이터 대상 번들"을 포함해야합니다. 대상 응용 프로그램의 번들 식별자와 일치하는 문자열 값이있는 을 .

simctl시뮬레이션 된 푸시 알림 전송도 지원합니다. 파일에 "Simulator Target Bundle"이 포함 된 경우 번들 식별자가 필요하지 않습니다. 그렇지 않으면 인수로 제공해야합니다 (8164566).

xcrun simctl push <device> com.example.my-app ExamplePush.apns

다음은 .apns시스템 설정 앱을 대상으로하는 이러한 파일 의 예입니다 .

{
    "Simulator Target Bundle": "com.apple.Preferences",
    "aps": {
        "alert": "This is a simulated notification!",
        "badge": 3,
        "sound": "default"
    }
}

이것을 대상 시뮬레이터로 드래그 앤 드롭하면 알림이 표시되고 배지가 설정됩니다.

iOS 시뮬레이터에 대한 알림

이제 디버깅을 위해 이것을 사용하기 만해야 을 변경 Simulator Target Bundle하여 자신의 응용 프로그램의 식별자페이로드를 조정 하여 디버깅 요구에!


아직 릴리스 버전이 아닙니다
MeLine

1
좋아,하지만 이것은 didReceiveRemoteNotification을 트리거하지 않습니까? 메시지를 탭해도 아무것도 얻을 수 없습니다.
Lukasz Ciastko

didReceiveLocalNotification(시뮬레이션 목적으로) 사용해 보셨습니까 ? 그 외에 : 아마도 UserNotifications프레임 워크에서 제공하는 메소드를 사용해야합니다 . 나는 ... 그 의지 일 것 같아요
fredpi

OneSignal 푸시 알림을 사용하여 이것을 시뮬레이션하는 방법을 알고 있습니까?
axumnemonic

@ mnemonic23이 방법을 통해 들어오는 OneSignal 알림의 처리를 테스트하려면 OneSignal 푸시 알림 페이로드가 어떻게 생겼는지 확인하고 정확한 페이로드를 복제해야합니다. 그러나 이것이 의미가있는 시나리오는 생각할 수 없습니다. 앱의 페이로드 처리를 테스트하려면 OneSignal 전달 메커니즘과는 독립적입니다. OneSignal 전달 메커니즘이 작동하는지 테스트하려면이 lokal push mocking이 도움이되지 않습니다.
fredpi 20.07.02

6

시뮬레이터는 푸시 알림을 수행하지 않습니다.

그리고 서버에서 푸시하려면 푸시 할 디바이스와 해당 디바이스의 앱이 있어야합니다.

토큰에는 앱 ID와 기기 ID가 포함됩니다.


4

Apple은 시뮬레이터에 대한 푸시 알림을 지원합니다. iOS 13.4 이상 또는 Xcode 11.4 이상.

일반적으로 Xcode 프로젝트를 만들고 사용자 알림 및 권한 부여 권한을 구현합니다.

시뮬레이터 iOS 13.4 이상 에서 애플리케이션을 실행합니다 .

애플리케이션을 백그라운드에 둡니다.

  1. " payload.apns " 라는 이름의 APNS 페이로드 파일을 만듭니다.
{
  "aps": {
    "alert": {
      "title": "Test Push",
      "body": "Success! Push notification in simulator! 🎉",
      "sound": "default"
    },
    "badge": 10
  },
  "Simulator Target Bundle": "com.company.app"
}
  1. iOS 시뮬레이터로 드래그 앤 드롭합니다.

지금 당신의 푸시 알림이 시뮬레이터에 나타날 것입니다.

또한 터미널별로 푸시 알림을 시뮬레이션 할 수 있습니다.

Window-> Devices and Simulators 를 열어 시뮬레이터 식별자를 얻고 대상 시뮬레이터를 선택한 다음 마우스 오른쪽 버튼을 클릭하고 식별자를 복사합니다.

이제 다음과 같은 터미널 명령을 작성하십시오.

xcrun simctl push <simulator-identifier> <path-to-payload-file>

전의:

xcrun simctl push 27A23727-45A9-4C12-BE29-8C0E6D1E5360 payload.apns

이 명령을 실행하고 시뮬레이터에서 푸시 알림을 시뮬레이션하십시오.


3

당신은 사용해야합니다

NSString *notificationString = @"{\"aps\":{\"alert\":\"Test alert\",\"sound\":\"default\"}}";

NSData *notificationData = [notificationString dataUsingEncoding:NSUTF8StringEncoding];

NSDictionary *testNotification = [NSJSONSerialization JSONObjectWithData:notificationData options:0 error:&error];

[[[UIApplication sharedApplication] delegate] application:[UIApplication sharedApplication] didReceiveRemoteNotification:testNotification  fetchCompletionHandler:nil];

3

Xcode 11.4 베타가 Simulator에서 푸시 알림 지원 시작

Simulator는 백그라운드 콘텐츠 가져 오기 알림을 포함하여 원격 푸시 알림 시뮬레이션을 지원합니다. Simulator에서 APNs 파일을 대상 시뮬레이터로 끌어다 놓습니다. 파일은 "aps"키를 포함하여 유효한 Apple Push Notification Service 페이로드가있는 JSON 파일이어야합니다. 또한 대상 응용 프로그램의 번들 식별자와 일치하는 문자열 값이있는 최상위 "시뮬레이터 대상 번들"을 포함해야합니다.

simctl은 시뮬레이션 된 푸시 알림 전송도 지원합니다. 파일에 "Simulator Target Bundle"이 포함 된 경우 번들 식별자가 필요하지 않습니다. 그렇지 않으면 인수로 제공해야합니다 (8164566).

$ xcrun simctl push <device> com.example.my-app ExamplePush.apns

릴리스 정보 : https://developer.apple.com/documentation/xcode_release_notes/xcode_11_4_beta_release_notes


일주일 전에 제공된 더 명확하고 간결한 답변 과 중복됩니다 .
Mark

2

@fredpi의 답변 외에도 Poes 명령 줄 도구 를 사용할 수도 있습니다 . 이를 통해 JSON 페이로드 파일을 생성하는 번거 로움없이 iOS 시뮬레이터에서 원격 푸시 알림을 빠르게 테스트 할 수 있습니다.

Poes --help
OVERVIEW: A Swift command-line tool to easily send push notifications to the iOS simulator

USAGE: Poes <options>

OPTIONS:
  --body, -b            The body of the Push Notification
  --bundle-identifier   The bundle identifier to push to
  --mutable, -m         Adds the mutable-content key to the payload
  --title, -t           The title of the Push Notification
  --verbose             Show extra logging for debugging purposes
  --help                Display available options

다음 명령은 기본 제목과 본문이있는 간단한 푸시 알림을 보내기에 충분할 수 있습니다.

$ Poes --bundle-identifier com.wetransfer.app --verbose
Generated payload:

{
  "aps" : {
    "alert" : {
      "title" : "Default title",
      "body" : "Default body"
    },
    "mutable-content" : false
  }
}

Sending push notification...
Push notification sent successfully

1

예, 시뮬레이터에서 푸시 알림을 확인할 수 있지만 앱에서 SimulatorRemoteNotifications 라는 라이브러리를 사용해야합니다 . 4-5 단계 만 사용하면 시뮬레이터에서 푸시 알림을 테스트 할 수 있습니다.

또한 POD도 제공합니다.

pod 'SimulatorRemoteNotifications', '~> 0.0.3'

더 설명 해주세요!
Negar Moshtaghi

2
@NegarMoshtaghi 내가 제공 한 링크를 열어 사용 방법과 작동 방법 등 전체 프로세스가 있습니다.
Sagar Shirbhate 2010 년

이 라이브러리는 5-6 년 된 것입니다. 여전히 작동합니까?
Mark Han

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.