Как отфильтровать определенные уведомления с OneSingal на Flutter? - PullRequest
0 голосов
/ 08 июля 2019

Я использую OneSignal SDK (onesignal: ^1.1.0) с Flutter. Мне нужно отфильтровать некоторые типы / категории уведомлений для каждого пользователя в моем приложении. Есть ли какое-либо событие, которое я могу использовать, чтобы решить, показывать или нет уведомление?

Моя идея - создавать разные категории уведомлений. Каждый пользователь сможет выбрать, какие типы уведомлений он может получать.

На данный момент я могу выбрать только получение или не получение всех уведомлений по телефону setSubscription:

OneSignal.shared.setSubscription(myBool);

Если установлено значение true, пользователь может получать уведомления, если false, он / она не может их получать.

Это мой main.dart код:

import 'package:flutter/material.dart';
import 'package:onesignal/onesignal.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  bool _areNotificationsEnabled = true;

  @override
  void initState() {
    super.initState();
    OneSignal.shared.init('myKey', iOSSettings: {
      OSiOSSettings.autoPrompt: false,
      OSiOSSettings.inAppLaunchUrl: true
    });

    OneSignal.shared
        .setInFocusDisplayType(OSNotificationDisplayType.notification);
    OneSignal.shared.setNotificationOpenedHandler(
        (OSNotificationOpenedResult handler) async {
      print('Notification opened');
      print(handler.notification.payload.additionalData.toString());
    });
    OneSignal.shared
        .setNotificationReceivedHandler((OSNotification notification) async {
      print("Notification received");
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Container(
        child: SwitchListTile(
          value: _areNotificationsEnabled,
          title: Text('Enable notifications'),
          subtitle: Text('Turn on or off your notifications'),
          onChanged: (bool newValue) {
            OneSignal.shared.setSubscription(newValue);
            print(
                'Notifications state --> ${newValue ? 'Enabled' : 'Disabled'}');
            setState(() {
              _areNotificationsEnabled = !_areNotificationsEnabled;
            });
          },
        ),
      ),
    );
  }
}

1 Ответ

0 голосов
/ 12 июля 2019

HowdyE.Benedos, Вы можете использовать теги данных для сегментирования ваших пользователей на основе их предпочтений.

Возможность устанавливать метки данных невероятно мощна.Вы можете хранить атрибуты данных для каждого пользователя.Теги доступны во всех учетных записях OneSignal и очень популярны среди наших клиентов.Пользователи отмечены такими атрибутами, как типы сообщений, которые они хотят получать, категории контента, информация об отказе от корзины, статус подписки и пользовательские настройки.

Подробнее здесь: https://onesignal.com/blog/data-integration-and-tagging-using-onesignal/

...