首页 > 解决方案 > Xamarin 表单切换如何记住和更新用户设置(推送通知)

问题描述

我正在开发一个项目/设置页面,该页面在 Xamarin Forms 中有一个切换/开关。我正在使用 xamarin Essentials 来存储用户数据等。

目标是让开关/切换在用户进行更改时保存切换的位置。并将此绑定/绑定到应用程序设置。我已经安装了推送通知,但是我想为用户提供取消订阅或再次订阅的选项。

基于此处的 OneSignals 文档:https ://documentation.onesignal.com/docs/xamarin-sdk#section--setsubscription-

这允许 SetSubscription 为真或假。OneSignal.SetSubscription(false);

这是我的 SettingsPage.xaml

<Switch IsToggled="True"  Toggled="OnToggled" />

这是我的 SettingsPage.xaml.cs

void OnToggled(object sender, ToggledEventArgs e)
        {

            // Perform an action after examining e.Value

        }

我的目标是设置一些应用程序属性并将其放置在 App.xaml.cs 中,以便在应用程序启动时启用并根据应用程序是否包含以下键来启用或禁用通知进行更改。

这是我的 App.xaml.cs

public App()
        {
            InitializeComponent();


             if (Application.Current.Properties.ContainsKey("PushDisabled"))
            {
                //Do things when push is disabled...
                OneSignal.SetSubscription(false);
                Xamarin.Essentials.Preferences.Set("SetSubcription", false);
            }
            else
            {
                Application.Current.Properties["PushDisabled"] = false;
                //Do things when push is enabled...
                OneSignal.SetSubscription(true);
                Xamarin.Essentials.Preferences.Set("SetSubcription", true);
            }

            OneSignal.Current.StartInit("one-signal-key").EndInit();

        }

注意:OneSignal.SetSubscription(false); 也会导致此错误:“OneSignal”不包含“SetSubscription”的定义。

这令人困惑,因为它确实在这里引用了它:https ://documentation.onesignal.com/docs/xamarin-sdk#section--setsubscription-

我需要帮助创建正确的代码以在用户禁用通知时实际设置密钥,并在用户单击切换/再次切换到活动时将其设置回启用状态。

感谢您提供任何帮助或建议,StackOverflow 社区对我查看其他问题非常有帮助,但是可以找到有关此主题的任何内容...

标签: c#androidiosxamarinxamarin.forms

解决方案


OneSignal.Current.StartInit("app-id-code-here").EndInit();

if (!Application.Current.Properties.ContainsKey("PushDisabled"))
{
    //Prepare notification for first time.
    App.Current.Properties.Add("PushDisabled", false);
    App.Current.SavePropertiesAsync();

    Xamarin.Essentials.Preferences.Set("SetSubcription", true);

    OneSignal.Current.SetSubscription(true);
}

推荐阅读