Production APNS 인증서를 사용하여 APNS가 프로덕션 모드로 구성된 Azure Notification Hub가 설정되었습니다. 우리는 테스트 장치를 TestFlight/Production 빌드 및 인증서를 사용하여 APNS에 등록한 다음 dealer-1
태그를 사용하여 ANH에 등록합니다. APNS를 직접 사용할 때 생산 인증서와 등록 된 장치 ID를 사용하여 알림을 보낼 수 있지만 '테스트 보내기'를 사용하면 1 대의 장치 (또는 등록한 많은 장치)에 '보내기 성공'메시지가 전송됩니다. 알림을받지 못했습니다. 'Test Send'를 다시 실행하면 0 개의 장치로 보내집니다.Push (APNS) 후 알림 허브 장치가 사라짐
로그에 테스트 당 전송 당 'APNS 오류'가 표시됩니다. 오류가 실제로 무엇인지를 볼 수있는 방법을 찾을 수 없으므로 이것은 절대적으로 쓸모없는 척도입니다.
나는 모든 문제 해결 단계를 거쳤으며 여러 번 '생산'에 모든 것이 설정되었음을 확인했습니다.
- .. 샌드 박스 인증서를 등록하고 생산에 변경 : 는 답변의 라인을 따라왔다, 다른 질문을 검토 데. 불행히도 우리는 이러한 잠재적 인 문제를 해결하기 위해 Production으로 처음부터이 허브를 만들었습니다.
- .. 샌드 박스 장치 (및 토큰)를 프로덕션 인증서에 등록합니다. 불행하게도 저는 이것을 엄격히 통제했으며 우리가 ANH에 대한 TestFlight 빌드 (따라서 Production)만을 등록하도록했습니다.
- .. 잘못된 인증서를 업로드하고 있습니다. 위의 푸시 알림 테스터에서 인증서가 정확하고 (지문 확인, 다시 업로드 등) 프로덕션 APNS 끝점을 통해 장치로 보내도록 확인했습니다.
리소스 이름은 다음 여덟 기술/반응 푸시 통지 허브
다음인앱 등록 과정은 다음과 푸시 알림
- 장치 레지스터를
등록 이벤트는 iOS 프로젝트 (AppDelegate 이벤트)에서 처리됩니다 ..
public override void RegisteredForRemoteNotifications(UIApplication application, NSData deviceToken) { //base.RegisteredForRemoteNotifications(application, deviceToken); App.ConfigurePushNotifications(deviceToken.ToString()); }
ConfigurePushNotifications이
public static void ConfigurePushNotifications(string deviceToken) { var azureComm = DependencyService.Get<Interop.IAzureCommunication>(); azureComm.RegisterForPushTags( "sb://eight-technology.servicebus.windows.net/", ".. token ..", "react-push-notification-hub", deviceToken, StateManager.SelectedNodes.Select(m => "dealer-" + m).ToArray()); }
- 이 구현은
public class AzureCommunication : DealerwebReact.Interop.IAzureCommunication { public void RegisterForPushTags(string url, string key, string hubName, string deviceToken, string[] tags) { var cs = SBConnectionString.CreateListenAccess(new NSUrl(url), key); var hub = new SBNotificationHub(cs, hubName); hub.RegisterNativeAsync(deviceToken, new NSSet(tags), err => { if (err != null) Console.WriteLine("Error: " + err.Description); else Console.WriteLine("Success"); }); } }
감사 니키타 - 그건 내가 약 연주 가이드이었다 예. 내 코드는 약간의 코드로 업데이트 하겠지만, APN 토큰을 전혀 조작하지는 않는다. 클래스에 NSString으로 전달된다. 로그를 기록 할 때 APNS Tester에서 사용할 수있는 정확한 내용으로 믿어지는 '<... ... ...>'형식입니다. 전혀 바뀌어야합니까? –
코드 제공 - 등록과 관련하여 상당히 솔직합니다. 어떤 아이디어라도 대단히 감사하겠습니다. 장치 토큰의 예 :'<97e0614c 3c18b3d7 a8d5274b ca7037dc 3e00e703 635d5172 3c755d9c 8616f375> –
@RudiVisser 지금까지 질문을 보지 못했습니다. 실제로는 이하와 같은 문자와 공백을 제거합니다 :'deviceToken.ToString(). Replace ("<", string.Empty) .Replace (">", string.Empty) .Replace (" ", string.Empty); ' – hvaughan3