Xamarin Forms iOS设备赢得';我不能接受城市飞艇的推力

Xamarin Forms iOS设备赢得';我不能接受城市飞艇的推力,ios,xamarin,xamarin.forms,urbanairship.com,Ios,Xamarin,Xamarin.forms,Urbanairship.com,我有一个Xamarin表单应用程序,无法在iOS中获得推送通知。它们在安卓系统中运行良好。该设备使用其SDK v4.1.0在城市飞艇上正确注册。我可以得到一个ChannelId和一个设备令牌。当我在Dev频道上发送推送时,安卓设备会收到通知,但iOS设备不会。在城市飞艇上,完整的消息报告显示消息被发送到了Android设备和我测试过的两台iOS设备上。我肯定我错过了一些小东西,但我不知道是什么。以下是作为参考的应用程序委托的来源。从我所看到的例子来看,这是非常直接的 using System;

我有一个Xamarin表单应用程序,无法在iOS中获得推送通知。它们在安卓系统中运行良好。该设备使用其SDK v4.1.0在城市飞艇上正确注册。我可以得到一个ChannelId和一个设备令牌。当我在Dev频道上发送推送时,安卓设备会收到通知,但iOS设备不会。在城市飞艇上,完整的消息报告显示消息被发送到了Android设备和我测试过的两台iOS设备上。我肯定我错过了一些小东西,但我不知道是什么。以下是作为参考的应用程序委托的来源。从我所看到的例子来看,这是非常直接的

using System;
using System.Collections.Generic;
using System.Linq;

using Foundation;
using UIKit;
using UrbanAirship;

namespace -----------.Mobile.iOS
{
    [Register("AppDelegate")]
    public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
    {
        public override bool FinishedLaunching(UIApplication app, NSDictionary options)
        {
            global::Xamarin.Forms.Forms.Init();

            UAConfig config = new UrbanAirship.UAConfig();
            config.DevelopmentAppKey = "----------------------";
            config.DevelopmentAppSecret = "----------------------";
            config.ProductionAppKey = "----------------------";
            config.ProductionAppSecret = "----------------------";

#if DEBUG
            config.InProduction = false;
#else
            config.InProduction = true
#endif
            UAirship.TakeOff(config);
            UAirship.Push.UserPushNotificationsEnabled = true;
            UAirship.Push.ChannelTagRegistrationEnabled = true;

            // Write the ChannelId for reference later.

            Guid urbanAirshipChannelId;
            UrbanAirshipData uaData = new UrbanAirshipData();
            if (Guid.TryParse(UAirship.Push.ChannelID, out urbanAirshipChannelId))
            {   
                uaData.UrbanAirshipChannelId = urbanAirshipChannelId;
                uaData.UrbanAirshipDeviceType = Common.Utilities.Enumerations.eUrbanAirshipDeviceType.iOS;
            }
            UAirship.Push.PushNotificationDelegate = PushReceived();


            LoadApplication(new App(uaData));

            return base.FinishedLaunching(app, options);
        }

        private UAPushNotificationDelegate PushReceived()
        {
            UAPushNotificationDelegate result = new UAPushNotificationDelegate();

            return result;
        }



    }
}

如有任何反馈或想法,将不胜感激

UAirship.Push.PushNotificationDelegate=PushReceived();
,城市飞艇代表存在一个问题,他们没有存储对代表的强烈引用-

但是,这不会导致设备无法接收推送。默认情况下,如果应用程序位于前台,则推送接收时不会发生任何事情。它将在后台发布通知。您可以通过在iOS 10的UAPush实例上设置默认前台通知选项来修改该行为


如果你仍在努力接受推送,我会联系城市飞艇支持部门或在github上发布问题。需要完整的日志。

UAirship.Push.PushNotificationDelegate=PushReceived();
,城市飞艇代表存在一个问题,他们没有存储对代表的强烈引用-

但是,这不会导致设备无法接收推送。默认情况下,如果应用程序位于前台,则推送接收时不会发生任何事情。它将在后台发布通知。您可以通过在iOS 10的UAPush实例上设置默认前台通知选项来修改该行为


如果你仍在努力接受推送,我会联系城市飞艇支持部门或在github上发布问题。需要完整的日志。

对我来说,问题是我在前台使用应用程序进行测试,而iOS没有在应用程序运行时显示通知。我必须添加以下内容才能使其在前台工作并发出声音

UAirship.Push.DefaultPresentationOptions = UserNotifications.UNNotificationPresentationOptions.Alert | UserNotifications.UNNotificationPresentationOptions.Sound;

对我来说,问题在于我在前台使用应用程序进行测试,而iOS没有在应用程序运行时显示通知。我必须添加以下内容才能使其在前台工作并发出声音

UAirship.Push.DefaultPresentationOptions = UserNotifications.UNNotificationPresentationOptions.Alert | UserNotifications.UNNotificationPresentationOptions.Sound;

谢谢你的回复。我有个问题。iOS中的预期行为是否如下所示?当某个应用程序正在前台运行并收到推送时,该设备不会通知用户,但该通知将与其他通知一起列出?此外,您还提到可以在UAPush实例中更改这一点。我一直在看通知列表,当我试图推,但没有看到任何东西。我想我可能不得不发布一个问题。我已经联系了UA,但我们客户的服务水平没有得到支持。苹果认为该应用程序可以处理推送,并且在iOS 10之前不会发布任何通知。现在,它们允许设置前景显示选项。您可以在此处设置默认值-。他们可能会让你在社区论坛上发帖,但他们反应很快。谢谢。我将把这作为我的下一步。感谢您的反馈。我如何获得在城市飞艇上发布所需的完整日志。通过在飞艇配置选项中设置日志级别来启用详细日志记录。然后复制控制台输出。请确保您没有发布应用程序凭据或任何私人信息。感谢您的回复。我有个问题。iOS中的预期行为是否如下所示?当某个应用程序正在前台运行并收到推送时,该设备不会通知用户,但该通知将与其他通知一起列出?此外,您还提到可以在UAPush实例中更改这一点。我一直在看通知列表,当我试图推,但没有看到任何东西。我想我可能不得不发布一个问题。我已经联系了UA,但我们客户的服务水平没有得到支持。苹果认为该应用程序可以处理推送,并且在iOS 10之前不会发布任何通知。现在,它们允许设置前景显示选项。您可以在此处设置默认值-。他们可能会让你在社区论坛上发帖,但他们反应很快。谢谢。我将把这作为我的下一步。感谢您的反馈。我如何获得在城市飞艇上发布所需的完整日志。通过在飞艇配置选项中设置日志级别来启用详细日志记录。然后复制控制台输出。确保您没有发布应用程序凭据或任何私人信息。