iPhone 애플리케이션없이 Apple Push Notification Services를 테스트 할 수 있습니까? (Windows에서 에뮬레이터를 만드시겠습니까?)
그렇지 않은 경우 어떻게 테스트 할 수 있습니까? 이를 위해 컴파일 된 무료 샘플 애플리케이션이 있습니까?
서버 공급자를 만들었지 만 기능을 테스트해야합니다.
iPhone 애플리케이션없이 Apple Push Notification Services를 테스트 할 수 있습니까? (Windows에서 에뮬레이터를 만드시겠습니까?)
그렇지 않은 경우 어떻게 테스트 할 수 있습니까? 이를 위해 컴파일 된 무료 샘플 애플리케이션이 있습니까?
서버 공급자를 만들었지 만 기능을 테스트해야합니다.
답변:
이 답변은 구식 입니다. 2020 / Xcode 11.4부터 시뮬레이터에서 푸시 알림을 테스트 할 수 있습니다.
아래 답변 에서 전체 설명을 참조하십시오.
죄송합니다.이 기능을 테스트하려면 하드웨어를 찾아야합니다.
시뮬레이터에서는 푸시 알림을 사용할 수 없습니다. iTunes Connect의 프로비저닝 프로파일이 필요하므로 장치에 설치해야합니다. 그것은 또한 당신이 아마도 애플 아이폰 개발자 프로그램에 가입하고 $ 99를 지불해야한다는 것을 의미합니다.
밝은면에서는 iPhone OS 3.0 업데이트를 통해 1 세대 iPhone을 포함한 모든 장치에서이 기능을 테스트 할 수 있습니다.
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.
실제 푸시 알림은 테스트 할 수 없습니다. 그러나 프로그래밍 방식으로 하나를 만들고 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를 만들어야합니다.
현재 엑스 코드 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"
}
}
이것을 대상 시뮬레이터로 드래그 앤 드롭하면 알림이 표시되고 배지가 설정됩니다.
이제 디버깅을 위해 이것을 사용하기 만해야 을 변경 Simulator Target Bundle
하여 자신의 응용 프로그램의 식별자 와 페이로드를 조정 하여 디버깅 요구에!
didReceiveLocalNotification
(시뮬레이션 목적으로) 사용해 보셨습니까 ? 그 외에 : 아마도 UserNotifications
프레임 워크에서 제공하는 메소드를 사용해야합니다 . 나는 ... 그 의지 일 것 같아요
시뮬레이터는 푸시 알림을 수행하지 않습니다.
그리고 서버에서 푸시하려면 푸시 할 디바이스와 해당 디바이스의 앱이 있어야합니다.
토큰에는 앱 ID와 기기 ID가 포함됩니다.
Apple은 시뮬레이터에 대한 푸시 알림을 지원합니다. iOS 13.4 이상 또는 Xcode 11.4 이상.
일반적으로 Xcode 프로젝트를 만들고 사용자 알림 및 권한 부여 권한을 구현합니다.
시뮬레이터 iOS 13.4 이상 에서 애플리케이션을 실행합니다 .
애플리케이션을 백그라운드에 둡니다.
{
"aps": {
"alert": {
"title": "Test Push",
"body": "Success! Push notification in simulator! 🎉",
"sound": "default"
},
"badge": 10
},
"Simulator Target Bundle": "com.company.app"
}
지금 당신의 푸시 알림이 시뮬레이터에 나타날 것입니다.
또한 터미널별로 푸시 알림을 시뮬레이션 할 수 있습니다.
Window-> Devices and Simulators 를 열어 시뮬레이터 식별자를 얻고 대상 시뮬레이터를 선택한 다음 마우스 오른쪽 버튼을 클릭하고 식별자를 복사합니다.
이제 다음과 같은 터미널 명령을 작성하십시오.
xcrun simctl push <simulator-identifier> <path-to-payload-file>
전의:
xcrun simctl push 27A23727-45A9-4C12-BE29-8C0E6D1E5360 payload.apns
이 명령을 실행하고 시뮬레이터에서 푸시 알림을 시뮬레이션하십시오.
당신은 사용해야합니다
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];
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
@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
예, 시뮬레이터에서 푸시 알림을 확인할 수 있지만 앱에서 SimulatorRemoteNotifications 라는 라이브러리를 사용해야합니다 . 4-5 단계 만 사용하면 시뮬레이터에서 푸시 알림을 테스트 할 수 있습니다.
또한 POD도 제공합니다.
pod 'SimulatorRemoteNotifications', '~> 0.0.3'
이제 매우 강력한 lib https://github.com/ctreffs/SwiftSimctl 이있는 것 같습니다.
적어도 SimulatorRemoteNotifications
여기에 언급 된 lib보다 훨씬 더 강력 합니다. 그리고 그것은 또한 쓸모가 없습니다.