c# - 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 社区对我查看其他问题非常有帮助,但是可以找到有关此主题的任何内容...
解决方案
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);
}
推荐阅读
- javascript - 这两个是一样的吗?
- json - 为多个 json 文件创建单个 flatbuffer 或连接从 json 创建的多个 flatbuffer
- c++ - 如何在 C++ 中使用 pybind11 加载腌制的 Python 列表
- python - 查找当前时间是否比我进入变量的时间多 72 小时
- typescript - 在 DynamoDB 输出中使用类型
- linux - 将 .net core 3.1 Web 应用部署到 Azure Linux 应用服务
- jpa - JPA 2.2:哪一个是要添加到项目中的 API 工件?
- wcf - PHP Soap 客户端调用 WCF 服务?
- mysql - Google Apps 脚本上的 JDBC。例外:由于超时或客户端请求而取消语句
- node.js - 角度的快速路线