【问题标题】:How to prevent alert with incoming OneSignal notification?如何通过传入的 OneSignal 通知来防止警报?
【发布时间】:2017-05-02 05:17:01
【问题描述】:

我使用 OneSignal 推送通知。当 android 应用程序处于前台并收到通知时,它会创建一个带有通知的警报框。接收通知时如何防止出现这种情况?

【问题讨论】:

  • 接收器是否在活动中实现?如果是那可能是问题所在。尝试将接收器设为一个单独的类。
  • Here is an similar question about ios link 所以我认为可以通过禁用某些选项来解决,因为它默认创建警报。

标签: android push-notification onesignal


【解决方案1】:

来自 SDK documentation - 当您启动初始化 OneSignal 时,请确保使用“None”调用 inFocusDisplaying 以禁用 OneSignal 在应用程序中的 AlertBox。

同样在 NotificationReceivedHandler 部分 -

重要行为说明 - 如果您将在应用程序中显示您自己的 收到通知时的消息确保致电 inFocusDisplaying with None 可在应用程序 AlertBox 中禁用 OneSignal。

【讨论】:

【解决方案2】:

在 OneSignal 4.0 中发生了变化。

对于 Kotlin:

OneSignal.setNotificationWillShowInForegroundHandler { notificationReceivedEvent ->
    notificationReceivedEvent.complete(null)
}

对于 Java:

OneSignal.setNotificationWillShowInForegroundHandler(new NotificationWillShowInForegroundHandler() {
  @Override
  void notificationWillShowInForeground(OSNotificationReceivedEvent notificationReceivedEvent) {    
     notificationReceivedEvent.complete(null);
  }
});

【讨论】:

    【解决方案3】:

    只需在你的 windows.plugin.signal 中添加这一行

    .inFocusDisplaying(window.plugins.OneSignal.OSInFocusDisplayOption.Notification)
    

    例如:-

    window.plugins.OneSignal
    .startInit("YOUR_APPID")
    .inFocusDisplaying(window.plugins.OneSignal.OSInFocusDisplayOption.Notification)
    .endInit();
    

    【讨论】:

      【解决方案4】:

      使用此代码行,我解决了我的问题。

      OneSignal.inFocusDisplaying(2);
      

      【讨论】:

        【解决方案5】:

        我有类似的问题,我通过使用inFocusDisplaying解决了它

        这里是如何在 android 中使用它。

            public class MyApplicationClass extends Application {
        
        private static Context context;
        PlayerIdsession session;
        
        public static Context getContext() {
            return context;
        }
        
        @Override
        public void onCreate() {
            super.onCreate();
            context = getApplicationContext();
            //MyNotificationOpenedHandler : This will be called when a notification is tapped on.
            //MyNotificationReceivedHandler : This will be called when a notification is received while your app is running.
            OneSignal.startInit(this)
                    .setNotificationOpenedHandler(new MyNotiOpenedHandler())
                    .setNotificationReceivedHandler( new MyNotiReceivedHandler() )
                    .inFocusDisplaying(OneSignal.OSInFocusDisplayOption.Notification)
                    .init();
        
            OneSignal.idsAvailable(new OneSignal.IdsAvailableHandler() {
                @Override
                public void idsAvailable(String userId, String registrationId) {
        
                    if (userId != null){
                        session=new PlayerIdsession(context);
                        session.savePlayerId(userId);
                        Log.d("debug", "PlayerId:" + userId);
                    }
        
                   /* if (registrationId != null){
                        Log.d("debug", "registrationId:" + registrationId);
                }*/
        
                }
            });
        }
        }
        

        【讨论】:

          猜你喜欢
          • 2017-03-03
          • 1970-01-01
          • 1970-01-01
          • 2018-07-27
          • 2021-12-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多