2626 */
2727package com .salesforce .androidsdk .analytics ;
2828
29+ import static com .salesforce .androidsdk .analytics .SalesforceAnalyticsManager .SalesforceAnalyticsPublishingType .PublishOnAppBackground ;
30+ import static com .salesforce .androidsdk .analytics .SalesforceAnalyticsManager .SalesforceAnalyticsPublishingType .PublishPeriodically ;
31+
2932import android .content .Context ;
3033import android .content .SharedPreferences ;
3134import android .os .Build ;
3235import android .text .TextUtils ;
3336
37+ import androidx .annotation .NonNull ;
38+
3439import com .salesforce .androidsdk .accounts .UserAccount ;
3540import com .salesforce .androidsdk .analytics .manager .AnalyticsManager ;
3641import com .salesforce .androidsdk .analytics .model .DeviceAppAttributes ;
@@ -71,8 +76,10 @@ public class SalesforceAnalyticsManager {
7176
7277 private static Map <String , SalesforceAnalyticsManager > INSTANCES ;
7378 private static boolean isPublishWorkRequestEnqueued ;
74- private static boolean isPublishOneTimeOnAppBackgroundEnabled = true ;
75- private static boolean isPublishPeriodicallyOnFrequencyEnabled = false ;
79+
80+ /** The enabled Salesforce analytics publishing type */
81+ private static @ NonNull SalesforceAnalyticsPublishingType analyticsPublishingType = PublishOnAppBackground ;
82+
7683 private static int publishPeriodicallyFrequencyHours = DEFAULT_PUBLISH_FREQUENCY_IN_HOURS ;
7784 private static int sEventPublishBatchSize = DEFAULT_BATCH_SIZE ;
7885
@@ -192,13 +199,13 @@ public static synchronized void reset(UserAccount account, String communityId) {
192199 * is recommended to keep
193200 * this value under seven
194201 * days
195- * @see #setPublishPeriodicallyOnFrequencyEnabled(boolean )
202+ * @see #setAnalyticsPublishingType(SalesforceAnalyticsPublishingType )
196203 */
197204 public static synchronized void setPublishPeriodicallyFrequencyHours (
198205 int periodicBackgroundPublishingHoursInterval
199206 ) {
200207 SalesforceAnalyticsManager .publishPeriodicallyFrequencyHours = periodicBackgroundPublishingHoursInterval ;
201- setPublishPeriodicallyOnFrequencyEnabled ( true );
208+ setAnalyticsPublishingType ( PublishPeriodically );
202209 }
203210
204211 /**
@@ -215,49 +222,21 @@ public static synchronized void setPublishFrequencyInHours(
215222 }
216223
217224 /**
218- * Specifies if analytics publishing should occur one time when the app is
219- * sent to the background.
220- */
221- public static boolean isPublishOnceTimeOnAppBackgroundEnabled () {
222- return isPublishOneTimeOnAppBackgroundEnabled ;
223- }
224-
225- /**
226- * Specifies if analytics publishing should occur one time when the app is
227- * sent to the background.
228- * <p/>
229- * This is mutually exclusive with
230- * [setPublishPeriodicallyOnFrequencyEnabled]
231- *
232- * @param value True to enable. False to disable
233- */
234- public static void setPublishOnceTimeOnAppBackgroundEnabled (boolean value ) {
235- isPublishOneTimeOnAppBackgroundEnabled = value ;
236- }
237-
238- /**
239- * Specifies if analytics publishing should occur periodically as an
240- * Android Background Task according to the frequency.
225+ * The enabled Salesforce analytics publishing type.
241226 *
242- * @noinspection unused
243- * @see #setPublishPeriodicallyFrequencyHours
227+ * @return The enabled Salesforce analytics publishing type
244228 */
245- public static boolean isPublishPeriodicallyOnFrequencyEnabled () {
246- return isPublishPeriodicallyOnFrequencyEnabled ;
229+ public static @ NonNull SalesforceAnalyticsPublishingType analyticsPublishingType () {
230+ return analyticsPublishingType ;
247231 }
248232
249233 /**
250- * Specifies if analytics publishing should occur periodically as an
251- * Android Background Task according to the frequency.
252- * <p>
253- * This is mutually exclusive with
254- * [setPublishOnceTimeOnAppBackgroundEnabled]
234+ * Sets the enabled Salesforce analytics publishing type.
255235 *
256- * @param value True to enable. False to disable
257- * @see #setPublishPeriodicallyFrequencyHours
236+ * @param value The Salesforce analytics publishing type
258237 */
259- public static void setPublishPeriodicallyOnFrequencyEnabled ( boolean value ) {
260- isPublishPeriodicallyOnFrequencyEnabled = value ;
238+ public static void setAnalyticsPublishingType ( @ NonNull final SalesforceAnalyticsPublishingType value ) {
239+ analyticsPublishingType = value ;
261240 }
262241
263242 /**
@@ -564,4 +543,29 @@ private static void recreateAnalyticsPeriodicBackgroundPublishingWorkRequest() {
564543 (long ) publishPeriodicallyFrequencyHours
565544 );
566545 }
546+
547+ /**
548+ * The available Salesforce analytics publishing types.
549+ */
550+ public enum SalesforceAnalyticsPublishingType {
551+
552+ /**
553+ * Specifies analytics should not be published
554+ */
555+ PublishDisabled ,
556+
557+ /**
558+ * Specifies analytics publishing should occur one time when the app is sent to the
559+ * background
560+ */
561+ PublishOnAppBackground ,
562+
563+ /**
564+ * Specifies analytics publishing should occur periodically as a Android Background Task
565+ * according to the frequency
566+ *
567+ * @see #setPublishPeriodicallyFrequencyHours
568+ */
569+ PublishPeriodically
570+ }
567571}
0 commit comments