У меня есть приложение Xamarin.iOS, которое может успешно получать уведомление Push APNS, когда приложение работает на переднем плане. Тем не менее, я также хочу иметь возможность обрабатывать push-уведомление, когда приложение работает в фоновом режиме или вообще не работает.Удаленные уведомления, когда приложение находится на переднем плане, но не в фоновом режиме
Эта страница на Xamarin, кажется, сказать, что вы действительно можете сделать это:
Я использую стратегию Дистанционные уведомлений, описанной выше. Поэтому я реализовал именно то, что он сказал, включая изменение info.plist, чтобы иметь удаленные уведомления в качестве фоновой операции. Тем не менее, я не получаю никаких вызовов в обратном вызове DidFinishedLaunching или ReceivedRemoteNotification, когда приложение работает в фоновом режиме. Когда приложение работает на переднем плане, все работает нормально. Излишне говорить, что это супер разочаровывает.
Неужели кто-нибудь еще сталкивается с этой проблемой?
Любая помощь очень ценится!
Вот код, я использую для регистрации удаленных уведомлений:
public static void NotifyAppStart()
{
if (GetRemoteWipePreference())
{
if (Utils.CheckOsVersion(8, 0))
{
// iOS 8 version
UIUserNotificationSettings settings = UIUserNotificationSettings.GetSettingsForTypes(UIUserNotificationType.Alert | UIUserNotificationType.Badge | UIUserNotificationType.Sound, new NSSet());
UIApplication.SharedApplication.RegisterUserNotificationSettings(settings);
UIApplication.SharedApplication.RegisterForRemoteNotifications();
}
else
{
// Only works on iOS 7 and earlier
UIRemoteNotificationType notificationTypes = UIRemoteNotificationType.Alert | UIRemoteNotificationType.Badge | UIRemoteNotificationType.Sound;
UIApplication.SharedApplication.RegisterForRemoteNotificationTypes(notificationTypes);
}
}
}
А вот код PushSharp Я использую для отправки уведомления толчка на стороне сервера:
push.RegisterAppleService(new ApplePushChannelSettings(appleCert, GetApplePwd() ));
push.QueueNotification(new AppleNotification()
.ForDeviceToken(token).WithContentAvailable(1)
.WithCustomItem(msg, device.device_local_guid) );
Замечание: Есть несколько других вопросов о переполнении стека об этой общей области, но ни одна из них на самом деле об этой проблеме.
Вы тестирование в симуляторе? Если да, в симуляторе SDK8 есть ошибка, которая не позволяет приложениям быть в действительности. – Krumelur
Nope - тестирование на устройстве (iPhone 6) – jbro91837