firebase - 如何从客户端应用程序禁用 Unity 中的 Firebase 推送通知?
问题描述
我已将 Firebase 集成到 Unity 项目中,并且一切正常。如果用户想在他的应用程序中禁用推送通知,我想集成禁用推送通知。我还没有在代码中找到解决方案,还有一个与我相同的未解决问题,所以我发布新问题以防万一有人为此提供解决方案。
解决方案
我设法通过使用Firebase 消息传递主题并调用SubscribeAsync()和UnsubscribeAsync()来做到这一点。
private void Start()
{
if ( notificationsAreOn )
InitFirebaseMessaging();
else
DisableFirebase();
}
private void DisableFirebase()
{
Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith( task =>
{
var dependencyStatus = task.Result;
if ( dependencyStatus == Firebase.DependencyStatus.Available )
{
FirebaseAnalytics.SetAnalyticsCollectionEnabled( false );
Firebase.Messaging.FirebaseMessaging.UnsubscribeAsync("VeryCoolTopic");
Firebase.Messaging.FirebaseMessaging.TokenReceived += null;
Firebase.Messaging.FirebaseMessaging.MessageReceived += null;
}
else
{
UnityEngine.Debug.LogError(
System.String.Format("Could not resolve all Firebase dependencies: {0}", dependencyStatus)
);
}
});
}
private void InitFirebaseMessaging()
{
Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith( task =>
{
var dependencyStatus = task.Result;
if ( dependencyStatus == Firebase.DependencyStatus.Available )
{
FirebaseAnalytics.SetAnalyticsCollectionEnabled( true );
Firebase.Messaging.FirebaseMessaging.SubscribeAsync("VeryCoolTopic");
Firebase.Messaging.FirebaseMessaging.TokenReceived += OnTokenReceived;
Firebase.Messaging.FirebaseMessaging.MessageReceived += OnMessageReceived;
}
else
{
UnityEngine.Debug.LogError(
System.String.Format("Could not resolve all Firebase dependencies: {0}", dependencyStatus)
);
}
});
}
然后在Firebase 控制台中创建消息时,使用 Topic 作为目标而不是 User Segment。
您也可以通过使用DeleteTokenAsync()删除 Firebase 令牌来禁用整个 Firebase,但我没有对此进行测试,因为使用订阅和取消订阅的方法对我有用。
推荐阅读
- websphere - 无法在 RAD 中启动 websphere 应用程序服务器 8.5
- angular - 测试角小吃吧
- c# - 无法使用错误代码 ORA-00933 更新 Oracle 数据库:SQL 命令未正确结束
- node.js - NodeJS:尝试使用“listBlobsFlat”列出 Blob 时,带有“serviceBusTrigger”的 Azure 函数会给出“InvalidResourceName”错误
- c++ - 是否可以使用 cmake 为没有 pod 的 Xcode 11 链接 xcframework (FirebaseCore.xcframework)?我找不到例子
- python - 在 Windows 上安装 Petsc
- c++ - std::vector<>.size() 抛出异常
- sorting - vuesax表格组件数据如何默认降序排序?
- vb.net - 进度条值无法设置!在 vb.net
- html - 如何在 CSS 的下拉列表中添加图标?