我已经将Firebase集成到Unity项目中,并且一切正常。如果用户要在其应用程序中禁用推送通知,我想集成禁用推送通知。我尚未在代码中找到解决方案,也有一个与我相同的未解决问题,因此我发布了一个新问题,以防万一有人提出了解决方案。
答案 0 :(得分:0)
您可以使用FCM发送两种消息:通知消息和数据消息。
如果您的应用程序处于活动状态,则通知消息会传递到您的应用程序代码,该代码可以决定如何处理。当应用程序未激活时,系统会自动显示通知消息。没有办法抑制这种行为。
数据消息始终传递到您的应用程序代码,应用程序代码可以决定如何处理它们。
因此,如果要允许用户禁止显示消息,则只希望发送数据消息,然后从应用程序代码中显示它们。
请注意,或者,您可以找到一种不向已禁用通知的用户传递消息的方法。具体如何执行取决于您的实现。例如:如果您直接发送到FCM实例ID令牌,则可以跳过已禁用推送通知的用户的令牌。而且,如果您使用主题订阅发送消息,则可以创建用户订阅的主题以禁用通知,然后创建create conditions to exclude delivery to that topic。
答案 1 :(得分:0)
我通过使用 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 控制台中创建消息时,使用主题作为目标而不是用户细分。
您也可以通过使用 DeleteTokenAsync() 删除 Firebase 令牌来禁用整个 Firebase,但我尚未对此进行测试,因为使用 subscribe 和 unsubscribe 的方法对我有用。