使用Urban Airship时动态设置推送通知状态

时间:2016-08-19 13:08:35

标签: ios objective-c apple-push-notifications urbanairship.com

我已经设置了我的目标C app Urban Airship用于推送通知,并且可以很好地接收它们。但在我的应用中,用户应该能够删除这些通知,即用户不希望再接收推送消息。我无法弄清楚如何关闭它。

我知道用户可以在设备设置中禁用应用设置中的通知,但在这种特定情况下,这不是理想的解决方案。该应用仍应允许接收通知。

我找到了一些调用方法和设置变量,但没有任何帮助。当我尝试删除注册以获取通知时,我称之为:

[UAirship push].allowUnregisteringUserNotificationTypes = YES;
[UAirship push].userPushNotificationsEnabled = NO;
[UAirship push].backgroundPushNotificationsEnabled = NO;
[[UAirship push] setUserNotificationTypes:(UIUserNotificationTypeNone)];
[[UAirship push] updateRegistration];

任何人都知道这实际上是可能的,或者我必须以不同方式删除吗?

2 个答案:

答案 0 :(得分:0)

您还需要设置requireSettingsAppToDisableUserNotifications才能禁用用户通知。

我们必须防止由于iOS 8中引入的错误而导致禁用通知,如果您禁用通知,则无法重新启动它们(Radar#17878212)。相反,我们建议您仅允许在应用内启用通知,然后为您的用户提供link to the settings以便轻松禁用它们。它不理想,但它避免了这个错误。

看起来它最终在iOS 10中得到了修复,因此我们的SDK 8.0.0 for iOS 10支持将允许禁用类型而不需要任何额外的标记或麻烦。

答案 1 :(得分:0)

只需使用以下代码:

public partial class Order
{
    private OrderOrderData orderDataField;

    public OrderOrderData OrderData
    {
        get
        {
            return this.orderDataField;
        }
        set
        {
            this.orderDataField = value;
        }
    }
}

public partial class OrderOrderData
{
    private OrderOrderDataOfferOrder[] offerOrderField;

    public OrderOrderDataOfferOrder[] OfferOrder
    {
        get
        {
            return this.offerOrderField;
        }
        set
        {
            this.offerOrderField = value;
        }
    }
}