Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. QML and Qt Quick
  4. GCM push notifications android
Forum Updated to NodeBB v4.3 + New Features

GCM push notifications android

Scheduled Pinned Locked Moved Unsolved QML and Qt Quick
23 Posts 6 Posters 8.3k Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S SGaist
    4 Mar 2017, 20:29

    @ekkescorner sur there is, but usually specific to their own applications except in the case of V-Play that provides the support through their framework.

    @Schluchti In the categories of stuff that can help:

    • https://inqlude.org for Qt related libraries
    • qt-pods project
    S Offline
    S Offline
    Schluchti
    wrote on 6 Mar 2017, 10:08 last edited by
    #7

    @SGaist Many thanks for the links! Didn't know that such great projects exist :)

    I already implemented push notifiction for iOs and android. As it took me some time to implement it, I am thinking about writing it down to save other Qt developers time when implementing that stuff.

    Want to read more about Qt?

    https://gympulsr.com/blog/qt/

    Latest Article: https://gympulsr.com/blog/qt/2017/06/14/ios-background-music-qt.html

    E 1 Reply Last reply 6 Mar 2017, 10:10
    1
    • S Schluchti
      6 Mar 2017, 10:08

      @SGaist Many thanks for the links! Didn't know that such great projects exist :)

      I already implemented push notifiction for iOs and android. As it took me some time to implement it, I am thinking about writing it down to save other Qt developers time when implementing that stuff.

      E Offline
      E Offline
      ekkescorner
      Qt Champions 2016
      wrote on 6 Mar 2017, 10:10 last edited by ekkescorner 3 Jun 2017, 10:15
      #8

      @Schluchti said in GCM push notifications android:

      @SGaist Many thanks for the links! Didn't know that such great projects exist :)

      I already implemented push notifiction for iOs and android. As it took me some time to implement it, I am thinking about writing it down to save other Qt developers time when implementing that stuff.

      great idea ;-)
      best would be a small example project at gitHub together with blogpost

      ekke ... Qt Champion 2016 | 2024 ... mobile business apps
      5.15 --> 6.8 https://t1p.de/ekkeChecklist
      QMake --> CMake https://t1p.de/ekkeCMakeMobileApps

      S 1 Reply Last reply 6 Mar 2017, 18:58
      1
      • L Offline
        L Offline
        Lorenz
        wrote on 6 Mar 2017, 16:14 last edited by Lorenz 3 Jun 2017, 16:17
        #9

        Hi,

        As already mentioned by @SGaist, V-Play provides support for Push Notifications via GCM and OneSignal for Android and iOS. Also, local notifications are possible with V-Play.

        It's really convenient to add, check out this code sample for OneSignal:

        import QtQuick 2.1
        import VPlayPlugins 1.0
        
         OneSignal {
           id: onesignal
        
           appId: "<ONESIGNAL-APP-ID>"
        
           onNotificationReceived: {
             console.debug("Received notification with message:", message)
           }
         }
        

        That's all the code you'll need!

        As pointed out by @ekkescorner, you will need a V-Play Indie- or Enterprise license starting from $49 / month to use these features.

        By the way, support for Firebase is currently in the pipeline ;)

        Cheers,
        Lorenz

        Developer @ V-Play Engine - http://v-play.net/qt

        V-Play simplifies

        • Game Development with Qt
        • Mobile App Dev with Qt esp. iOS & Android

        What others say
        V-Play scored #1 in Cross-Platform App Development Tools Report - see why: https://goo.gl/rgp3rq

        1 Reply Last reply
        0
        • E ekkescorner
          6 Mar 2017, 10:10

          @Schluchti said in GCM push notifications android:

          @SGaist Many thanks for the links! Didn't know that such great projects exist :)

          I already implemented push notifiction for iOs and android. As it took me some time to implement it, I am thinking about writing it down to save other Qt developers time when implementing that stuff.

          great idea ;-)
          best would be a small example project at gitHub together with blogpost

          S Offline
          S Offline
          Schluchti
          wrote on 6 Mar 2017, 18:58 last edited by
          #10

          @ekkescorner Yeah, that's what I was thinking about ;-). Hope to get the first article done by the end of this week. :)

          Want to read more about Qt?

          https://gympulsr.com/blog/qt/

          Latest Article: https://gympulsr.com/blog/qt/2017/06/14/ios-background-music-qt.html

          1 Reply Last reply
          0
          • M Offline
            M Offline
            m.kuncevicius
            wrote on 7 Mar 2017, 06:42 last edited by
            #11

            Thank you for answers guys! I knew before about V-Play, but I'm not interested in using it since it is not free. @Schluchti it would be great if you don't mind sharing your code!

            1 Reply Last reply
            0
            • S Offline
              S Offline
              Schluchti
              wrote on 11 Mar 2017, 19:35 last edited by
              #12

              First part is now available. https://gympulsr.com/blog/qt/2017/03/08/push-notification-ios-qt.html
              I hope it covers everything.

              Want to read more about Qt?

              https://gympulsr.com/blog/qt/

              Latest Article: https://gympulsr.com/blog/qt/2017/06/14/ios-background-music-qt.html

              E 1 Reply Last reply 11 Mar 2017, 20:41
              3
              • S Schluchti
                11 Mar 2017, 19:35

                First part is now available. https://gympulsr.com/blog/qt/2017/03/08/push-notification-ios-qt.html
                I hope it covers everything.

                E Offline
                E Offline
                ekkescorner
                Qt Champions 2016
                wrote on 11 Mar 2017, 20:41 last edited by
                #13

                @Schluchti great article - thx providing your experiences and sample app.

                ekke ... Qt Champion 2016 | 2024 ... mobile business apps
                5.15 --> 6.8 https://t1p.de/ekkeChecklist
                QMake --> CMake https://t1p.de/ekkeCMakeMobileApps

                1 Reply Last reply
                2
                • S Offline
                  S Offline
                  Schluchti
                  wrote on 26 Mar 2017, 18:24 last edited by
                  #14

                  Second part is now done: https://gympulsr.com/blog/qt/2017/03/26/push-notification-android-qt.html

                  Hope I didn't miss anything (implemented the notifications a while ago and now tried to remember as much as I could ;-)). If something is missing, please let me know.

                  Want to read more about Qt?

                  https://gympulsr.com/blog/qt/

                  Latest Article: https://gympulsr.com/blog/qt/2017/06/14/ios-background-music-qt.html

                  E A 2 Replies Last reply 27 Mar 2017, 04:46
                  2
                  • S Schluchti
                    26 Mar 2017, 18:24

                    Second part is now done: https://gympulsr.com/blog/qt/2017/03/26/push-notification-android-qt.html

                    Hope I didn't miss anything (implemented the notifications a while ago and now tried to remember as much as I could ;-)). If something is missing, please let me know.

                    E Offline
                    E Offline
                    ekkescorner
                    Qt Champions 2016
                    wrote on 27 Mar 2017, 04:46 last edited by
                    #15

                    @Schluchti cool - blog look great :)

                    probably next 2 weeks I'll test it.

                    just still optimizing all my apps for Qt 5.8

                    ekke ... Qt Champion 2016 | 2024 ... mobile business apps
                    5.15 --> 6.8 https://t1p.de/ekkeChecklist
                    QMake --> CMake https://t1p.de/ekkeCMakeMobileApps

                    1 Reply Last reply
                    2
                    • S Schluchti
                      26 Mar 2017, 18:24

                      Second part is now done: https://gympulsr.com/blog/qt/2017/03/26/push-notification-android-qt.html

                      Hope I didn't miss anything (implemented the notifications a while ago and now tried to remember as much as I could ;-)). If something is missing, please let me know.

                      A Offline
                      A Offline
                      Atr0n
                      wrote on 19 Apr 2017, 09:33 last edited by Atr0n
                      #16
                      This post is deleted!
                      S 1 Reply Last reply 19 Apr 2017, 16:03
                      0
                      • A Atr0n
                        19 Apr 2017, 09:33

                        This post is deleted!

                        S Offline
                        S Offline
                        Schluchti
                        wrote on 19 Apr 2017, 16:03 last edited by Schluchti
                        #17

                        @Atr0n thanks! :)

                        You are refering to the android blog post, right? Have you enabled Gradle in the project settings? I haven't seen this errorin particular, but some similar packaging errors when using Ant. In my experience it sometimes also helps to delete the whole build folder to enforce a clean rebuild.

                        edit: are you sure that error is the acutal reason why it failed?

                        Want to read more about Qt?

                        https://gympulsr.com/blog/qt/

                        Latest Article: https://gympulsr.com/blog/qt/2017/06/14/ios-background-music-qt.html

                        A 1 Reply Last reply 3 May 2017, 08:40
                        2
                        • S Schluchti
                          19 Apr 2017, 16:03

                          @Atr0n thanks! :)

                          You are refering to the android blog post, right? Have you enabled Gradle in the project settings? I haven't seen this errorin particular, but some similar packaging errors when using Ant. In my experience it sometimes also helps to delete the whole build folder to enforce a clean rebuild.

                          edit: are you sure that error is the acutal reason why it failed?

                          A Offline
                          A Offline
                          Atr0n
                          wrote on 3 May 2017, 08:40 last edited by Atr0n 5 Mar 2017, 08:41
                          #18

                          @Schluchti said in GCM push notifications android:

                          @Atr0n thanks! :)

                          You are refering to the android blog post, right? Have you enabled Gradle in the project settings? I haven't seen this errorin particular, but some similar packaging errors when using Ant. In my experience it sometimes also helps to delete the whole build folder to enforce a clean rebuild.

                          edit: are you sure that error is the acutal reason why it failed?

                          Hi @Schluchti,
                          I deleted my last post because after some investigations, I realiced Qt creator has a bug which makes impossible to use the last gradle version (or 3.3 in my case). QT-BUG
                          I will give it a try once qt creator 4.3 is out.
                          Anyway, thanks again for your blog. I hope you keep doing these amazing series.
                          Regards,

                          1 Reply Last reply
                          0
                          • A Offline
                            A Offline
                            Atr0n
                            wrote on 25 May 2017, 06:16 last edited by
                            #19

                            @Schluchti Finally I make it work. The python scripts need to be updated to make it works with python3 since apns2 it's only compatible with it at version 0.52. But everything works like a charm..
                            Thank you a lot.
                            PD: I can pull the python script modification to github if you want.

                            S 1 Reply Last reply 25 May 2017, 10:10
                            1
                            • A Atr0n
                              25 May 2017, 06:16

                              @Schluchti Finally I make it work. The python scripts need to be updated to make it works with python3 since apns2 it's only compatible with it at version 0.52. But everything works like a charm..
                              Thank you a lot.
                              PD: I can pull the python script modification to github if you want.

                              S Offline
                              S Offline
                              Schluchti
                              wrote on 25 May 2017, 10:10 last edited by
                              #20

                              @Atr0n I am glad that it worked :) It would be great if you could create a pull request for it, many thanks!

                              Want to read more about Qt?

                              https://gympulsr.com/blog/qt/

                              Latest Article: https://gympulsr.com/blog/qt/2017/06/14/ios-background-music-qt.html

                              A 1 Reply Last reply 25 May 2017, 16:27
                              1
                              • S Schluchti
                                25 May 2017, 10:10

                                @Atr0n I am glad that it worked :) It would be great if you could create a pull request for it, many thanks!

                                A Offline
                                A Offline
                                Atr0n
                                wrote on 25 May 2017, 16:27 last edited by
                                #21

                                @Schluchti Nice, thanks!
                                I have a final question for you: How do you stop notifications? For example, if the user log out.
                                I was thinking on moving MyGcmListenerService to the main Activity and start it from there. Then I can start and stop the service when I want. What do you think?
                                Regards,

                                S 1 Reply Last reply 25 May 2017, 18:13
                                0
                                • A Atr0n
                                  25 May 2017, 16:27

                                  @Schluchti Nice, thanks!
                                  I have a final question for you: How do you stop notifications? For example, if the user log out.
                                  I was thinking on moving MyGcmListenerService to the main Activity and start it from there. Then I can start and stop the service when I want. What do you think?
                                  Regards,

                                  S Offline
                                  S Offline
                                  Schluchti
                                  wrote on 25 May 2017, 18:13 last edited by Schluchti
                                  #22

                                  @Atr0n I haven't done that, but I would probably try a different approach first. It's just a personal preference, but moving such a central component to a different place would be to risky for me. (I would be afraid to break something and miss messages in certain occasions).

                                  Instead I would try to store the state (user logged in) somewhere and only show the notification when the user is logged in. One could do that either server-side (probably not that comfortable if the user logs in from different devices) or client-side. For example: You could store a boolean flag somewhere (e.q in SharedPreferences, so you can easily access it from the Java part) that saves the state (logged in/logged out). If you receive a new notification you first check if you are logged in. If you aren't, you discard the receive message.

                                  But I am not an android expert...so please take that advice with a grain of salt ;-).

                                  P.S: The disadvantage of that approach is, that you always receive messages although they aren't displayed. So if you are sending a lot of messages this could produce unnecessary load. Another thing is, that if you have a app, where users can explicitly disable push notifications, you are kind of screwing them over with that approach. (because messages are received anyhow) In that case I would probably go the way you described and look for ways to disable that feature completely (or even better: don't send notifications from the server in the first place)

                                  Want to read more about Qt?

                                  https://gympulsr.com/blog/qt/

                                  Latest Article: https://gympulsr.com/blog/qt/2017/06/14/ios-background-music-qt.html

                                  A 1 Reply Last reply 25 May 2017, 20:01
                                  1
                                  • S Schluchti
                                    25 May 2017, 18:13

                                    @Atr0n I haven't done that, but I would probably try a different approach first. It's just a personal preference, but moving such a central component to a different place would be to risky for me. (I would be afraid to break something and miss messages in certain occasions).

                                    Instead I would try to store the state (user logged in) somewhere and only show the notification when the user is logged in. One could do that either server-side (probably not that comfortable if the user logs in from different devices) or client-side. For example: You could store a boolean flag somewhere (e.q in SharedPreferences, so you can easily access it from the Java part) that saves the state (logged in/logged out). If you receive a new notification you first check if you are logged in. If you aren't, you discard the receive message.

                                    But I am not an android expert...so please take that advice with a grain of salt ;-).

                                    P.S: The disadvantage of that approach is, that you always receive messages although they aren't displayed. So if you are sending a lot of messages this could produce unnecessary load. Another thing is, that if you have a app, where users can explicitly disable push notifications, you are kind of screwing them over with that approach. (because messages are received anyhow) In that case I would probably go the way you described and look for ways to disable that feature completely (or even better: don't send notifications from the server in the first place)

                                    A Offline
                                    A Offline
                                    Atr0n
                                    wrote on 25 May 2017, 20:01 last edited by Atr0n
                                    #23

                                    @Schluchti Thanks again for your time!
                                    Finally, I just want to share with you a piece of code that could help the people follow your tutorials. It's a notification sender using Qt code. I am not a Github guy, so I post it here in case you want to use it (or anyone else). Note that if you are using Windows, you need to install openssl 1.02 in your computer.

                                    Edit: This is android only.

                                    http.cpp

                                    http::http(QObject *parent) : QObject(parent)
                                    {
                                        m_manager = new QNetworkAccessManager(this);
                                    
                                        QUrl url("https://gcm-http.googleapis.com/gcm/send");
                                        QNetworkRequest request(url);
                                        request.setHeader(QNetworkRequest::ContentTypeHeader,"application/json");
                                        request.setRawHeader(QByteArray("Authorization"), QByteArray("key=your key here"));
                                    
                                        QByteArray data = "{\"data\" : { \"message\": \"Hello world\"}, \"to\" : \"your target here\" }";
                                        connect(m_manager,&QNetworkAccessManager::finished,this,&http::finished);
                                        m_manager->post(request,data);
                                        qDebug() << data;
                                    }
                                    
                                    void http::finished(QNetworkReply *reply)
                                    {
                                        qDebug() << reply->error() << reply->errorString();
                                        m_mananger->deleteLater();
                                        m_manager = 0;
                                    }
                                    

                                    http.h

                                    #ifndef HTTP_H
                                    #define HTTP_H
                                    
                                    #include <QObject>
                                    #include <QNetworkAccessManager>
                                    #include <QNetworkReply>
                                    
                                    class http : public QObject
                                    {
                                        Q_OBJECT
                                    public:
                                        explicit http(QObject *parent = nullptr);
                                    
                                    signals:
                                    
                                    public slots:
                                        void finished(QNetworkReply *reply);
                                    
                                    private:
                                        QNetworkAccessManager* m_manager;
                                    };
                                    
                                    #endif // HTTP_H
                                    
                                    1 Reply Last reply
                                    0

                                    • Login

                                    • Login or register to search.
                                    • First post
                                      Last post
                                    0
                                    • Categories
                                    • Recent
                                    • Tags
                                    • Popular
                                    • Users
                                    • Groups
                                    • Search
                                    • Get Qt Extensions
                                    • Unsolved