Log OneSignal Push Notification with Firebase Analytics Event











up vote
0
down vote

favorite
1












So my goal is to log event any push notification that comes up on my app. I'm using Firebase Analytics to log any event and I already know how to use it using :



Analytics.logEvent(FirebaseEventName, parameters: [:])


But is it possible to log event a push notification? I'm using OneSignal as my Push Notification service.










share|improve this question


















  • 1




    in your appDelegate where you receive the notification (userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler) add a logEvent to capture the data that you want.
    – Alex Bailey
    Nov 15 at 2:41










  • @AlexBailey I'll try that, I'll inform you if it works
    – Gelar Aulia Prima Putra
    Nov 19 at 2:41















up vote
0
down vote

favorite
1












So my goal is to log event any push notification that comes up on my app. I'm using Firebase Analytics to log any event and I already know how to use it using :



Analytics.logEvent(FirebaseEventName, parameters: [:])


But is it possible to log event a push notification? I'm using OneSignal as my Push Notification service.










share|improve this question


















  • 1




    in your appDelegate where you receive the notification (userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler) add a logEvent to capture the data that you want.
    – Alex Bailey
    Nov 15 at 2:41










  • @AlexBailey I'll try that, I'll inform you if it works
    – Gelar Aulia Prima Putra
    Nov 19 at 2:41













up vote
0
down vote

favorite
1









up vote
0
down vote

favorite
1






1





So my goal is to log event any push notification that comes up on my app. I'm using Firebase Analytics to log any event and I already know how to use it using :



Analytics.logEvent(FirebaseEventName, parameters: [:])


But is it possible to log event a push notification? I'm using OneSignal as my Push Notification service.










share|improve this question













So my goal is to log event any push notification that comes up on my app. I'm using Firebase Analytics to log any event and I already know how to use it using :



Analytics.logEvent(FirebaseEventName, parameters: [:])


But is it possible to log event a push notification? I'm using OneSignal as my Push Notification service.







ios swift push-notification firebase-analytics onesignal






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 15 at 1:55









Gelar Aulia Prima Putra

288




288








  • 1




    in your appDelegate where you receive the notification (userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler) add a logEvent to capture the data that you want.
    – Alex Bailey
    Nov 15 at 2:41










  • @AlexBailey I'll try that, I'll inform you if it works
    – Gelar Aulia Prima Putra
    Nov 19 at 2:41














  • 1




    in your appDelegate where you receive the notification (userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler) add a logEvent to capture the data that you want.
    – Alex Bailey
    Nov 15 at 2:41










  • @AlexBailey I'll try that, I'll inform you if it works
    – Gelar Aulia Prima Putra
    Nov 19 at 2:41








1




1




in your appDelegate where you receive the notification (userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler) add a logEvent to capture the data that you want.
– Alex Bailey
Nov 15 at 2:41




in your appDelegate where you receive the notification (userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler) add a logEvent to capture the data that you want.
– Alex Bailey
Nov 15 at 2:41












@AlexBailey I'll try that, I'll inform you if it works
– Gelar Aulia Prima Putra
Nov 19 at 2:41




@AlexBailey I'll try that, I'll inform you if it works
– Gelar Aulia Prima Putra
Nov 19 at 2:41












1 Answer
1






active

oldest

votes

















up vote
1
down vote



accepted










I've found my answer. But my method required Backend to be involved. Which I don't have the answer because I don't handle the Backend part. The following answer is only just for iOS part only.



So, the method is using OneSignal method, and it's implemented in



func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool {



If you're already using OneSignal for iOS you should already write below code in didFinishLaunchingWithOptions



OneSignal.initWithLaunchOptions(launchOptions, appId: ONE_SIGNAL_APPID, handleNotificationReceived: { (notification) in
let additionalData = notification?.payload.additionalData // Get additional data such as custom flaging from backend
if additionalData != nil { // A condition to avoid crash if additionalData is empty
let customFlag:String = additionalData!["tipe"] as! String // Get value of the custom flag, in this case mine is "tipe", and store the value to customFlag
Analytics.logEvent(customFlag, parameters: [:]) // Send Log Event to Firebase
}
}, handleNotificationAction: { (result) in

}, settings: [kOSSettingsKeyInFocusDisplayOption: OSNotificationDisplayType.none.rawValue,kOSSettingsKeyAutoPrompt : true])


For example, if you print additionalData the value should be looking like



[AnyHashable("tipe"): inbox]


And this value is set/declared in Backend part.






share|improve this answer





















    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53311337%2flog-onesignal-push-notification-with-firebase-analytics-event%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes








    up vote
    1
    down vote



    accepted










    I've found my answer. But my method required Backend to be involved. Which I don't have the answer because I don't handle the Backend part. The following answer is only just for iOS part only.



    So, the method is using OneSignal method, and it's implemented in



    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool {



    If you're already using OneSignal for iOS you should already write below code in didFinishLaunchingWithOptions



    OneSignal.initWithLaunchOptions(launchOptions, appId: ONE_SIGNAL_APPID, handleNotificationReceived: { (notification) in
    let additionalData = notification?.payload.additionalData // Get additional data such as custom flaging from backend
    if additionalData != nil { // A condition to avoid crash if additionalData is empty
    let customFlag:String = additionalData!["tipe"] as! String // Get value of the custom flag, in this case mine is "tipe", and store the value to customFlag
    Analytics.logEvent(customFlag, parameters: [:]) // Send Log Event to Firebase
    }
    }, handleNotificationAction: { (result) in

    }, settings: [kOSSettingsKeyInFocusDisplayOption: OSNotificationDisplayType.none.rawValue,kOSSettingsKeyAutoPrompt : true])


    For example, if you print additionalData the value should be looking like



    [AnyHashable("tipe"): inbox]


    And this value is set/declared in Backend part.






    share|improve this answer

























      up vote
      1
      down vote



      accepted










      I've found my answer. But my method required Backend to be involved. Which I don't have the answer because I don't handle the Backend part. The following answer is only just for iOS part only.



      So, the method is using OneSignal method, and it's implemented in



      func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool {



      If you're already using OneSignal for iOS you should already write below code in didFinishLaunchingWithOptions



      OneSignal.initWithLaunchOptions(launchOptions, appId: ONE_SIGNAL_APPID, handleNotificationReceived: { (notification) in
      let additionalData = notification?.payload.additionalData // Get additional data such as custom flaging from backend
      if additionalData != nil { // A condition to avoid crash if additionalData is empty
      let customFlag:String = additionalData!["tipe"] as! String // Get value of the custom flag, in this case mine is "tipe", and store the value to customFlag
      Analytics.logEvent(customFlag, parameters: [:]) // Send Log Event to Firebase
      }
      }, handleNotificationAction: { (result) in

      }, settings: [kOSSettingsKeyInFocusDisplayOption: OSNotificationDisplayType.none.rawValue,kOSSettingsKeyAutoPrompt : true])


      For example, if you print additionalData the value should be looking like



      [AnyHashable("tipe"): inbox]


      And this value is set/declared in Backend part.






      share|improve this answer























        up vote
        1
        down vote



        accepted







        up vote
        1
        down vote



        accepted






        I've found my answer. But my method required Backend to be involved. Which I don't have the answer because I don't handle the Backend part. The following answer is only just for iOS part only.



        So, the method is using OneSignal method, and it's implemented in



        func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool {



        If you're already using OneSignal for iOS you should already write below code in didFinishLaunchingWithOptions



        OneSignal.initWithLaunchOptions(launchOptions, appId: ONE_SIGNAL_APPID, handleNotificationReceived: { (notification) in
        let additionalData = notification?.payload.additionalData // Get additional data such as custom flaging from backend
        if additionalData != nil { // A condition to avoid crash if additionalData is empty
        let customFlag:String = additionalData!["tipe"] as! String // Get value of the custom flag, in this case mine is "tipe", and store the value to customFlag
        Analytics.logEvent(customFlag, parameters: [:]) // Send Log Event to Firebase
        }
        }, handleNotificationAction: { (result) in

        }, settings: [kOSSettingsKeyInFocusDisplayOption: OSNotificationDisplayType.none.rawValue,kOSSettingsKeyAutoPrompt : true])


        For example, if you print additionalData the value should be looking like



        [AnyHashable("tipe"): inbox]


        And this value is set/declared in Backend part.






        share|improve this answer












        I've found my answer. But my method required Backend to be involved. Which I don't have the answer because I don't handle the Backend part. The following answer is only just for iOS part only.



        So, the method is using OneSignal method, and it's implemented in



        func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool {



        If you're already using OneSignal for iOS you should already write below code in didFinishLaunchingWithOptions



        OneSignal.initWithLaunchOptions(launchOptions, appId: ONE_SIGNAL_APPID, handleNotificationReceived: { (notification) in
        let additionalData = notification?.payload.additionalData // Get additional data such as custom flaging from backend
        if additionalData != nil { // A condition to avoid crash if additionalData is empty
        let customFlag:String = additionalData!["tipe"] as! String // Get value of the custom flag, in this case mine is "tipe", and store the value to customFlag
        Analytics.logEvent(customFlag, parameters: [:]) // Send Log Event to Firebase
        }
        }, handleNotificationAction: { (result) in

        }, settings: [kOSSettingsKeyInFocusDisplayOption: OSNotificationDisplayType.none.rawValue,kOSSettingsKeyAutoPrompt : true])


        For example, if you print additionalData the value should be looking like



        [AnyHashable("tipe"): inbox]


        And this value is set/declared in Backend part.







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 29 at 6:18









        Gelar Aulia Prima Putra

        288




        288






























            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.





            Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


            Please pay close attention to the following guidance:


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53311337%2flog-onesignal-push-notification-with-firebase-analytics-event%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Biblatex bibliography style without URLs when DOI exists (in Overleaf with Zotero bibliography)

            ComboBox Display Member on multiple fields

            Is it possible to collect Nectar points via Trainline?