Visual Studio (2015) 내 Android 모바일 에뮬레이터에 배포 할 프로토 타입 Xamarin 양식 앱을 성공적으로 구현했습니다. Google Cloud Messaging을 기본 알림 서비스로 사용하고 있으며 GCM에서 Azure Notification Hub로 수신 한 토큰을 한 번 등록합니다.Microsoft.Azure.MessagingNotificationHub 생성자에 대한 인수가 무시됩니까?
지금까지 모두 정상적으로 작동했습니다.
그러나 일부 지점에서 Azure Messaging Hub의 이름에 실수로 클라이언트 NotificationHub 객체 (Azure Messaging Component라는 Xamarin 구성 요소 사용)를 구성하는 불량 추가 문자가 삽입되었습니다. 푸른 알림 허브
생성자는 3 개 인자
- 알림 허브 이름을 사용 연결 문자열들을
- GCMClient 핸드 쉐이크의 일환으로 OnRegistered 이벤트에 전달 안드로이드 컨텍스트 객체
에뮬레이터에서 응용 프로그램을 삭제하고 새 응용 프로그램을 다시 배포하면 알림이 성공한 것처럼 보이고 장치는 notifi를 수신합니다 첫 번째 생성자 인수에 위조 알림 허브 이름을 넣으면 양이온. 이 인수는 디버깅에 필요한 친숙한 문자열입니까? 잘못된 연결 문자열로 인해 생성자와 등록이 실패하게되었습니다.
다음은 알림의 등록 및 후속 수신을 처리하는 데 사용되는 인 텐트 서비스가 포함 된 OnRegistered 메서드 코드입니다.
protected override void OnRegistered(Context context, string registrationId)
{
Log.Verbose("PushHandlerBroadcastReceiver", "GCM Registered: " + registrationId);
RegistrationID = registrationId;
/** "NHub" is the hub name on Azure rather than bogus value of "NHub-"
In the real code I get this from Constants.HubName
but hardcoding here to highlight the issue of concern
**/
Hub = new NotificationHub("NHub-", Constants.ListenConnectionString, context);
try
{
Hub.UnregisterAll(registrationId);
}
catch (Exception ex)
{
Log.Error(MyBroadcastReceiver.TAG, ex.Message);
}
var tags = new List<string>() { };
try
{
string templateBodyGCM = "{\"data\":{\"message\":\"$(messageParam)\"}}";
var hubRegistration2 = Hub.RegisterTemplate(registrationId, "genericMessage", templateBodyGCM, tags.ToArray());
}
catch (Exception ex)
{
Log.Error(MyBroadcastReceiver.TAG, ex.Message);
}
}
NotificationHub 객체의 API 호출이 단지 등 불투명 한 디버깅을위한 문자열/추적으로 첫 번째 인수를 사용하고 그 값이 푸른 등의 알림 허브 트랜잭션을 설정하는 중요한 아니라고하면 누구나 확인할 수 있습니다 등록 및 알림 수신으로?
매우 유용한 답변, 특히 RESTful API로 직접 이동하여 얻을 수있는 효율성에 대한 귀하의 의견입니다. 제 경우에는 모바일 앱이 앱이 처음 시작될 때 (또는 앱에서 기기를 삭제하고 새로 재설치 한 경우) GCM에서 되돌아 오는 토큰 (registrationid)을 등록합니다. 내가 무슨 일이 일어나고 있는지 볼 수있는 RESTful 호출을 냄새를 맡을 수 있지만 NotificationHub 생성 된 개체가이 등록 단계에 대한 정확한 허브 이름을 필요로하지 않는 것으로 나에게 나타납니다. – retail3r