Skip to content

Commit 9aed53e

Browse files
authored
Merge pull request #2260 from OneSignal/player-model-log-listener
Player model - Add log listener debug feature
2 parents 8a3e2c2 + 8ad2be9 commit 9aed53e

File tree

4 files changed

+54
-0
lines changed

4 files changed

+54
-0
lines changed

Examples/OneSignalDemo/app/src/main/java/com/onesignal/sdktest/application/MainApplication.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
import com.onesignal.OSNotification;
99
import com.onesignal.OSInAppMessageLifecycleHandler;
1010
import com.onesignal.OneSignal;
11+
import com.onesignal.debug.OneSignalLogEvent;
12+
import com.onesignal.debug.OneSignalLogListener;
1113
import com.onesignal.sdktest.R;
1214
import com.onesignal.sdktest.constant.Tag;
1315
import com.onesignal.sdktest.constant.Text;
@@ -74,4 +76,19 @@ public void onDidDismissInAppMessage(OSInAppMessage message) {
7476
Log.d(Tag.DEBUG, Text.ONESIGNAL_SDK_INIT);
7577
}
7678

79+
private void setupLogListener() {
80+
OneSignalLogListener logListener = new OneSignalLogListener() {
81+
@Override
82+
public void onLogEvent(OneSignalLogEvent event) {
83+
// App developer can send these logs to their backend, the
84+
// println code here is just to show it works.
85+
System.out.println(event.getEntry());
86+
}
87+
};
88+
89+
OneSignal.addLogListener(logListener);
90+
// Remove can be called if you need to stop collecting logs.
91+
// OneSignal.removeLogListener(logListener);
92+
}
93+
7794
}

OneSignalSDK/onesignal/src/main/java/com/onesignal/OneSignal.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@
4545
import androidx.annotation.WorkerThread;
4646
import androidx.core.app.NotificationCompat;
4747

48+
import com.onesignal.debug.OneSignalLogEvent;
49+
import com.onesignal.debug.OneSignalLogListener;
4850
import com.onesignal.influence.data.OSTrackerFactory;
4951
import com.onesignal.influence.domain.OSInfluence;
5052
import com.onesignal.language.LanguageContext;
@@ -1332,6 +1334,28 @@ public void run() {
13321334
Log.e(TAG, "Error showing logging message.", t);
13331335
}
13341336
}
1337+
1338+
callLogListeners(level, message, throwable);
1339+
}
1340+
1341+
private static void callLogListeners(@NonNull final LOG_LEVEL level, @NonNull String message, @Nullable Throwable throwable) {
1342+
String logEntry = message;
1343+
if (throwable != null) {
1344+
logEntry += "\n" + Log.getStackTraceString(throwable);
1345+
}
1346+
for (OneSignalLogListener listener : logListeners) {
1347+
listener.onLogEvent(new OneSignalLogEvent(level, logEntry));
1348+
}
1349+
}
1350+
1351+
private static final List<OneSignalLogListener> logListeners = new ArrayList<>();
1352+
1353+
public static void addLogListener(@NonNull OneSignalLogListener listener) {
1354+
logListeners.add(listener);
1355+
}
1356+
1357+
public static void removeLogListener(@NonNull OneSignalLogListener listener) {
1358+
logListeners.remove(listener);
13351359
}
13361360

13371361
static void logHttpError(String errorString, int statusCode, Throwable throwable, String errorResponse) {
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.onesignal.debug
2+
3+
import com.onesignal.OneSignal
4+
5+
data class OneSignalLogEvent(
6+
val level: OneSignal.LOG_LEVEL,
7+
val entry: String,
8+
)
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.onesignal.debug
2+
3+
interface OneSignalLogListener {
4+
fun onLogEvent(event: OneSignalLogEvent)
5+
}

0 commit comments

Comments
 (0)