Firebase shows no notification after installation and first run on iOS

Viewed 77

I am not receiving the notification immediately after I install the application on iOS and use if for a first time. Once I restart the app, I will start receiving notifications.

I am calling the class below at the start of the app, and it's not working for the first time. I have also tried to call the class later in the code, but it's still not working.

Following is the code I wrote:

import 'dart:async';
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/material.dart';
import 'package:hrqoltesting/APIS/API.dart';
import 'package:hrqoltesting/APIS/ASsessment/assessment.dart';
import 'package:hrqoltesting/Assesmentselection/PetAssesment.dart';
import 'package:hrqoltesting/AssessmentQuestion/Assessmentquestion.dart';
import 'package:hrqoltesting/AssessmentQuestion/Progressbar.dart';
import 'package:hrqoltesting/Globals/globals.dart';
import 'package:hrqoltesting/Life%20Assessment%20content/Assessment%20content%20page.dart';
import 'package:hrqoltesting/notification/Medication%20Screen%20Dog%20.dart';
import 'package:progress_dialog/progress_dialog.dart';
import 'package:shared_preferences/shared_preferences.dart';

import '../const.dart';
import 'Medication Screen Cat.dart';

class NotificationClass extends StatefulWidget {
final Widget child;

NotificationClass({this.child});
@override
_NotificationClassState createState() => _NotificationClassState();
}

class _NotificationClassState extends State<NotificationClass>
    with SingleTickerProviderStateMixin {

final FirebaseMessaging _firebaseMessaging = FirebaseMessaging();

StreamSubscription iosSubscription;
StreamSubscription androidSubscription;
PushNotificationMessage notification;
bool _newNotification = false;
ProgressDialog pr;


getassessments(var pettype) async {
    api callapi = new api();
    SharedPreferences pref = await asd;

    var x = await callapi.assessment(pettype);
    return x;
}

@override
void initState() {
    super.initState();
    testing();
}

testing() async {
    _firebaseMessaging
        .requestNotificationPermissions(IosNotificationSettings());
    await Future.delayed(Duration(seconds: 10));
    iosSubscription = _firebaseMessaging.onIosSettingsRegistered.listen((data) {

    });


    _firebaseMessaging.configure(
    onMessage: (Map<String, dynamic> message) async {
        print("onResume: $message");
        if (message["body"].toString().toLowerCase() ==
            "${globals.petname.toString().toLowerCase()}’s next librela injection is due soon. tap for more information") {
        Navigator.pushReplacement(context,
            MaterialPageRoute(builder: (context) => medicationScreen()));

        } else if (message["body"].toString().toLowerCase() ==
            "${globals.petname.toString().toLowerCase()}’s next solensia injection is due soon. tap for more information") {
        Navigator.pushReplacement(context,
            MaterialPageRoute(builder: (context) => medicationScreencat()));
        } else if (message["assessment_id"] != null) {
        var date = DateTime.parse(message["due_date"]).add(Duration(days: 7));
        if (DateTime.now().isBefore(date)) {
            if (int.parse(message["assessment_id"]) == 1 ||
                int.parse(message["assessment_id"]) == 3 ||
                int.parse(message["assessment_id"]) == 4 ||
                int.parse(message["assessment_id"]) == 7 ||
                int.parse(message["assessment_id"]) == 9 ||
                int.parse(message["assessment_id"]) == 10) {
            globals.assessmentid = int.parse(message["assessment_id"]);
            Navigator.push(
                context,
                MaterialPageRoute(
                    builder: (context) =>
                        assessmentquestion(globals.assessmentid),
                ));
            } else {
            globals.assessmentid = int.parse(message["assessment_id"]);
            globals.opt.clear();
            globals.ques.clear();
            globals.answeropt.clear();
            api callapi = new api();

            var x = await callapi.questions();
            Navigator.push(
                context,
                MaterialPageRoute(
                    builder: (context) => assessmentContent(),
                ));
            }
        } else {
            List<assessments> assessment =
                await getassessments(globals.pettype);

            Navigator.pushReplacement(
            context,
            MaterialPageRoute(
                builder: (context) => petassesmentselection(
                        asses: assessment,
                    )),
            );
        }

        }


        setState(() {
        _newNotification = true;
        });
    },
    onLaunch: (Map<String, dynamic> message) async {
        print("onResume: $message");
        if (message["body"].toString().toLowerCase() ==
            "${globals.petname.toString().toLowerCase()}’s next librela injection is due soon. tap for more information") {
        Navigator.pushReplacement(context,
            MaterialPageRoute(builder: (context) => medicationScreen()));
        // NotificationClass().createState().dispose();
        } else if (message["body"].toString().toLowerCase() ==
            "${globals.petname.toString().toLowerCase()}’s next solensia injection is due soon. tap for more information") {
        Navigator.pushReplacement(context,
            MaterialPageRoute(builder: (context) => medicationScreencat()));
        } else if (message["assessment_id"] != null) {
        var date = DateTime.parse(message["due_date"]).add(Duration(days: 7));
        if (DateTime.now().isBefore(date)) {
            if (int.parse(message["assessment_id"]) == 1 ||
                int.parse(message["assessment_id"]) == 3 ||
                int.parse(message["assessment_id"]) == 4 ||
                int.parse(message["assessment_id"]) == 7 ||
                int.parse(message["assessment_id"]) == 9 ||
                int.parse(message["assessment_id"]) == 10) {
            globals.assessmentid = int.parse(message["assessment_id"]);
            Navigator.push(
                context,
                MaterialPageRoute(
                    builder: (context) =>
                        assessmentquestion(globals.assessmentid),
                ));
            } else {
            globals.assessmentid = int.parse(message["assessment_id"]);
            globals.opt.clear();
            globals.ques.clear();
            globals.answeropt.clear();
            api callapi = new api();

            var x = await callapi.questions();
            Navigator.push(
                context,
                MaterialPageRoute(
                    builder: (context) => assessmentContent(),
                ));
            }
        } else {
            List<assessments> assessment =
                await getassessments(globals.pettype);

            Navigator.pushReplacement(
            context,
            MaterialPageRoute(
                builder: (context) => petassesmentselection(
                        asses: assessment,
                    )),
            );
        }

        }
        return true;


    },


    onResume: (Map<String, dynamic> message) async {
        print("onResume: $message");
        Progress().progressBar(context, pr, 0);
        if (message["body"].toString().toLowerCase() ==
            "${globals.petname.toString().toLowerCase()}’s next librela injection is due soon. tap for more information") {
        Progress().progressBar(context, pr, 1);
        Navigator.pushReplacement(context,
            MaterialPageRoute(builder: (context) => medicationScreen()));
        // NotificationClass().createState().dispose();
        } else if (message["body"].toString().toLowerCase() ==
            "${globals.petname.toString().toLowerCase()}’s next solensia injection is due soon. tap for more information") {
        Progress().progressBar(context, pr, 1);
        Navigator.pushReplacement(context,
            MaterialPageRoute(builder: (context) => medicationScreencat()));
        } else if (message["assessment_id"] != null) {
        var date = DateTime.parse(message["due_date"]).add(Duration(days: 7));
        if (DateTime.now().isBefore(date)) {
            if (int.parse(message["assessment_id"]) == 1 ||
                int.parse(message["assessment_id"]) == 3 ||
                int.parse(message["assessment_id"]) == 4 ||
                int.parse(message["assessment_id"]) == 7 ||
                int.parse(message["assessment_id"]) == 9 ||
                int.parse(message["assessment_id"]) == 10) {
            globals.assessmentid = int.parse(message["assessment_id"]);
            Navigator.push(
                context,
                MaterialPageRoute(
                    builder: (context) =>
                        assessmentquestion(globals.assessmentid),
                ));
            } else {
            globals.assessmentid = int.parse(message["assessment_id"]);
            globals.opt.clear();
            globals.ques.clear();
            globals.answeropt.clear();
            api callapi = new api();

            var x = await callapi.questions();
            Navigator.push(
                context,
                MaterialPageRoute(
                    builder: (context) => assessmentContent(),
                ));
            }
        } else {
            List<assessments> assessment =
                await getassessments(globals.pettype);

            Navigator.pushReplacement(
            context,
            MaterialPageRoute(
                builder: (context) => petassesmentselection(
                        asses: assessment,
                    )),
            );
        }

        }
        return true;


    },
    );

    _firebaseMessaging.requestNotificationPermissions(
        const IosNotificationSettings(
            sound: true, badge: true, alert: true, provisional: true));


    _firebaseMessaging.onIosSettingsRegistered
        .listen((IosNotificationSettings settings) {
    print("Settings registered: $settings");

    });
}

@override
Widget build(BuildContext context) {
    return widget.child;
}
}
1 Answers
Related