Log OneSignal Push Notification with Firebase Analytics Event





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}







0















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 '18 at 2:41











  • @AlexBailey I'll try that, I'll inform you if it works

    – Gelar Aulia Prima Putra
    Nov 19 '18 at 2:41


















0















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 '18 at 2:41











  • @AlexBailey I'll try that, I'll inform you if it works

    – Gelar Aulia Prima Putra
    Nov 19 '18 at 2:41














0












0








0


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 '18 at 1:55









Gelar Aulia Prima PutraGelar 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 '18 at 2:41











  • @AlexBailey I'll try that, I'll inform you if it works

    – Gelar Aulia Prima Putra
    Nov 19 '18 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 '18 at 2:41











  • @AlexBailey I'll try that, I'll inform you if it works

    – Gelar Aulia Prima Putra
    Nov 19 '18 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 '18 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 '18 at 2:41













@AlexBailey I'll try that, I'll inform you if it works

– Gelar Aulia Prima Putra
Nov 19 '18 at 2:41





@AlexBailey I'll try that, I'll inform you if it works

– Gelar Aulia Prima Putra
Nov 19 '18 at 2:41












1 Answer
1






active

oldest

votes


















1














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',
    autoActivateHeartbeat: false,
    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









    1














    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




























      1














      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


























        1












        1








        1







        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 '18 at 6:18









        Gelar Aulia Prima PutraGelar 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.




            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

            A CLEAN and SIMPLE way to add appendices to Table of Contents and bookmarks

            Calculate evaluation metrics using cross_val_predict sklearn

            Insert data from modal to MySQL (multiple modal on website)