Я знаю, что этот вопрос задают несколько раз. Так что терпите меня здесь.
Я пытаюсь внедрить Azure Центр уведомлений с моими Android / iOS клиентами, использующими Xamarin Forms.
Для Android все идет нормально, но для iOS Я не получаю никаких уведомлений.
Вот контрольный список того, что я сделал для iOS
- Сгенерировал сертификаты и профили
- Зарегистрировал сертификат с MacOS
- Экспортировал файл p12 и импортировал в Azure Hub
- Я также добавил разрешения в Info.plist (фоновое удаленное уведомление)
- Нет изменений в файле Entitlements.plist
- Я могу получить токен устройства из службы APN
- Я могу зарегистрироваться в Azure Hub после получения токена
Но я не могу получить любое уведомление, а также ни одна из функций не называется (DidRegisterUserNotificationSettings,WillPresentNotification,ReceivedRemoteNotification,DidRegisterUserNotificationSettings,FailedToRegisterForRemoteNotifications,DidReceiveRemoteNotification)
Но RegisteredForRemoteNotifications
называется
Я также проверил токен устройства с или без удаления '<> '
из него, но безуспешно.
В чем может быть проблема?
Вот мой код
public override void RegisteredForRemoteNotifications(UIApplication application, NSData deviceToken)
{
GlobalVariables.Instance.PnsToken = deviceToken.Description
.Replace("<", string.Empty)
.Replace(">", string.Empty)
.Replace(" ", string.Empty)
.ToUpper();
RegisteredForHub(application, deviceToken);
}
public void RegisteredForHub(UIApplication application, NSData deviceToken)
{
string pnsHandle = deviceToken.Description
.Replace("<", string.Empty)
.Replace(">", string.Empty)
.Replace(" ", string.Empty)
.ToUpper();
_hub = new SBNotificationHub(Constant.ListenConnectionString, Constant.NotificationHubName);
_hub.UnregisterNative((error) =>
{
if (error != null)
{
Debug.WriteLine($"Unable to call unregister Native {error}");
}
});
_hub.UnregisterTemplate("defaultTemplate",(error) =>
{
if (error != null)
{
Debug.WriteLine($"Unable to call unregister Template {error}");
}
});
// update registration with Azure Notification Hub
_hub.UnregisterAll(deviceToken, (error) =>
{
if (error != null)
{
Debug.WriteLine($"Unable to call unregister {error}");
return;
}
var tags = new NSSet(Constant.SubscribeTags);
_hub.RegisterNative(pnsHandle, tags, (errorCallback) =>
{
if (errorCallback != null)
{
Debug.WriteLine($"RegisterNativeAsync error: {errorCallback}");
}
});
var templateExpiration = DateTime.Now.AddDays(120)
.ToString(System.Globalization.CultureInfo.CreateSpecificCulture("en-US"));
//_hub.RegisterTemplate(deviceToken, "defaultTemplate", Constant.ApnTemplateBody, templateExpiration,
// tags, (errorCallback) =>
// {
// if (errorCallback != null)
// {
// Debug.WriteLine($"RegisterTemplateAsync error: {errorCallback}");
// }
// });
});