@@ -2951,7 +2951,8 @@ static OSSessionManager getSessionManager() {
2951
2951
}
2952
2952
2953
2953
static void sendClickActionOutcomes (@ NonNull List <OSInAppMessageOutcome > outcomes ) {
2954
- if (outcomeEventsController == null ) {
2954
+ // This is called from IAM shouldn't need this check
2955
+ if (outcomeEventsController == null || appId == null ) {
2955
2956
OneSignal .Log (LOG_LEVEL .ERROR , "Make sure OneSignal.init is called first" );
2956
2957
return ;
2957
2958
}
@@ -2963,14 +2964,23 @@ public static void sendOutcome(@NonNull String name) {
2963
2964
sendOutcome (name , null );
2964
2965
}
2965
2966
2966
- public static void sendOutcome (@ NonNull String name , OutcomeCallback callback ) {
2967
+ public static void sendOutcome (@ NonNull final String name , final OutcomeCallback callback ) {
2967
2968
if (!isValidOutcomeEntry (name )) {
2968
2969
logger .error ("Make sure OneSignal initWithContext and setAppId is called first" );
2969
2970
return ;
2970
2971
}
2971
2972
2972
- if (outcomeEventsController == null ) {
2973
- logger .error ("Make sure OneSignal initWithContext and setAppId is called first" );
2973
+ // Outcomes needs app id, delay until init is not done
2974
+ if (taskController .shouldQueueTaskForInit (OSTaskController .SEND_OUTCOME ) || outcomeEventsController == null ) {
2975
+ logger .error ("Waiting for remote params. " +
2976
+ "Moving " + OSTaskController .SEND_OUTCOME + " operation to a pending queue." );
2977
+ taskController .addTaskToQueue (new Runnable () {
2978
+ @ Override
2979
+ public void run () {
2980
+ logger .debug ("Running " + OSTaskController .HANDLE_NOTIFICATION_OPEN + " operation from pending queue." );
2981
+ sendOutcome (name , callback );
2982
+ }
2983
+ });
2974
2984
return ;
2975
2985
}
2976
2986
@@ -2981,12 +2991,21 @@ public static void sendUniqueOutcome(@NonNull String name) {
2981
2991
sendUniqueOutcome (name , null );
2982
2992
}
2983
2993
2984
- public static void sendUniqueOutcome (@ NonNull String name , OutcomeCallback callback ) {
2994
+ public static void sendUniqueOutcome (@ NonNull final String name , final OutcomeCallback callback ) {
2985
2995
if (!isValidOutcomeEntry (name ))
2986
2996
return ;
2987
2997
2988
- if (outcomeEventsController == null ) {
2989
- logger .error ("Make sure OneSignal initWithContext and setAppId is called first" );
2998
+ // Outcomes needs app id, delay until init is not done
2999
+ if (taskController .shouldQueueTaskForInit (OSTaskController .SEND_UNIQUE_OUTCOME ) || outcomeEventsController == null ) {
3000
+ logger .error ("Waiting for remote params. " +
3001
+ "Moving " + OSTaskController .SEND_UNIQUE_OUTCOME + " operation to a pending queue." );
3002
+ taskController .addTaskToQueue (new Runnable () {
3003
+ @ Override
3004
+ public void run () {
3005
+ logger .debug ("Running " + OSTaskController .HANDLE_NOTIFICATION_OPEN + " operation from pending queue." );
3006
+ sendUniqueOutcome (name , callback );
3007
+ }
3008
+ });
2990
3009
return ;
2991
3010
}
2992
3011
@@ -2997,12 +3016,21 @@ public static void sendOutcomeWithValue(@NonNull String name, float value) {
2997
3016
sendOutcomeWithValue (name , value , null );
2998
3017
}
2999
3018
3000
- public static void sendOutcomeWithValue (@ NonNull String name , float value , OutcomeCallback callback ) {
3019
+ public static void sendOutcomeWithValue (@ NonNull final String name , final float value , final OutcomeCallback callback ) {
3001
3020
if (!isValidOutcomeEntry (name ) || !isValidOutcomeValue (value ))
3002
3021
return ;
3003
3022
3004
- if (outcomeEventsController == null ) {
3005
- logger .error ("Make sure OneSignal.init is called first" );
3023
+ // Outcomes needs app id, delay until init is not done
3024
+ if (taskController .shouldQueueTaskForInit (OSTaskController .SEND_OUTCOME_WITH_VALUE ) || outcomeEventsController == null ) {
3025
+ logger .error ("Waiting for remote params. " +
3026
+ "Moving " + OSTaskController .SEND_OUTCOME_WITH_VALUE + " operation to a pending queue." );
3027
+ taskController .addTaskToQueue (new Runnable () {
3028
+ @ Override
3029
+ public void run () {
3030
+ logger .debug ("Running " + OSTaskController .HANDLE_NOTIFICATION_OPEN + " operation from pending queue." );
3031
+ sendOutcomeWithValue (name , value , callback );
3032
+ }
3033
+ });
3006
3034
return ;
3007
3035
}
3008
3036
0 commit comments