Panagiotis Triantafyllou

plugin configuration

Showing 697 changed files with 3333 additions and 1297 deletions
...@@ -43,7 +43,7 @@ android { ...@@ -43,7 +43,7 @@ android {
43 43
44 dependencies { 44 dependencies {
45 implementation fileTree(dir: 'libs', include: ['*.jar']) 45 implementation fileTree(dir: 'libs', include: ['*.jar'])
46 - implementation project(':libraries:warply_android_sdk') 46 + implementation project(':warply_android_sdk')
47 47
48 //Support 48 //Support
49 implementation 'androidx.appcompat:appcompat:1.4.1' 49 implementation 'androidx.appcompat:appcompat:1.4.1'
......
...@@ -5,11 +5,13 @@ buildscript { ...@@ -5,11 +5,13 @@ buildscript {
5 mavenCentral() 5 mavenCentral()
6 google() 6 google()
7 maven { url 'https://developer.huawei.com/repo/' } 7 maven { url 'https://developer.huawei.com/repo/' }
8 + maven { url 'https://plugins.gradle.org/m2/' }
8 } 9 }
9 dependencies { 10 dependencies {
10 classpath 'com.android.tools.build:gradle:7.0.4' 11 classpath 'com.android.tools.build:gradle:7.0.4'
11 classpath 'com.google.gms:google-services:4.3.10' 12 classpath 'com.google.gms:google-services:4.3.10'
12 classpath 'com.huawei.agconnect:agcp:1.6.2.300' 13 classpath 'com.huawei.agconnect:agcp:1.6.2.300'
14 + classpath 'io.github.gradle-nexus:publish-plugin:1.1.0'
13 15
14 // NOTE: Do not place your application dependencies here; they belong 16 // NOTE: Do not place your application dependencies here; they belong
15 // in the individual module build.gradle files 17 // in the individual module build.gradle files
...@@ -21,5 +23,9 @@ allprojects { ...@@ -21,5 +23,9 @@ allprojects {
21 mavenCentral() 23 mavenCentral()
22 google() 24 google()
23 maven { url 'https://developer.huawei.com/repo/' } 25 maven { url 'https://developer.huawei.com/repo/' }
26 + maven { url 'https://plugins.gradle.org/m2/' }
24 } 27 }
25 } 28 }
29 +
30 +apply plugin: 'io.github.gradle-nexus.publish-plugin'
31 +apply from: "${rootDir}/scripts/publish-root.gradle"
...\ No newline at end of file ...\ No newline at end of file
......
1 -package ly.warp.sdk.views;
2 -
3 -import android.content.Context;
4 -import androidx.fragment.app.Fragment;
5 -import androidx.fragment.app.FragmentActivity;
6 -import androidx.fragment.app.FragmentManager;
7 -import androidx.fragment.app.FragmentTransaction;
8 -import android.text.TextUtils;
9 -
10 -import ly.warp.sdk.BuildConfig;
11 -import ly.warp.sdk.Warply;
12 -import ly.warp.sdk.fragments.WarpViewFragment;
13 -import ly.warp.sdk.io.callbacks.CallbackReceiver;
14 -import ly.warp.sdk.io.callbacks.SimpleCallbackReceiver;
15 -import ly.warp.sdk.io.models.CampaignList;
16 -import ly.warp.sdk.io.request.WarplyInboxRequest;
17 -
18 -public class CampaignViewLoader implements CallbackReceiver<CampaignList> {
19 -
20 - // ===========================================================
21 - // Constants
22 - // ===========================================================
23 -
24 - // ===========================================================
25 - // Fields
26 - // ===========================================================
27 -
28 - private DisplayBuilder mLastDisplayBuilder;
29 - private SimpleCallbackReceiver<CampaignList> mExternalListener;
30 -
31 - // ===========================================================
32 - // Constructors
33 - // ===========================================================
34 -
35 - public CampaignViewLoader(Context context) {
36 - Warply.getInitializer(context).init();
37 - }
38 -
39 - // ===========================================================
40 - // Methods for/from SuperClass/Interfaces
41 - // ===========================================================
42 -
43 - @Override
44 - public void onSuccess(CampaignList result) {
45 -
46 - if (result != null && result.size() > 0) {
47 - showWarplyFragment(mLastDisplayBuilder, result.get(0).getSessionUUID());
48 - }
49 - notifySuccessExternalListener(result);
50 - }
51 -
52 - @Override
53 - public void onFailure(int errorCode) {
54 -
55 - notifyFailureExternalListener(errorCode);
56 - }
57 -
58 - // ===========================================================
59 - // Methods
60 - // ===========================================================
61 -
62 - private void requestCampaignsIfNeed(DisplayBuilder builder, WarplyInboxRequest request, String sessionUuid) {
63 -
64 - if (request != null && TextUtils.isEmpty(sessionUuid)) {
65 - mLastDisplayBuilder = builder;
66 - Warply.getInbox(request, this);
67 - } else if (!TextUtils.isEmpty(sessionUuid)) {
68 - showWarplyFragment(builder, sessionUuid);
69 - notifySuccessExternalListener(null);
70 - }
71 - }
72 -
73 - private void showWarplyFragment(DisplayBuilder builder, String sessionUuid) {
74 -
75 - if (builder != null && builder.fragmentManager != null) {
76 -
77 - WarpViewFragment warpFragment = WarpViewFragment.newInstance(sessionUuid, builder.isUseProgress, builder.isShowCloseBtn);
78 - FragmentTransaction transaction = builder.fragmentManager.beginTransaction()
79 - .replace(builder.containerId, warpFragment,
80 - WarpViewFragment.class.getSimpleName())
81 - .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
82 -
83 - if (builder.isAddToBackStack) {
84 - transaction.addToBackStack(null);
85 - }
86 -
87 - try {
88 - transaction.commit();
89 - } catch (IllegalStateException e) {
90 - if (BuildConfig.DEBUG) {
91 - e.printStackTrace();
92 - }
93 - }
94 - }
95 - }
96 -
97 - private void notifySuccessExternalListener(CampaignList campaigns) {
98 -
99 - if (mExternalListener != null) {
100 - mExternalListener.onSuccess(campaigns);
101 - }
102 - }
103 -
104 - private void notifyFailureExternalListener(int errorCode) {
105 -
106 - if (mExternalListener != null) {
107 - mExternalListener.onFailure(errorCode);
108 - }
109 - }
110 -
111 - // ===========================================================
112 - // Getter & Setter
113 - // ===========================================================
114 -
115 - public void setCampaignsListener(SimpleCallbackReceiver<CampaignList> listener) {
116 - this.mExternalListener = listener;
117 - }
118 -
119 - public DisplayBuilder DisplayBuilder() {
120 - return new DisplayBuilder();
121 - }
122 -
123 - // ===========================================================
124 - // Inner and Anonymous Classes
125 - // ===========================================================
126 -
127 - public class DisplayBuilder {
128 -
129 - private boolean isUseProgress = false;
130 - private boolean isShowCloseBtn = true;
131 - private boolean isAddToBackStack = true;
132 -
133 - private FragmentManager fragmentManager;
134 - private int containerId;
135 -
136 - public void display(FragmentActivity activity, WarplyInboxRequest request) {
137 -
138 - if (activity != null && !activity.isFinishing()) {
139 - display(activity, android.R.id.content, request);
140 - }
141 - }
142 -
143 - public void display(FragmentActivity activity, int containerId, WarplyInboxRequest request) {
144 -
145 - if (activity != null && !activity.isFinishing()) {
146 - this.fragmentManager = activity.getSupportFragmentManager();
147 - this.containerId = containerId;
148 - requestCampaignsIfNeed(this, request, null);
149 - }
150 - }
151 -
152 - public void display(Fragment parentFragment, int containerId, WarplyInboxRequest request) {
153 -
154 - if (parentFragment != null && parentFragment.getActivity() != null && !parentFragment.getActivity().isFinishing()) {
155 - this.fragmentManager = parentFragment.getChildFragmentManager();
156 - this.containerId = containerId;
157 - requestCampaignsIfNeed(this, request, null);
158 - }
159 - }
160 -
161 - public void display(FragmentActivity activity, String sessionUuid) {
162 -
163 - if (activity != null && !activity.isFinishing()) {
164 - display(activity, android.R.id.content, sessionUuid);
165 - }
166 - }
167 -
168 - public void display(FragmentActivity activity, int containerId, String sessionUuid) {
169 -
170 - if (activity != null && !activity.isFinishing()) {
171 - this.fragmentManager = activity.getSupportFragmentManager();
172 - this.containerId = containerId;
173 - requestCampaignsIfNeed(this, null, sessionUuid);
174 - }
175 - }
176 -
177 - public void display(Fragment parentFragment, int containerId, String sessionUuid) {
178 -
179 - if (parentFragment != null && parentFragment.getActivity() != null && !parentFragment.getActivity().isFinishing()) {
180 - this.fragmentManager = parentFragment.getChildFragmentManager();
181 - this.containerId = containerId;
182 - requestCampaignsIfNeed(this, null, sessionUuid);
183 - }
184 - }
185 -
186 - public DisplayBuilder setUseProgress(boolean use) {
187 - this.isUseProgress = use;
188 - return this;
189 - }
190 -
191 - public DisplayBuilder setShowCloseBtn(boolean show) {
192 - this.isShowCloseBtn = show;
193 - return this;
194 - }
195 -
196 - public DisplayBuilder setAddToBackStack(boolean add) {
197 - this.isAddToBackStack = add;
198 - return this;
199 - }
200 -
201 - }
202 -}
1 -package ly.warp.sdk.views.adapters.mix;
2 -
3 -import android.os.AsyncTask;
4 -import androidx.annotation.NonNull;
5 -
6 -import java.util.ArrayList;
7 -import java.util.HashSet;
8 -import java.util.List;
9 -import java.util.Set;
10 -
11 -import ly.warp.sdk.io.models.Campaign;
12 -import ly.warp.sdk.utils.WarpUtils;
13 -import ly.warp.sdk.utils.managers.WarplyAnalyticsManager;
14 -
15 -/**
16 - * Helper class that used within the {@Link CampaignsMixController}
17 - * and allow to track native campaigns events.
18 - * Mix adapters monitor 2 types of events: view campaign in list and click on campaign item.
19 - */
20 -public class CampaignsMixTracker {
21 -
22 - // ===========================================================
23 - // Constants
24 - // ===========================================================
25 -
26 - private enum TrackEvent {
27 -
28 - CAMPAIGN_VIEW("native_campaign_view"), CAMPAIGN_CLICK("native_campaign_click");
29 -
30 - private String type;
31 -
32 - TrackEvent(String type) {
33 - this.type = type;
34 - }
35 -
36 - public String getTrackMessage(@NonNull Campaign campaign) {
37 - return type + ":" + campaign.getSessionUUID();
38 - }
39 - }
40 -
41 - // ===========================================================
42 - // Fields
43 - // ===========================================================
44 -
45 - private CampaignsMixController mMixController;
46 - private int mOldFirstVisibleItem = -1;
47 - private HashSet<Integer> mVisibleCampaignIndexes;
48 - private Set<Integer> mNewCampaignIndexes;
49 - private Set<Integer> mUpdatedCampaignIndexes;
50 -
51 - // ===========================================================
52 - // Constructors
53 - // ===========================================================
54 -
55 - public CampaignsMixTracker(@NonNull CampaignsMixController mixController) {
56 -
57 - mMixController = mixController;
58 - mVisibleCampaignIndexes = new HashSet<>();
59 - mNewCampaignIndexes = new HashSet<>();
60 - mUpdatedCampaignIndexes = new HashSet<>();
61 - }
62 -
63 - // ===========================================================
64 - // Methods for/from SuperClass/Interfaces
65 - // ===========================================================
66 -
67 - // ===========================================================
68 - // Methods
69 - // ===========================================================
70 -
71 - // ===========================================================
72 - // Getter & Setter
73 - // ===========================================================
74 -
75 - /**
76 - * call in onScroll for correct results
77 - *
78 - * @param firstVisiblePosition - first visible position in global adapter
79 - * @param lastVisibleItemPosition - last visible position in global adapter
80 - */
81 - public void trackCampaignsView(int firstVisiblePosition, int lastVisibleItemPosition) {
82 -
83 - if (lastVisibleItemPosition >= firstVisiblePosition && mOldFirstVisibleItem != firstVisiblePosition) {
84 - mOldFirstVisibleItem = firstVisiblePosition;
85 -
86 - /*Log.i("list_view_scroll", "first: " + firstVisibleItem + " visibleCount: " + visibleItemCount +
87 - " last: " +lastVisibleItem);*/
88 -
89 - mNewCampaignIndexes.clear();
90 - mUpdatedCampaignIndexes.clear();
91 - for (int i = firstVisiblePosition; i < lastVisibleItemPosition + 1; i++) {
92 - if (mMixController.getItemViewType(i) == mMixController.getCampaignItemViewType()) {
93 - // if new campaign index
94 - if (mVisibleCampaignIndexes.add(i)) {
95 - mNewCampaignIndexes.add(i);
96 - } else {
97 - mUpdatedCampaignIndexes.add(i);
98 - }
99 - }
100 - }
101 -
102 - // retain only visible indexes
103 - mVisibleCampaignIndexes.clear();
104 - mVisibleCampaignIndexes.addAll(mUpdatedCampaignIndexes);
105 - mVisibleCampaignIndexes.addAll(mNewCampaignIndexes);
106 -
107 - // update new campaigns
108 - if (mNewCampaignIndexes.size() > 0) {
109 - new TrackCampaignsTask(mNewCampaignIndexes, TrackEvent.CAMPAIGN_VIEW).execute();
110 - }
111 - }
112 - }
113 -
114 - public void trackCampaignClick(Campaign campaign) {
115 -
116 - if (campaign != null) {
117 - new TrackCampaignsTask(campaign, TrackEvent.CAMPAIGN_CLICK).execute();
118 - }
119 -
120 - }
121 -
122 - // ===========================================================
123 - // Inner and Anonymous Classes
124 - // ===========================================================
125 -
126 - private class TrackCampaignsTask extends AsyncTask<Void, Void, Void> {
127 -
128 - private List<Campaign> mmTrackCampaigns;
129 - private TrackEvent mmTrackEvent;
130 -
131 - private TrackCampaignsTask(Set<Integer> indexes, TrackEvent event) {
132 -
133 - mmTrackEvent = event;
134 - if (indexes != null && indexes.size() > 0) {
135 - mmTrackCampaigns = new ArrayList<>(indexes.size());
136 - for (int index : indexes) {
137 - Campaign camp = mMixController.getCampaignItem(index);
138 - if (camp != null) {
139 - mmTrackCampaigns.add(camp);
140 - }
141 - }
142 - }
143 - }
144 -
145 - private TrackCampaignsTask(Campaign campaign, TrackEvent event) {
146 -
147 - mmTrackEvent = event;
148 - if (campaign != null) {
149 - mmTrackCampaigns = new ArrayList<>(1);
150 - mmTrackCampaigns.add(campaign);
151 - }
152 - }
153 -
154 - @Override
155 - protected Void doInBackground(Void... params) {
156 -
157 - if (mmTrackCampaigns != null) {
158 - for (Campaign campaign : mmTrackCampaigns) {
159 -
160 - WarplyAnalyticsManager.logEvent(null, mmTrackEvent.getTrackMessage(campaign), null);
161 - WarpUtils.log("track_campaigns - " + mmTrackEvent.getTrackMessage(campaign) + " - " + campaign.getTitle());
162 - }
163 - }
164 - return null;
165 - }
166 - }
167 -}
1 -package ly.warp.sdk.views.dialogs;
2 -
3 -import android.content.Context;
4 -
5 -import androidx.appcompat.app.AlertDialog;
6 -import android.view.Gravity;
7 -import android.view.LayoutInflater;
8 -import android.view.View;
9 -import android.widget.ImageView;
10 -import android.widget.LinearLayout;
11 -import android.widget.TextView;
12 -
13 -import com.bumptech.glide.Glide;
14 -
15 -import ly.warp.sdk.R;
16 -import ly.warp.sdk.activities.WarpViewActivity;
17 -import ly.warp.sdk.io.models.Campaign;
18 -
19 -/**
20 - * Created by Panagiotis Triantafyllou on 28-Mar-19.
21 - */
22 -
23 -public class InAppDialog {
24 -
25 - // ===========================================================
26 - // Constants
27 - // ===========================================================
28 -
29 - // ===========================================================
30 - // Fields
31 - // ===========================================================
32 -
33 - private static Context mContext;
34 - private static AlertDialog mInAppDialog;
35 -
36 - // ===========================================================
37 - // Methods for/from SuperClass/Interfaces
38 - // ===========================================================
39 -
40 - // ===========================================================
41 - // Methods
42 - // ===========================================================
43 -
44 - public static void showDefaultInAppDialog(Context context, Campaign campaignToShow, boolean showViewBtn, int v) {
45 - mContext = context;
46 - showDefaultInAppDialog(context, campaignToShow, showViewBtn);
47 - }
48 -
49 - private static void showDefaultInAppDialog(final Context context, final Campaign campaignToShow, boolean showViewBtn) {
50 - if (mInAppDialog != null && mInAppDialog.isShowing()) {
51 - mInAppDialog.dismiss();
52 - }
53 -
54 - LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
55 - View customView = inflater.inflate(R.layout.layout_inapp_alert_dialog_default, null);
56 -
57 - LinearLayout customButtonsView = customView.findViewById(R.id.ll_custom_buttons_view);
58 - LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
59 - params.gravity = Gravity.RIGHT | Gravity.END;
60 -
61 - ImageView campaignImage = customView.findViewById(R.id.iv_inapp_image);
62 - TextView campaignTitle = customView.findViewById(R.id.tv_inapp_title);
63 - TextView campaignSubtitle = customView.findViewById(R.id.tv_inapp_subtitle);
64 -
65 - Glide
66 - .with(context)
67 - .load(campaignToShow.getLogoUrl())
68 - .placeholder(R.drawable.ic_default_campaign)
69 - .into(campaignImage);
70 - campaignTitle.setText(campaignToShow.getTitle());
71 - campaignSubtitle.setText(campaignToShow.getSubtitle());
72 -
73 - if (showViewBtn) {
74 - String[] items = {"View", "Close"};
75 - TextView viewBtn = new TextView(context);
76 - viewBtn.setId(0);
77 - viewBtn.setTag(items[0]);
78 - viewBtn.setText(items[0]);
79 - viewBtn.setTextAppearance(context, R.style.InAppButtonsStyle);
80 - viewBtn.setOnClickListener(new View.OnClickListener() {
81 - @Override
82 - public void onClick(View v) {
83 - context.startActivity(WarpViewActivity.createIntentFromSessionUUID(mContext,
84 - campaignToShow.getSessionUUID()));
85 - mInAppDialog.dismiss();
86 - }
87 - });
88 - customButtonsView.addView(viewBtn, params);
89 -
90 -// dialog.setItems(items, new DialogInterface.OnClickListener() {
91 -// public void onClick(DialogInterface dialog, int which) {
92 -// switch (which) {
93 -// case 0:
94 -// context.startActivity(WarpViewActivity.createIntentFromSessionUUID(context,
95 -// campaignToShow.getSessionUUID()));
96 -// break;
97 -//
98 -// case 1:
99 -// break;
100 -// }
101 -// }
102 -// });
103 - mInAppDialog = new AlertDialog.Builder(context)
104 - .setView(customView)
105 - .create();
106 - mInAppDialog.show();
107 - } else {
108 -// AlertDialog.Builder dialog = new AlertDialog.Builder(context);
109 -// mInAppDialog.setView(customView);
110 -// mInAppDialog.setNegativeButton("Close", new DialogInterface.OnClickListener() {
111 -// public void onClick(DialogInterface dialog, int id) {
112 -// }
113 -// });
114 -// mInAppDialog = new AlertDialog.Builder(context)
115 -// .create();
116 -// mInAppDialog.show();
117 - }
118 - }
119 -
120 - // ===========================================================
121 - // Inner and Anonymous Classes
122 - // ===========================================================
123 -}
1 -package ly.warp.sdk.views.dialogs;
2 -
3 -public interface OnClickButtonListener {
4 -
5 - void onClickButton(int which);
6 -
7 -}
...\ No newline at end of file ...\ No newline at end of file
1 -package ly.warp.sdk.views.dialogs;
2 -
3 -import android.app.Activity;
4 -import android.content.Context;
5 -import android.view.View;
6 -
7 -import java.util.Date;
8 -
9 -public class RateDialog {
10 -
11 - private static RateDialog singleton;
12 -
13 - private Context context;
14 -
15 - private final RateDialogOptions options = new RateDialogOptions();
16 -
17 - private int installDate = -1;
18 -
19 - private int launchTimes = -1;
20 -
21 - private int remindInterval = 1;
22 -
23 - private int eventsTimes = -1;
24 -
25 - private boolean isDebug = false;
26 -
27 - public RateDialog(Context context) {
28 - this.context = context;
29 - }
30 -
31 - public static RateDialog with(Context context) {
32 - if (singleton == null) {
33 - synchronized (RateDialog.class) {
34 - if (singleton == null) {
35 - singleton = new RateDialog(context);
36 - }
37 - }
38 - }
39 - return singleton;
40 - }
41 -
42 - public void launch() {
43 - if(RatePreferenceHelper.isFirstLaunch(context)) {
44 - RatePreferenceHelper.setInstallDate(context);
45 - }
46 -
47 - RatePreferenceHelper.setLaunchTimes(context, RatePreferenceHelper.getLaunchTimes(context) + 1);
48 - }
49 -
50 - public static boolean showRateDialogIfMeetsConditions(Activity activity) {
51 - boolean isMeetsConditions = singleton.isDebug || singleton.shouldShowRateDialog();
52 - if (isMeetsConditions) {
53 - singleton.showRateDialog(activity);
54 - }
55 - return isMeetsConditions;
56 - }
57 -
58 - public static boolean passSignificantEventAndConditions(Activity activity) {
59 - return passSignificantEvent(activity, singleton.shouldShowRateDialog());
60 - }
61 -
62 - private static boolean passSignificantEvent(Activity activity, boolean shouldShow) {
63 - int eventTimes = RatePreferenceHelper.getEventTimes(activity);
64 - RatePreferenceHelper.setEventTimes(activity, ++eventTimes);
65 - boolean isMeetsConditions = singleton.isDebug || (singleton.isOverEventTimes() && shouldShow);
66 - if (isMeetsConditions) {
67 - singleton.showRateDialog(activity);
68 - }
69 - return isMeetsConditions;
70 - }
71 -
72 - public RateDialog clearPreferenceSettings() {
73 - RatePreferenceHelper.setAgreeShowDialog(context, true);
74 - RatePreferenceHelper.clearSharedPreferences(context);
75 - return this;
76 - }
77 -
78 - private static boolean isOverDate(long targetDate, int threshold) {
79 - return new Date().getTime() - targetDate >= threshold * 24 * 60 * 60 * 1000;
80 - }
81 -
82 - public boolean shouldShowRateDialog() {
83 - return RatePreferenceHelper.getIsAgreeShowDialog(context) &&
84 - isOverLaunchTimes() &&
85 - isOverInstallDate() &&
86 - isOverIntervalDate();
87 - }
88 -
89 - public boolean isOverInstallDate() {
90 - if(installDate == -1)
91 - return true;
92 -
93 - return isOverDate(RatePreferenceHelper.getInstallDate(context), installDate);
94 - }
95 -
96 - public boolean isOverIntervalDate() {
97 - return isOverDate(RatePreferenceHelper.getRemindIntervalDate(context), remindInterval);
98 - }
99 -
100 - public boolean isOverLaunchTimes() {
101 - if(launchTimes == -1)
102 - return true;
103 -
104 - return RatePreferenceHelper.getLaunchTimes(context) >= launchTimes;
105 - }
106 -
107 - public boolean isOverEventTimes() {
108 - if(eventsTimes == -1)
109 - return true;
110 -
111 - return RatePreferenceHelper.getEventTimes(context) >= launchTimes;
112 - }
113 -
114 - public RateDialog setInstallDate(int installDate) {
115 - this.installDate = installDate;
116 - return this;
117 - }
118 -
119 - public RateDialog setLaunchTimes(int launchTimes) {
120 - this.launchTimes = launchTimes;
121 - return this;
122 - }
123 -
124 - public RateDialog setRemindInterval(int remindInterval) {
125 - this.remindInterval = remindInterval;
126 - return this;
127 - }
128 -
129 - public RateDialog setEventsTimes(int eventsTimes) {
130 - this.eventsTimes = eventsTimes;
131 - return this;
132 - }
133 -
134 - public RateDialog setShowNeutralButton(boolean isShowNeutralButton) {
135 - options.setShowNeutralButton(isShowNeutralButton);
136 - return this;
137 - }
138 -
139 - public RateDialog setShowTitle(boolean isShowTitle) {
140 - options.setShowTitle(isShowTitle);
141 - return this;
142 - }
143 -
144 - public RateDialog setView(View view) {
145 - options.setView(view);
146 - return this;
147 - }
148 -
149 - public RateDialog setOnClickButtonListener(OnClickButtonListener listener) {
150 - options.setListener(listener);
151 - return this;
152 - }
153 -
154 - public RateDialog setTitle(int resourceId) {
155 - options.setTitleResId(resourceId);
156 - return this;
157 - }
158 -
159 - public RateDialog setTitle(String title) {
160 - options.setTitleText(title);
161 - return this;
162 - }
163 -
164 - public RateDialog setMessage(int resourceId) {
165 - options.setMessageResId(resourceId);
166 - return this;
167 - }
168 -
169 - public RateDialog setMessage(String message) {
170 - options.setMessageText(message);
171 - return this;
172 - }
173 -
174 - public RateDialog setTextPositive(int resourceId) {
175 - options.setTextPositiveResId(resourceId);
176 - return this;
177 - }
178 -
179 - public RateDialog setTextPositive(String positiveText) {
180 - options.setPositiveText(positiveText);
181 - return this;
182 - }
183 -
184 - public RateDialog setTextNeutral(int resourceId) {
185 - options.setTextNeutralResId(resourceId);
186 - return this;
187 - }
188 -
189 - public RateDialog setTextNeutral(String neutralText) {
190 - options.setNeutralText(neutralText);
191 - return this;
192 - }
193 -
194 - public RateDialog setTextNegative(int resourceId) {
195 - options.setTextNegativeResId(resourceId);
196 - return this;
197 - }
198 -
199 - public RateDialog setTextNegative(String negativeText) {
200 - options.setNegativeText(negativeText);
201 - return this;
202 - }
203 -
204 - public RateDialog setCancelable(boolean cancelable) {
205 - options.setCancelable(cancelable);
206 - return this;
207 - }
208 -
209 - public RateDialog setPackageType(String packageType) {
210 - options.setPackageType(packageType);
211 - return this;
212 - }
213 -
214 - public RateDialog setPackageId(String packageId) {
215 - options.setPackageId(packageId);
216 - return this;
217 - }
218 -
219 - public RateDialog setDialogStyle(int style) {
220 - options.setDialogStyleResId(style);
221 - return this;
222 - }
223 -
224 - public RateDialog setIsDebug(boolean isDebug) {
225 - this.isDebug = isDebug;
226 - return this;
227 - }
228 -
229 - public void showRateDialog(Activity activity) {
230 - if (!activity.isFinishing()) {
231 - RateDialogManager.with(activity).create(options).show();
232 - }
233 - }
234 -}
1 -package ly.warp.sdk.views.dialogs;
2 -
3 -import android.app.AlertDialog;
4 -import android.app.Dialog;
5 -import android.content.Context;
6 -import android.content.DialogInterface;
7 -import android.content.Intent;
8 -import android.os.Build;
9 -import android.view.View;
10 -import android.widget.Button;
11 -import android.widget.LinearLayout;
12 -
13 -import static ly.warp.sdk.utils.constants.WarpConstants.PACKAGE_TITLE_GOOGLE;
14 -
15 -final class RateDialogManager {
16 -
17 - private static RateDialogManager singleton;
18 -
19 - private static Context context;
20 -
21 - static Dialog dialog = null;
22 -
23 - private RateDialogManager() {
24 - }
25 -
26 - private RateDialogManager(Context context) {
27 - this.context = context;
28 - }
29 -
30 - public static RateDialogManager with(Context context) {
31 - if (singleton == null) {
32 - synchronized (RateDialogManager.class) {
33 - if (singleton == null) {
34 - singleton = new RateDialogManager(context);
35 - }
36 - }
37 - }
38 - return singleton;
39 - }
40 -
41 - public RateDialogManager create(final RateDialogOptions options) {
42 - if (dialog != null)
43 - return this;
44 -
45 - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
46 - dialog = createDialog(context, options);
47 - } else {
48 - dialog = createMaterialDialog(context, options);
49 - }
50 -
51 - return this;
52 - }
53 -
54 - public void show() {
55 - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
56 - showDialog();
57 - } else {
58 - showMaterialDialog();
59 - }
60 - }
61 -
62 - static private void showDialog() {
63 - AlertDialog alertDialog = (AlertDialog) dialog;
64 - alertDialog.show();
65 -
66 - try {
67 - final Button button = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE);
68 - LinearLayout linearLayout = (LinearLayout) button.getParent();
69 - linearLayout.setOrientation(LinearLayout.HORIZONTAL);
70 - } catch (Exception ex) {
71 - }
72 - }
73 -
74 - static private void showMaterialDialog() {
75 - androidx.appcompat.app.AlertDialog alertDialog = (androidx.appcompat.app.AlertDialog) dialog;
76 - alertDialog.show();
77 -
78 - try {
79 - final Button button = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE);
80 - LinearLayout linearLayout = (LinearLayout) button.getParent();
81 - linearLayout.setOrientation(LinearLayout.HORIZONTAL);
82 - } catch (Exception ex) {
83 - }
84 - }
85 -
86 - static private AlertDialog.Builder getDialogBuilder(final Context context) {
87 - return new AlertDialog.Builder(context);
88 - }
89 -
90 - static private androidx.appcompat.app.AlertDialog.Builder getMaterialDialogBuilder(final Context context, final RateDialogOptions options) {
91 - return new androidx.appcompat.app.AlertDialog.Builder(context, options.getDialogStyleResId());
92 - }
93 -
94 - static private Dialog createDialog(final Context context, final RateDialogOptions options) {
95 - AlertDialog.Builder builder = getDialogBuilder(context);
96 -
97 - builder.setMessage(options.getMessageText(context));
98 -
99 - if (options.shouldShowTitle()) builder.setTitle(options.getTitleText(context));
100 -
101 - builder.setCancelable(options.getCancelable());
102 -
103 - View view = options.getView();
104 - if (view != null) builder.setView(view);
105 -
106 - final OnClickButtonListener listener = options.getListener();
107 -
108 - builder.setPositiveButton(options.getPositiveText(context), new DialogInterface.OnClickListener() {
109 - @Override
110 - public void onClick(DialogInterface dialog, int which) {
111 - Intent intentToAppstore = null;
112 -
113 - if (options.getPackageType() == PACKAGE_TITLE_GOOGLE)
114 - intentToAppstore = IntentHelper.createIntentForGooglePlay(context);
115 -
116 - context.startActivity(intentToAppstore);
117 - RatePreferenceHelper.setAgreeShowDialog(context, false);
118 - if (listener != null) listener.onClickButton(which);
119 - }
120 - });
121 -
122 - if (options.shouldShowNeutralButton()) {
123 - builder.setNeutralButton(options.getNeutralText(context), new DialogInterface.OnClickListener() {
124 - @Override
125 - public void onClick(DialogInterface dialog, int which) {
126 - RatePreferenceHelper.setRemindIntervalDate(context);
127 - if (listener != null) listener.onClickButton(which);
128 - }
129 - });
130 - }
131 -
132 - builder.setNegativeButton(options.getNegativeText(context), new DialogInterface.OnClickListener() {
133 - @Override
134 - public void onClick(DialogInterface dialog, int which) {
135 - RatePreferenceHelper.setAgreeShowDialog(context, false);
136 - if (listener != null) listener.onClickButton(which);
137 - }
138 - });
139 -
140 - return builder.create();
141 - }
142 -
143 - static private Dialog createMaterialDialog(final Context context, final RateDialogOptions options) {
144 - androidx.appcompat.app.AlertDialog.Builder builder = getMaterialDialogBuilder(context, options);
145 -
146 - builder.setMessage(options.getMessageText(context));
147 -
148 - if (options.shouldShowTitle()) builder.setTitle(options.getTitleText(context));
149 -
150 - builder.setCancelable(options.getCancelable());
151 -
152 - View view = options.getView();
153 - if (view != null) builder.setView(view);
154 -
155 - final OnClickButtonListener listener = options.getListener();
156 -
157 - builder.setPositiveButton(options.getPositiveText(context), new DialogInterface.OnClickListener() {
158 - @Override
159 - public void onClick(DialogInterface dialog, int which) {
160 - Intent intentToAppstore = null;
161 -
162 - if (options.getPackageType() == PACKAGE_TITLE_GOOGLE)
163 - intentToAppstore = IntentHelper.createIntentForGooglePlay(context);
164 -
165 - context.startActivity(intentToAppstore);
166 - RatePreferenceHelper.setAgreeShowDialog(context, false);
167 - if (listener != null) listener.onClickButton(which);
168 - }
169 - });
170 -
171 - if (options.shouldShowNeutralButton()) {
172 - builder.setNeutralButton(options.getNeutralText(context), new DialogInterface.OnClickListener() {
173 - @Override
174 - public void onClick(DialogInterface dialog, int which) {
175 - RatePreferenceHelper.setRemindIntervalDate(context);
176 - if (listener != null) listener.onClickButton(which);
177 - }
178 - });
179 - }
180 -
181 - builder.setNegativeButton(options.getNegativeText(context), new DialogInterface.OnClickListener() {
182 - @Override
183 - public void onClick(DialogInterface dialog, int which) {
184 - RatePreferenceHelper.setAgreeShowDialog(context, false);
185 - if (listener != null) listener.onClickButton(which);
186 - }
187 - });
188 -
189 - return builder.create();
190 - }
191 -}
...\ No newline at end of file ...\ No newline at end of file
1 -package ly.warp.sdk.views.dialogs;
2 -
3 -import android.content.Context;
4 -import android.view.View;
5 -
6 -import ly.warp.sdk.R;
7 -
8 -import static ly.warp.sdk.utils.constants.WarpConstants.PACKAGE_TITLE_GOOGLE;
9 -
10 -final class RateDialogOptions {
11 -
12 - private boolean showNeutralButton = true;
13 -
14 - private boolean showTitle = true;
15 -
16 - private boolean cancelable = false;
17 -
18 - private String packageType = PACKAGE_TITLE_GOOGLE;
19 -
20 - private String packageId = "";
21 -
22 - private int titleResId = R.string.rate_dialog_title;
23 -
24 - private int messageResId = R.string.rate_dialog_message;
25 -
26 - private int textPositiveResId = R.string.rate_dialog_positive;
27 -
28 - private int textNeutralResId = R.string.rate_diloag_neutral;
29 -
30 - private int textNegativeResId = R.string.rate_dialog_negative;
31 -
32 - private int dialogStyleResId = R.style.AppCompatAlertDialogStyle;
33 -
34 - private String titleText = null;
35 -
36 - private String messageText = null;
37 -
38 - private String positiveText = null;
39 -
40 - private String neutralText = null;
41 -
42 - private String negativeText = null;
43 -
44 - private View view;
45 -
46 - private OnClickButtonListener listener;
47 -
48 - public boolean shouldShowNeutralButton() {
49 - return showNeutralButton;
50 - }
51 -
52 - public void setShowNeutralButton(boolean showNeutralButton) {
53 - this.showNeutralButton = showNeutralButton;
54 - }
55 -
56 - public boolean shouldShowTitle() {
57 - return showTitle;
58 - }
59 -
60 - public void setShowTitle(boolean showTitle) {
61 - this.showTitle = showTitle;
62 - }
63 -
64 - public boolean getCancelable() {
65 - return cancelable;
66 - }
67 -
68 - public void setCancelable(boolean cancelable) {
69 - this.cancelable = cancelable;
70 - }
71 -
72 - public String getPackageType() {
73 - return packageType;
74 - }
75 -
76 - public void setPackageType(String packageType) {
77 - this.packageType = packageType;
78 - }
79 -
80 - public String getPackageId() {
81 - return packageId;
82 - }
83 -
84 - public void setPackageId(String packageId) {
85 - this.packageId = packageId;
86 - }
87 -
88 - public int getTitleResId() {
89 - return titleResId;
90 - }
91 -
92 - public void setTitleResId(int titleResId) {
93 - this.titleResId = titleResId;
94 - }
95 -
96 - public int getMessageResId() {
97 - return messageResId;
98 - }
99 -
100 - public void setMessageResId(int messageResId) {
101 - this.messageResId = messageResId;
102 - }
103 -
104 - public int getTextPositiveResId() {
105 - return textPositiveResId;
106 - }
107 -
108 - public void setTextPositiveResId(int textPositiveResId) {
109 - this.textPositiveResId = textPositiveResId;
110 - }
111 -
112 - public int getTextNeutralResId() {
113 - return textNeutralResId;
114 - }
115 -
116 - public void setTextNeutralResId(int textNeutralResId) {
117 - this.textNeutralResId = textNeutralResId;
118 - }
119 -
120 - public int getTextNegativeResId() {
121 - return textNegativeResId;
122 - }
123 -
124 - public void setTextNegativeResId(int textNegativeResId) {
125 - this.textNegativeResId = textNegativeResId;
126 - }
127 -
128 - public int getDialogStyleResId() {
129 - return dialogStyleResId;
130 - }
131 -
132 - public void setDialogStyleResId(int dialogStyleResId) {
133 - this.dialogStyleResId = dialogStyleResId;
134 - }
135 -
136 - public View getView() {
137 - return view;
138 - }
139 -
140 - public void setView(View view) {
141 - this.view = view;
142 - }
143 -
144 - public OnClickButtonListener getListener() {
145 - return listener;
146 - }
147 -
148 - public void setListener(OnClickButtonListener listener) {
149 - this.listener = listener;
150 - }
151 -
152 - public String getTitleText(Context context) {
153 - if (titleText == null) {
154 - return context.getString(titleResId);
155 - }
156 - return titleText;
157 - }
158 -
159 - public void setTitleText(String titleText) {
160 - this.titleText = titleText;
161 - }
162 -
163 - public String getMessageText(Context context) {
164 - if (messageText == null) {
165 - return context.getString(messageResId);
166 - }
167 - return messageText;
168 - }
169 -
170 - public void setMessageText(String messageText) {
171 - this.messageText = messageText;
172 - }
173 -
174 - public String getPositiveText(Context context) {
175 - if (positiveText == null) {
176 - return context.getString(textPositiveResId);
177 - }
178 - return positiveText;
179 - }
180 -
181 - public void setPositiveText(String positiveText) {
182 - this.positiveText = positiveText;
183 - }
184 -
185 - public String getNeutralText(Context context) {
186 - if (neutralText == null) {
187 - return context.getString(textNeutralResId);
188 - }
189 - return neutralText;
190 - }
191 -
192 - public void setNeutralText(String neutralText) {
193 - this.neutralText = neutralText;
194 - }
195 -
196 - public String getNegativeText(Context context) {
197 - if (negativeText == null) {
198 - return context.getString(textNegativeResId);
199 - }
200 - return negativeText;
201 - }
202 -
203 - public void setNegativeText(String negativeText) {
204 - this.negativeText = negativeText;
205 - }
206 -}
...\ No newline at end of file ...\ No newline at end of file
1 -package ly.warp.sdk.views.dialogs;
2 -
3 -import android.content.Context;
4 -import android.content.SharedPreferences;
5 -
6 -import java.util.Date;
7 -
8 -final class RatePreferenceHelper {
9 -
10 - private static final String PREF_FILE_NAME = "ratedialog_rate_pref_file";
11 - private static final String PREF_KEY_INSTALL_DATE = "ratedialog_rate_install_date";
12 - private static final String PREF_KEY_LAUNCH_TIMES = "ratedialog_rate_launch_times";
13 - private static final String PREF_KEY_IS_AGREE_SHOW_DIALOG = "ratedialog_rate_is_agree_show_dialog";
14 - private static final String PREF_KEY_REMIND_INTERVAL = "ratedialog_rate_remind_interval";
15 - private static final String PREF_KEY_EVENT_TIMES = "ratedialog_rate_event_times";
16 -
17 - private RatePreferenceHelper() {
18 - }
19 -
20 - static SharedPreferences getPreferences(Context context) {
21 - return context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE);
22 - }
23 -
24 - static SharedPreferences.Editor getPreferencesEditor(Context context) {
25 - return getPreferences(context).edit();
26 - }
27 -
28 - /**
29 - * Clear data in shared preferences
30 - *
31 - * @param context context
32 - */
33 - static void clearSharedPreferences(Context context) {
34 - SharedPreferences.Editor editor = getPreferencesEditor(context);
35 - editor.remove(PREF_KEY_INSTALL_DATE);
36 - editor.remove(PREF_KEY_LAUNCH_TIMES);
37 - editor.remove(PREF_KEY_REMIND_INTERVAL);
38 - editor.remove(PREF_KEY_EVENT_TIMES);
39 - editor.apply();
40 - }
41 -
42 - /**
43 - * Set agree flag about show dialog.
44 - * If it is false, rate dialog will never shown unless data is cleared.
45 - *
46 - * @param context context
47 - * @param isAgree agree with showing rate dialog
48 - */
49 - static void setAgreeShowDialog(Context context, boolean isAgree) {
50 - SharedPreferences.Editor editor = getPreferencesEditor(context);
51 - editor.putBoolean(PREF_KEY_IS_AGREE_SHOW_DIALOG, isAgree);
52 - editor.apply();
53 - }
54 -
55 - /**
56 - * get agree flag about show dialog.
57 - * If it is false, rate dialog will never shown unless data is cleared.
58 - *
59 - * @param context context
60 - */
61 - static boolean getIsAgreeShowDialog(Context context) {
62 - return getPreferences(context).getBoolean(PREF_KEY_IS_AGREE_SHOW_DIALOG, true);
63 - }
64 -
65 - /**
66 - * set remind interval date.
67 - * If remind interval date is over than setting days, rate dialog will appear.
68 - *
69 - * @param context context
70 - */
71 - static void setRemindIntervalDate(Context context) {
72 - SharedPreferences.Editor editor = getPreferencesEditor(context);
73 - editor.remove(PREF_KEY_REMIND_INTERVAL);
74 - editor.putLong(PREF_KEY_REMIND_INTERVAL, new Date().getTime());
75 - editor.apply();
76 - }
77 -
78 - /**
79 - * get remind interval date.
80 - * If remind interval date is over than setting days, rate dialog will appear.
81 - *
82 - * @param context context
83 - */
84 - static long getRemindIntervalDate(Context context) {
85 - return getPreferences(context).getLong(PREF_KEY_REMIND_INTERVAL, 0);
86 - }
87 -
88 - /**
89 - * set install date.
90 - * If install date is over than setting days, rate dialog will appear.
91 - *
92 - * @param context context
93 - */
94 - static void setInstallDate(Context context) {
95 - SharedPreferences.Editor editor = getPreferencesEditor(context);
96 - editor.putLong(PREF_KEY_INSTALL_DATE, new Date().getTime());
97 - editor.apply();
98 - }
99 -
100 - /**
101 - * get install date.
102 - * If install date is over than setting days, rate dialog will appear.
103 - *
104 - * @param context context
105 - */
106 - static long getInstallDate(Context context) {
107 - return getPreferences(context).getLong(PREF_KEY_INSTALL_DATE, 0);
108 - }
109 -
110 - /**
111 - * set luanch times date.
112 - * If launch time is over than setting times, rate dialog will appear.
113 - *
114 - * @param context context
115 - * @param launchTimes launchTimes
116 - */
117 - static void setLaunchTimes(Context context, int launchTimes) {
118 - SharedPreferences.Editor editor = getPreferencesEditor(context);
119 - editor.putInt(PREF_KEY_LAUNCH_TIMES, launchTimes);
120 - editor.apply();
121 - }
122 -
123 - /**
124 - * get luanch times date.
125 - * If launch time is over than setting times, rate dialog will appear.
126 - *
127 - * @param context context
128 - */
129 - static int getLaunchTimes(Context context) {
130 - return getPreferences(context).getInt(PREF_KEY_LAUNCH_TIMES, 0);
131 - }
132 -
133 - /**
134 - * check if first launch or not.
135 - * If launching first time, andialog will set luanch date.
136 - *
137 - * @param context context
138 - */
139 - static boolean isFirstLaunch(Context context) {
140 - return getPreferences(context).getLong(PREF_KEY_INSTALL_DATE, 0) == 0L;
141 - }
142 -
143 - /**
144 - * set event times date.
145 - * If event time is over than setting times, rate dialog will appear.
146 - *
147 - * @param context context
148 - */
149 - static int getEventTimes(Context context) {
150 - return getPreferences(context).getInt(PREF_KEY_EVENT_TIMES, 0);
151 - }
152 -
153 - /**
154 - * set event times date.
155 - * If event time is over than setting times, rate dialog will appear.
156 - *
157 - * @param context context
158 - */
159 - static void setEventTimes(Context context, int eventTimes) {
160 - SharedPreferences.Editor editor = getPreferencesEditor(context);
161 - editor.putInt(PREF_KEY_EVENT_TIMES, eventTimes);
162 - editor.apply();
163 - }
164 -
165 -}
...\ No newline at end of file ...\ No newline at end of file
1 +apply plugin: 'maven-publish'
2 +apply plugin: 'signing'
3 +
4 +task androidSourcesJar(type: Jar) {
5 + archiveClassifier.set('sources')
6 + if (project.plugins.findPlugin("com.android.library")) {
7 + // For Android libraries
8 + from android.sourceSets.main.java.srcDirs
9 + from android.sourceSets.main.kotlin.srcDirs
10 + } else {
11 + // For pure Kotlin libraries, in case you have them
12 + from sourceSets.main.java.srcDirs
13 + from sourceSets.main.kotlin.srcDirs
14 + }
15 +}
16 +artifacts {
17 + archives androidSourcesJar
18 +}
19 +
20 +group = PUBLISH_GROUP_ID
21 +version = PUBLISH_VERSION
22 +
23 +afterEvaluate {
24 + publishing {
25 + publications {
26 + release(MavenPublication) {
27 + // The coordinates of the library, being set from variables that
28 + // we'll set up later
29 + groupId PUBLISH_GROUP_ID
30 + artifactId PUBLISH_ARTIFACT_ID
31 + version PUBLISH_VERSION
32 +
33 + // Two artifacts, the `aar` (or `jar`) and the sources
34 + if (project.plugins.findPlugin("com.android.library")) {
35 + from components.release
36 + } else {
37 + from components.java
38 + }
39 +
40 + artifact androidSourcesJar
41 +// artifact javadocJar
42 +
43 + // Mostly self-explanatory metadata
44 + pom {
45 + name = PUBLISH_ARTIFACT_ID
46 + description = 'Warply Android SDK Maven Plugin'
47 + url = 'https://git.warp.ly/open-source/warply_android_sdk_maven_plugin'
48 + licenses {
49 + license {
50 + name = 'Warply Ltd. All rights reserved'
51 + url = 'https://git.warp.ly/open-source/warply_android_sdk_maven_plugin'
52 + }
53 + }
54 + developers {
55 + developer {
56 + id = 'panostr'
57 + name = 'Panagiotis Triantafyllou'
58 + email = 'panost@warp.ly'
59 + }
60 + // Add all other devs here...
61 + }
62 +
63 + // Version control info - if you're using GitHub, follow the
64 + // format as seen here
65 + scm {
66 + connection = 'scm:git:git.warp.ly/open-source/warply_android_sdk_maven_plugin.git'
67 + developerConnection = 'scm:git:ssh://git.warp.ly/open-source/warply_android_sdk_maven_plugin.git'
68 + url = 'https://git.warp.ly/open-source/warply_android_sdk_maven_plugin/tree/master'
69 + }
70 + }
71 + }
72 + }
73 + }
74 +}
75 +
76 +signing {
77 + useInMemoryPgpKeys(
78 + rootProject.ext["signing.keyId"],
79 + rootProject.ext["signing.key"],
80 + rootProject.ext["signing.password"],
81 + )
82 + sign publishing.publications
83 +}
...\ No newline at end of file ...\ No newline at end of file
1 +// Create variables with empty default values
2 +
3 +// keyId is the last 8 characters of the GPG key
4 +ext["signing.keyId"] = ''
5 +// password is the passphrase of the GPG key
6 +ext["signing.password"] = ''
7 +// key is the base64 private GPG key
8 +ext["signing.key"] = ''
9 +// osshrUsername and ossrhPassword are the account details for MavenCentral
10 +// which we’ve chosen at the Jira registration step (Sonatype site))
11 +ext["ossrhUsername"] = ''
12 +ext["ossrhPassword"] = ''
13 +ext["sonatypeStagingProfileId"] = ''
14 +
15 +File secretPropsFile = project.rootProject.file('local.properties')
16 +if (secretPropsFile.exists()) {
17 + // Read local.properties file first if it exists
18 + Properties p = new Properties()
19 + new FileInputStream(secretPropsFile).withCloseable { is -> p.load(is) }
20 + p.each { name, value -> ext[name] = value }
21 +} else {
22 + // Use system environment variables
23 + ext["ossrhUsername"] = System.getenv('OSSRH_USERNAME')
24 + ext["ossrhPassword"] = System.getenv('OSSRH_PASSWORD')
25 + ext["sonatypeStagingProfileId"] = System.getenv('SONATYPE_STAGING_PROFILE_ID')
26 + ext["signing.keyId"] = System.getenv('SIGNING_KEY_ID')
27 + ext["signing.password"] = System.getenv('SIGNING_PASSWORD')
28 + ext["signing.key"] = System.getenv('SIGNING_KEY')
29 +}
30 +
31 +// Set up Sonatype repository
32 +nexusPublishing {
33 + repositories {
34 + sonatype {
35 + stagingProfileId = sonatypeStagingProfileId
36 + username = ossrhUsername
37 + password = ossrhPassword
38 + nexusUrl.set(uri("https://s01.oss.sonatype.org/service/local/"))
39 + snapshotRepositoryUrl.set(uri("https://s01.oss.sonatype.org/content/repositories/snapshots/"))
40 + }
41 + }
42 +}
...\ No newline at end of file ...\ No newline at end of file
1 include ':app' 1 include ':app'
2 -include 'libraries:warply_android_sdk' 2 +include ':warply_android_sdk'
......
1 apply plugin: 'com.android.library' 1 apply plugin: 'com.android.library'
2 2
3 +ext {
4 + PUBLISH_GROUP_ID = 'ly.warp'
5 + PUBLISH_VERSION = '4.5.0'
6 + PUBLISH_ARTIFACT_ID = 'warply-android-sdk'
7 +}
8 +
9 +apply from: "${rootProject.projectDir}/scripts/publish-module.gradle"
10 +
3 android { 11 android {
4 12
5 compileSdkVersion 31 13 compileSdkVersion 31
......
1 +/**
2 + * Automatically generated file. DO NOT MODIFY
3 + */
4 +package ly.warp.sdk;
5 +
6 +public final class BuildConfig {
7 + public static final boolean DEBUG = false;
8 + public static final String LIBRARY_PACKAGE_NAME = "ly.warp.sdk";
9 + public static final String BUILD_TYPE = "release";
10 +}
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3 + package="ly.warp.sdk" >
4 +
5 + <uses-sdk
6 + android:minSdkVersion="23"
7 + android:targetSdkVersion="31" />
8 +
9 + <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
10 + <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
11 + <uses-permission android:name="android.permission.READ_PHONE_STATE" />
12 + <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
13 + <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
14 + <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
15 + <uses-permission android:name="android.permission.BLUETOOTH" />
16 + <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
17 + <uses-permission android:name="com.google.android.c2dm.permission.SEND" />
18 +
19 + <application>
20 +
21 + <!-- For Huawei Push -->
22 + <meta-data
23 + android:name="push_kit_auto_init_enabled"
24 + android:value="true" />
25 + <meta-data
26 + android:name="com.huawei.hms.client.channel.androidMarket"
27 + android:value="false" />
28 +
29 + <activity
30 + android:name="ly.warp.sdk.activities.WarpViewActivity"
31 + android:exported="false"
32 + android:screenOrientation="portrait" />
33 + <activity
34 + android:name="ly.warp.sdk.dexter.PermissionsActivity"
35 + android:exported="false"
36 + android:launchMode="singleInstance"
37 + android:screenOrientation="portrait"
38 + android:theme="@android:style/Theme.Light.NoTitleBar" />
39 +
40 + <!-- Service used for updating user's location. -->
41 + <service
42 + android:name="ly.warp.sdk.services.UpdateUserLocationService"
43 + android:exported="false"
44 + android:permission="android.permission.BIND_JOB_SERVICE" />
45 + <service
46 + android:name="ly.warp.sdk.services.WarplyBeaconsRangingService"
47 + android:exported="false" />
48 +
49 + <!-- Service used for in app notification. -->
50 + <service
51 + android:name="ly.warp.sdk.services.WarpInAppNotificationService"
52 + android:exported="false" />
53 +
54 + <!-- FCM Service for push notifications -->
55 + <service
56 + android:name="ly.warp.sdk.services.FCMBaseMessagingService"
57 + android:exported="false" >
58 + <intent-filter>
59 + <action android:name="com.google.firebase.MESSAGING_EVENT" />
60 + </intent-filter>
61 + </service>
62 +
63 + <!-- Service used for handling Huawei Push Notifications, comment if we are in Google build -->
64 + <service
65 + android:name="ly.warp.sdk.services.HMSBaseMessagingService"
66 + android:exported="false" >
67 + <intent-filter>
68 + <action android:name="com.huawei.push.action.MESSAGING_EVENT" />
69 + </intent-filter>
70 + </service>
71 +
72 + <receiver
73 + android:name="ly.warp.sdk.receivers.LocationChangedReceiver"
74 + android:exported="false" />
75 + <receiver
76 + android:name="ly.warp.sdk.receivers.ConnectivityChangedReceiver"
77 + android:exported="false" >
78 + <intent-filter>
79 + <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
80 +
81 + <category android:name="dollar_openBracket_applicationId_closeBracket" />
82 + </intent-filter>
83 + </receiver>
84 + <receiver
85 + android:name="ly.warp.sdk.receivers.BluetoothStateChangeReceiver"
86 + android:exported="false" >
87 + <intent-filter>
88 + <action android:name="android.bluetooth.adapter.action.STATE_CHANGED" />
89 + </intent-filter>
90 + </receiver>
91 + <receiver
92 + android:name="ly.warp.sdk.receivers.WarplyInAppNotificationReceiver"
93 + android:exported="false" />
94 + </application>
95 +
96 +</manifest>
...\ No newline at end of file ...\ No newline at end of file
1 +{
2 + "version": 3,
3 + "artifactType": {
4 + "type": "AAPT_FRIENDLY_MERGED_MANIFESTS",
5 + "kind": "Directory"
6 + },
7 + "applicationId": "ly.warp.sdk",
8 + "variantName": "release",
9 + "elements": [
10 + {
11 + "type": "SINGLE",
12 + "filters": [],
13 + "attributes": [],
14 + "outputFile": "AndroidManifest.xml"
15 + }
16 + ],
17 + "elementType": "File"
18 +}
...\ No newline at end of file ...\ No newline at end of file
1 +aarFormatVersion=1.0
2 +aarMetadataVersion=1.0
3 +minCompileSdk=1
1 +{"compiler-4.12.0.jar (com.github.bumptech.glide:compiler:4.12.0)":true}
...\ No newline at end of file ...\ No newline at end of file
This diff could not be displayed because it is too large.
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\jniLibs"/></dataSet><dataSet config="release" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\release\jniLibs"/></dataSet></merger>
...\ No newline at end of file ...\ No newline at end of file
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\shaders"/></dataSet><dataSet config="release" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\release\shaders"/></dataSet></merger>
...\ No newline at end of file ...\ No newline at end of file
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\assets"/><source path="C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\build\intermediates\shader_assets\release\out"/></dataSet><dataSet config="release" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\release\assets"/></dataSet></merger>
...\ No newline at end of file ...\ No newline at end of file
1 +#Fri Jan 28 15:22:24 EET 2022
2 +C\:\\Users\\Warply\\Documents\\Warply\\Android\\warply_android_sdk_maven_plugin\\warply_android_sdk\\src\\main\\res\\drawable-xhdpi\\ic_default_campaign.png=C\:\\Users\\Warply\\Documents\\Warply\\Android\\warply_android_sdk_maven_plugin\\warply_android_sdk\\build\\intermediates\\packaged_res\\release\\drawable-xhdpi-v4\\ic_default_campaign.png
3 +C\:\\Users\\Warply\\Documents\\Warply\\Android\\warply_android_sdk_maven_plugin\\warply_android_sdk\\src\\main\\res\\layout\\layout_inapp_alert_dialog_default.xml=C\:\\Users\\Warply\\Documents\\Warply\\Android\\warply_android_sdk_maven_plugin\\warply_android_sdk\\build\\intermediates\\packaged_res\\release\\layout\\layout_inapp_alert_dialog_default.xml
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<resources>
3 + <color name="colorAccent">#044C86</color>
4 + <color name="colorPrimary">#0a1a50</color>
5 + <color name="colorPrimaryDark">#0a1a50</color>
6 + <string name="rate_dialog_message">If you enjoy using this app, would you mind taking a moment to rate it? It won\'t take more than a minute. Thanks for your support!</string>
7 + <string name="rate_dialog_negative">No, Thanks</string>
8 + <string name="rate_dialog_positive">Rate Now</string>
9 + <string name="rate_dialog_title">Rate App</string>
10 + <string name="rate_diloag_neutral">Remind Me Later</string>
11 + <style name="AppCompatAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
12 + <item name="android:layout_gravity">right</item>
13 + <!--<item name="colorAccent">#23a890</item>-->
14 + <item name="colorAccent">@color/colorAccent</item>
15 + <item name="android:textColorPrimary">@android:color/black</item>
16 + <item name="android:background">@android:color/white</item>
17 + </style>
18 + <style name="InAppButtonsStyle" parent="@android:style/Widget.TextView">
19 + <item name="android:textSize">18sp</item>
20 + <item name="android:textStyle">bold</item>
21 + </style>
22 +</resources>
...\ No newline at end of file ...\ No newline at end of file
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<merger version="3"><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="main$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\res"/><source path="C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\build\generated\res\rs\release"/><source path="C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\build\generated\res\resValues\release"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="main" generated-set="main$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\res"><file name="ic_default_campaign" path="C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\res\drawable-xhdpi\ic_default_campaign.png" qualifiers="xhdpi-v4" type="drawable"/><file name="layout_inapp_alert_dialog_default" path="C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\res\layout\layout_inapp_alert_dialog_default.xml" qualifiers="" type="layout"/><file path="C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\res\values\colors.xml" qualifiers=""><color name="colorPrimary">#0a1a50</color><color name="colorAccent">#044C86</color><color name="colorPrimaryDark">#0a1a50</color></file><file path="C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\res\values\strings.xml" qualifiers=""><string name="rate_dialog_title">Rate App</string><string name="rate_dialog_message">If you enjoy using this app, would you mind taking a moment to rate it? It won\'t take more than a minute. Thanks for your support!</string><string name="rate_dialog_positive">Rate Now</string><string name="rate_diloag_neutral">Remind Me Later</string><string name="rate_dialog_negative">No, Thanks</string></file><file path="C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\res\values\styles.xml" qualifiers=""><style name="AppCompatAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
3 + <item name="android:layout_gravity">right</item>
4 +
5 + <item name="colorAccent">@color/colorAccent</item>
6 + <item name="android:textColorPrimary">@android:color/black</item>
7 + <item name="android:background">@android:color/white</item>
8 + </style><style name="InAppButtonsStyle" parent="@android:style/Widget.TextView">
9 + <item name="android:textSize">18sp</item>
10 + <item name="android:textStyle">bold</item>
11 + </style></file></source><source path="C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\build\generated\res\rs\release"/><source path="C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\build\generated\res\resValues\release"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="release$Generated" generated="true" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\release\res"/></dataSet><dataSet aapt-namespace="http://schemas.android.com/apk/res-auto" config="release" generated-set="release$Generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:&lt;dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\release\res"/></dataSet><mergedItems/></merger>
...\ No newline at end of file ...\ No newline at end of file
1 +R_DEF: Internal format may change without notice
2 +local
3 +color colorAccent
4 +color colorPrimary
5 +color colorPrimaryDark
6 +drawable ic_default_campaign
7 +id iv_inapp_image
8 +id ll_custom_buttons_view
9 +id tv_inapp_subtitle
10 +id tv_inapp_title
11 +layout layout_inapp_alert_dialog_default
12 +string rate_dialog_message
13 +string rate_dialog_negative
14 +string rate_dialog_positive
15 +string rate_dialog_title
16 +string rate_diloag_neutral
17 +style AppCompatAlertDialogStyle
18 +style InAppButtonsStyle
1 +1<?xml version="1.0" encoding="utf-8"?>
2 +2<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3 +3 package="ly.warp.sdk" >
4 +4
5 +5 <uses-sdk
6 +6 android:minSdkVersion="23"
7 +6-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml
8 +7 android:targetSdkVersion="31" />
9 +7-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml
10 +8
11 +9 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
12 +9-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:4:5-79
13 +9-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:4:22-76
14 +10 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
15 +10-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:5:5-81
16 +10-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:5:22-78
17 +11 <uses-permission android:name="android.permission.READ_PHONE_STATE" />
18 +11-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:6:5-75
19 +11-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:6:22-72
20 +12 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
21 +12-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:7:5-79
22 +12-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:7:22-76
23 +13 <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
24 +13-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:8:5-82
25 +13-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:8:22-79
26 +14 <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
27 +14-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:9:5-77
28 +14-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:9:22-74
29 +15 <uses-permission android:name="android.permission.BLUETOOTH" />
30 +15-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:10:5-68
31 +15-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:10:22-65
32 +16 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
33 +16-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:11:5-76
34 +16-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:11:22-73
35 +17 <uses-permission android:name="com.google.android.c2dm.permission.SEND" />
36 +17-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:12:5-79
37 +17-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:12:22-76
38 +18
39 +19 <application>
40 +19-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:14:5-93:19
41 +20
42 +21 <!-- For Huawei Push -->
43 +22 <meta-data
44 +22-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:16:9-18:36
45 +23 android:name="push_kit_auto_init_enabled"
46 +23-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:17:13-54
47 +24 android:value="true" />
48 +24-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:18:13-33
49 +25 <meta-data
50 +25-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:20:9-22:37
51 +26 android:name="com.huawei.hms.client.channel.androidMarket"
52 +26-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:21:13-71
53 +27 android:value="false" />
54 +27-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:22:13-34
55 +28
56 +29 <activity
57 +29-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:24:9-27:52
58 +30 android:name="ly.warp.sdk.activities.WarpViewActivity"
59 +30-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:25:13-67
60 +31 android:exported="false"
61 +31-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:26:13-37
62 +32 android:screenOrientation="portrait" />
63 +32-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:27:13-49
64 +33 <activity
65 +33-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:29:9-34:69
66 +34 android:name="ly.warp.sdk.dexter.PermissionsActivity"
67 +34-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:30:13-66
68 +35 android:exported="false"
69 +35-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:31:13-37
70 +36 android:launchMode="singleInstance"
71 +36-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:32:13-48
72 +37 android:screenOrientation="portrait"
73 +37-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:33:13-49
74 +38 android:theme="@android:style/Theme.Light.NoTitleBar" />
75 +38-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:34:13-66
76 +39
77 +40 <!-- Service used for updating user's location. -->
78 +41 <service
79 +41-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:37:9-40:72
80 +42 android:name="ly.warp.sdk.services.UpdateUserLocationService"
81 +42-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:38:13-74
82 +43 android:exported="false"
83 +43-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:39:13-37
84 +44 android:permission="android.permission.BIND_JOB_SERVICE" />
85 +44-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:40:13-69
86 +45 <service
87 +45-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:42:9-44:40
88 +46 android:name="ly.warp.sdk.services.WarplyBeaconsRangingService"
89 +46-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:43:13-76
90 +47 android:exported="false" />
91 +47-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:44:13-37
92 +48
93 +49 <!-- Service used for in app notification. -->
94 +50 <service
95 +50-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:47:9-49:40
96 +51 android:name="ly.warp.sdk.services.WarpInAppNotificationService"
97 +51-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:48:13-77
98 +52 android:exported="false" />
99 +52-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:49:13-37
100 +53
101 +54 <!-- FCM Service for push notifications -->
102 +55 <service
103 +55-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:52:9-58:19
104 +56 android:name="ly.warp.sdk.services.FCMBaseMessagingService"
105 +56-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:53:13-72
106 +57 android:exported="false" >
107 +57-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:54:13-37
108 +58 <intent-filter>
109 +58-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:55:13-57:29
110 +59 <action android:name="com.google.firebase.MESSAGING_EVENT" />
111 +59-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:56:17-78
112 +59-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:56:25-75
113 +60 </intent-filter>
114 +61 </service>
115 +62
116 +63 <!-- Service used for handling Huawei Push Notifications, comment if we are in Google build -->
117 +64 <service
118 +64-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:61:9-67:19
119 +65 android:name="ly.warp.sdk.services.HMSBaseMessagingService"
120 +65-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:62:13-72
121 +66 android:exported="false" >
122 +66-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:63:13-37
123 +67 <intent-filter>
124 +67-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:64:13-66:29
125 +68 <action android:name="com.huawei.push.action.MESSAGING_EVENT" />
126 +68-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:65:17-81
127 +68-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:65:25-78
128 +69 </intent-filter>
129 +70 </service>
130 +71
131 +72 <receiver
132 +72-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:69:9-71:40
133 +73 android:name="ly.warp.sdk.receivers.LocationChangedReceiver"
134 +73-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:70:13-73
135 +74 android:exported="false" />
136 +74-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:71:13-37
137 +75 <receiver
138 +75-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:73:9-80:20
139 +76 android:name="ly.warp.sdk.receivers.ConnectivityChangedReceiver"
140 +76-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:74:13-77
141 +77 android:exported="false" >
142 +77-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:75:13-37
143 +78 <intent-filter>
144 +78-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:76:13-79:29
145 +79 <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
146 +79-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:77:17-79
147 +79-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:77:25-76
148 +80
149 +81 <category android:name="${applicationId}" />
150 +81-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:78:17-61
151 +81-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:78:27-58
152 +82 </intent-filter>
153 +83 </receiver>
154 +84 <receiver
155 +84-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:82:9-88:20
156 +85 android:name="ly.warp.sdk.receivers.BluetoothStateChangeReceiver"
157 +85-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:83:13-78
158 +86 android:exported="false" >
159 +86-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:84:13-37
160 +87 <intent-filter>
161 +87-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:85:13-87:29
162 +88 <action android:name="android.bluetooth.adapter.action.STATE_CHANGED" />
163 +88-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:86:17-89
164 +88-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:86:25-86
165 +89 </intent-filter>
166 +90 </receiver>
167 +91 <receiver
168 +91-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:90:9-92:40
169 +92 android:name="ly.warp.sdk.receivers.WarplyInAppNotificationReceiver"
170 +92-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:91:13-81
171 +93 android:exported="false" />
172 +93-->C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:92:13-37
173 +94 </application>
174 +95
175 +96</manifest>
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3 + package="ly.warp.sdk" >
4 +
5 + <uses-sdk
6 + android:minSdkVersion="23"
7 + android:targetSdkVersion="31" />
8 +
9 + <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
10 + <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
11 + <uses-permission android:name="android.permission.READ_PHONE_STATE" />
12 + <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
13 + <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
14 + <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
15 + <uses-permission android:name="android.permission.BLUETOOTH" />
16 + <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
17 + <uses-permission android:name="com.google.android.c2dm.permission.SEND" />
18 +
19 + <application>
20 +
21 + <!-- For Huawei Push -->
22 + <meta-data
23 + android:name="push_kit_auto_init_enabled"
24 + android:value="true" />
25 + <meta-data
26 + android:name="com.huawei.hms.client.channel.androidMarket"
27 + android:value="false" />
28 +
29 + <activity
30 + android:name="ly.warp.sdk.activities.WarpViewActivity"
31 + android:exported="false"
32 + android:screenOrientation="portrait" />
33 + <activity
34 + android:name="ly.warp.sdk.dexter.PermissionsActivity"
35 + android:exported="false"
36 + android:launchMode="singleInstance"
37 + android:screenOrientation="portrait"
38 + android:theme="@android:style/Theme.Light.NoTitleBar" />
39 +
40 + <!-- Service used for updating user's location. -->
41 + <service
42 + android:name="ly.warp.sdk.services.UpdateUserLocationService"
43 + android:exported="false"
44 + android:permission="android.permission.BIND_JOB_SERVICE" />
45 + <service
46 + android:name="ly.warp.sdk.services.WarplyBeaconsRangingService"
47 + android:exported="false" />
48 +
49 + <!-- Service used for in app notification. -->
50 + <service
51 + android:name="ly.warp.sdk.services.WarpInAppNotificationService"
52 + android:exported="false" />
53 +
54 + <!-- FCM Service for push notifications -->
55 + <service
56 + android:name="ly.warp.sdk.services.FCMBaseMessagingService"
57 + android:exported="false" >
58 + <intent-filter>
59 + <action android:name="com.google.firebase.MESSAGING_EVENT" />
60 + </intent-filter>
61 + </service>
62 +
63 + <!-- Service used for handling Huawei Push Notifications, comment if we are in Google build -->
64 + <service
65 + android:name="ly.warp.sdk.services.HMSBaseMessagingService"
66 + android:exported="false" >
67 + <intent-filter>
68 + <action android:name="com.huawei.push.action.MESSAGING_EVENT" />
69 + </intent-filter>
70 + </service>
71 +
72 + <receiver
73 + android:name="ly.warp.sdk.receivers.LocationChangedReceiver"
74 + android:exported="false" />
75 + <receiver
76 + android:name="ly.warp.sdk.receivers.ConnectivityChangedReceiver"
77 + android:exported="false" >
78 + <intent-filter>
79 + <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
80 +
81 + <category android:name="${applicationId}" />
82 + </intent-filter>
83 + </receiver>
84 + <receiver
85 + android:name="ly.warp.sdk.receivers.BluetoothStateChangeReceiver"
86 + android:exported="false" >
87 + <intent-filter>
88 + <action android:name="android.bluetooth.adapter.action.STATE_CHANGED" />
89 + </intent-filter>
90 + </receiver>
91 + <receiver
92 + android:name="ly.warp.sdk.receivers.WarplyInAppNotificationReceiver"
93 + android:exported="false" />
94 + </application>
95 +
96 +</manifest>
...\ No newline at end of file ...\ No newline at end of file
1 +{
2 + "version": 3,
3 + "artifactType": {
4 + "type": "PACKAGED_MANIFESTS",
5 + "kind": "Directory"
6 + },
7 + "applicationId": "ly.warp.sdk",
8 + "variantName": "release",
9 + "elements": [
10 + {
11 + "type": "SINGLE",
12 + "filters": [],
13 + "attributes": [],
14 + "outputFile": "../../merged_manifest/release/AndroidManifest.xml"
15 + }
16 + ],
17 + "elementType": "File"
18 +}
...\ No newline at end of file ...\ No newline at end of file
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<resources>
3 + <color name="colorAccent">#044C86</color>
4 + <color name="colorPrimary">#0a1a50</color>
5 + <color name="colorPrimaryDark">#0a1a50</color>
6 + <string name="rate_dialog_message">If you enjoy using this app, would you mind taking a moment to rate it? It won\'t take more than a minute. Thanks for your support!</string>
7 + <string name="rate_dialog_negative">No, Thanks</string>
8 + <string name="rate_dialog_positive">Rate Now</string>
9 + <string name="rate_dialog_title">Rate App</string>
10 + <string name="rate_diloag_neutral">Remind Me Later</string>
11 + <style name="AppCompatAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
12 + <item name="android:layout_gravity">right</item>
13 + <!--<item name="colorAccent">#23a890</item>-->
14 + <item name="colorAccent">@color/colorAccent</item>
15 + <item name="android:textColorPrimary">@android:color/black</item>
16 + <item name="android:background">@android:color/white</item>
17 + </style>
18 + <style name="InAppButtonsStyle" parent="@android:style/Widget.TextView">
19 + <item name="android:textSize">18sp</item>
20 + <item name="android:textStyle">bold</item>
21 + </style>
22 +</resources>
...\ No newline at end of file ...\ No newline at end of file
1 +-----BEGIN PGP SIGNATURE-----
2 +Version: BCPG v1.68
3 +
4 +iQEcBAABCgAGBQJh8+4XAAoJEAIqwpYLX1k+JJ4H/0lmeHYp41hXQ7Bo4/bllcBQ
5 +Zyiua6G83BxklEAb3TgOL/DTd05qTkFpqwh5Xsi9/wc4jrQQmJTjxIIHdSDTBecC
6 +jRx5Nc9hLclgq2cclrL4UxrxZ3lV8tyJ22bq19J5cmjoUI2GL1rg9rGBuhd5bbXC
7 +w6OOCjsEGkPGTOLUov7f1s5bL72fF23OMdz8kWCRtsgDBMMce9Zpc+FfXFvnliLY
8 +ueAOLt5nyvXO95IAcV72xge9wTaH8/D5sHYV9VNPHuKVOVDUQMLuzgfObp6PVezv
9 +LCkHwuL3hFRngYq2zTp+k3ZhtsOKgIejknJ1Z18G7bz/HLK6awtCLq6nPP6PSRM=
10 +=OR0U
11 +-----END PGP SIGNATURE-----
1 +-----BEGIN PGP SIGNATURE-----
2 +Version: BCPG v1.68
3 +
4 +iQEcBAABCgAGBQJh8+4XAAoJEAIqwpYLX1k+b4wH/34GB7D22wEbe8l2ZvIzh272
5 +upgQaV8uxfEJ1K4dW9WpaUfkHyZS5JPrknTclvZS4pq7I6mJxMdRj0wGCGwHUh8j
6 +9qNrFuUL3pOzCdPku9XIBmyY91Z3Qm0g7bC6dc5BjgKBLK1+45Cvw+hPlDTdEjgB
7 +3mIL9px37pkIW3oBWvh4vPeqFfNTOJxSeDpYQ+Jf16iyntqzO0poN4pr1p6r/Vh9
8 +suCrTh2aEcAWy9qLvYWYhtY17x4oTR01NBXntLMRsfe/V9BPa/2qVxH0eFJ2DlcD
9 +M6kA9j9+iR63tR5rPYtNSi2Cn8TBLA/KojcsK+q8HK+o1ZHjXkz0MLdED5tALXg=
10 +=PFu7
11 +-----END PGP SIGNATURE-----
1 +-- Merging decision tree log ---
2 +manifest
3 +ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:1:1-94:12
4 +INJECTED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:1:1-94:12
5 +INJECTED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:1:1-94:12
6 + package
7 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:2:5-26
8 + INJECTED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml
9 + INJECTED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml
10 + xmlns:android
11 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:1:11-69
12 +uses-permission#android.permission.ACCESS_FINE_LOCATION
13 +ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:4:5-79
14 + android:name
15 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:4:22-76
16 +uses-permission#android.permission.ACCESS_COARSE_LOCATION
17 +ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:5:5-81
18 + android:name
19 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:5:22-78
20 +uses-permission#android.permission.READ_PHONE_STATE
21 +ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:6:5-75
22 + android:name
23 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:6:22-72
24 +uses-permission#android.permission.ACCESS_NETWORK_STATE
25 +ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:7:5-79
26 + android:name
27 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:7:22-76
28 +uses-permission#com.google.android.c2dm.permission.RECEIVE
29 +ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:8:5-82
30 + android:name
31 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:8:22-79
32 +uses-permission#android.permission.FOREGROUND_SERVICE
33 +ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:9:5-77
34 + android:name
35 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:9:22-74
36 +uses-permission#android.permission.BLUETOOTH
37 +ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:10:5-68
38 + android:name
39 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:10:22-65
40 +uses-permission#android.permission.ACCESS_WIFI_STATE
41 +ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:11:5-76
42 + android:name
43 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:11:22-73
44 +uses-permission#com.google.android.c2dm.permission.SEND
45 +ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:12:5-79
46 + android:name
47 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:12:22-76
48 +application
49 +ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:14:5-93:19
50 +meta-data#push_kit_auto_init_enabled
51 +ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:16:9-18:36
52 + android:value
53 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:18:13-33
54 + android:name
55 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:17:13-54
56 +meta-data#com.huawei.hms.client.channel.androidMarket
57 +ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:20:9-22:37
58 + android:value
59 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:22:13-34
60 + android:name
61 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:21:13-71
62 +activity#ly.warp.sdk.activities.WarpViewActivity
63 +ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:24:9-27:52
64 + android:screenOrientation
65 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:27:13-49
66 + android:exported
67 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:26:13-37
68 + android:name
69 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:25:13-67
70 +activity#ly.warp.sdk.dexter.PermissionsActivity
71 +ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:29:9-34:69
72 + android:screenOrientation
73 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:33:13-49
74 + android:launchMode
75 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:32:13-48
76 + android:exported
77 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:31:13-37
78 + android:theme
79 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:34:13-66
80 + android:name
81 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:30:13-66
82 +service#ly.warp.sdk.services.UpdateUserLocationService
83 +ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:37:9-40:72
84 + android:exported
85 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:39:13-37
86 + android:permission
87 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:40:13-69
88 + android:name
89 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:38:13-74
90 +service#ly.warp.sdk.services.WarplyBeaconsRangingService
91 +ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:42:9-44:40
92 + android:exported
93 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:44:13-37
94 + android:name
95 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:43:13-76
96 +service#ly.warp.sdk.services.WarpInAppNotificationService
97 +ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:47:9-49:40
98 + android:exported
99 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:49:13-37
100 + android:name
101 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:48:13-77
102 +service#ly.warp.sdk.services.FCMBaseMessagingService
103 +ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:52:9-58:19
104 + android:exported
105 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:54:13-37
106 + android:name
107 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:53:13-72
108 +intent-filter#action:name:com.google.firebase.MESSAGING_EVENT
109 +ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:55:13-57:29
110 +action#com.google.firebase.MESSAGING_EVENT
111 +ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:56:17-78
112 + android:name
113 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:56:25-75
114 +service#ly.warp.sdk.services.HMSBaseMessagingService
115 +ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:61:9-67:19
116 + android:exported
117 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:63:13-37
118 + android:name
119 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:62:13-72
120 +intent-filter#action:name:com.huawei.push.action.MESSAGING_EVENT
121 +ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:64:13-66:29
122 +action#com.huawei.push.action.MESSAGING_EVENT
123 +ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:65:17-81
124 + android:name
125 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:65:25-78
126 +receiver#ly.warp.sdk.receivers.LocationChangedReceiver
127 +ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:69:9-71:40
128 + android:exported
129 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:71:13-37
130 + android:name
131 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:70:13-73
132 +receiver#ly.warp.sdk.receivers.ConnectivityChangedReceiver
133 +ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:73:9-80:20
134 + android:exported
135 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:75:13-37
136 + android:name
137 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:74:13-77
138 +intent-filter#action:name:android.net.conn.CONNECTIVITY_CHANGE+category:name:${applicationId}
139 +ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:76:13-79:29
140 +action#android.net.conn.CONNECTIVITY_CHANGE
141 +ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:77:17-79
142 + android:name
143 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:77:25-76
144 +category#${applicationId}
145 +ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:78:17-61
146 + android:name
147 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:78:27-58
148 +receiver#ly.warp.sdk.receivers.BluetoothStateChangeReceiver
149 +ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:82:9-88:20
150 + android:exported
151 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:84:13-37
152 + android:name
153 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:83:13-78
154 +intent-filter#action:name:android.bluetooth.adapter.action.STATE_CHANGED
155 +ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:85:13-87:29
156 +action#android.bluetooth.adapter.action.STATE_CHANGED
157 +ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:86:17-89
158 + android:name
159 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:86:25-86
160 +receiver#ly.warp.sdk.receivers.WarplyInAppNotificationReceiver
161 +ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:90:9-92:40
162 + android:exported
163 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:92:13-37
164 + android:name
165 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml:91:13-81
166 +uses-sdk
167 +INJECTED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml reason: use-sdk injection requested
168 +INJECTED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml
169 +INJECTED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml
170 +INJECTED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml
171 +INJECTED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml
172 + android:targetSdkVersion
173 + INJECTED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml
174 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml
175 + INJECTED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml
176 + android:minSdkVersion
177 + INJECTED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml
178 + ADDED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml
179 + INJECTED from C:\Users\Warply\Documents\Warply\Android\warply_android_sdk_maven_plugin\warply_android_sdk\src\main\AndroidManifest.xml
1 +{
2 + "formatVersion": "1.1",
3 + "component": {
4 + "group": "ly.warp",
5 + "module": "warply-android-sdk",
6 + "version": "4.5.0",
7 + "attributes": {
8 + "org.gradle.status": "release"
9 + }
10 + },
11 + "createdBy": {
12 + "gradle": {
13 + "version": "7.0.2"
14 + }
15 + },
16 + "variants": [
17 + {
18 + "name": "releaseApiPublication",
19 + "attributes": {
20 + "org.gradle.category": "library",
21 + "org.gradle.dependency.bundling": "external",
22 + "org.gradle.libraryelements": "aar",
23 + "org.gradle.usage": "java-api"
24 + },
25 + "dependencies": [
26 + {
27 + "group": "androidx.appcompat",
28 + "module": "appcompat",
29 + "version": {
30 + "requires": "1.4.1"
31 + }
32 + },
33 + {
34 + "group": "androidx.recyclerview",
35 + "module": "recyclerview",
36 + "version": {
37 + "requires": "1.2.1"
38 + }
39 + },
40 + {
41 + "group": "androidx.cardview",
42 + "module": "cardview",
43 + "version": {
44 + "requires": "1.0.0"
45 + }
46 + },
47 + {
48 + "group": "org.altbeacon",
49 + "module": "android-beacon-library",
50 + "version": {
51 + "requires": "2.19.3"
52 + }
53 + },
54 + {
55 + "group": "org.jbundle.util.osgi.wrapped",
56 + "module": "org.jbundle.util.osgi.wrapped.org.apache.http.client",
57 + "version": {
58 + "requires": "4.1.2"
59 + }
60 + },
61 + {
62 + "group": "commons-logging",
63 + "module": "commons-logging",
64 + "version": {
65 + "requires": "1.2"
66 + }
67 + },
68 + {
69 + "group": "com.google.firebase",
70 + "module": "firebase-bom",
71 + "version": {
72 + "requires": "29.0.3"
73 + },
74 + "attributes": {
75 + "org.gradle.category": "platform"
76 + },
77 + "endorseStrictVersions": true
78 + },
79 + {
80 + "group": "com.google.firebase",
81 + "module": "firebase-messaging"
82 + },
83 + {
84 + "group": "com.google.android.gms",
85 + "module": "play-services-base",
86 + "version": {
87 + "requires": "18.0.1"
88 + }
89 + },
90 + {
91 + "group": "androidx.work",
92 + "module": "work-runtime",
93 + "version": {
94 + "requires": "2.7.1"
95 + }
96 + },
97 + {
98 + "group": "com.github.bumptech.glide",
99 + "module": "glide",
100 + "version": {
101 + "requires": "4.12.0"
102 + }
103 + },
104 + {
105 + "group": "com.huawei.agconnect",
106 + "module": "agconnect-core",
107 + "version": {
108 + "requires": "1.6.2.300"
109 + }
110 + },
111 + {
112 + "group": "com.huawei.hms",
113 + "module": "base",
114 + "version": {
115 + "requires": "6.2.0.300"
116 + }
117 + },
118 + {
119 + "group": "com.huawei.hms",
120 + "module": "push",
121 + "version": {
122 + "requires": "6.1.0.300"
123 + }
124 + },
125 + {
126 + "group": "com.huawei.hms",
127 + "module": "ads-identifier",
128 + "version": {
129 + "requires": "3.4.39.302"
130 + }
131 + },
132 + {
133 + "group": "net.zetetic",
134 + "module": "android-database-sqlcipher",
135 + "version": {
136 + "requires": "4.5.0"
137 + }
138 + },
139 + {
140 + "group": "androidx.sqlite",
141 + "module": "sqlite",
142 + "version": {
143 + "requires": "2.2.0"
144 + }
145 + }
146 + ],
147 + "files": [
148 + {
149 + "name": "warply-android-sdk-4.5.0.aar",
150 + "url": "warply-android-sdk-4.5.0.aar",
151 + "size": 631194,
152 + "sha512": "57808d55ce48ed58ac4df8930f71a3b7da8251fe58f1a69802adfcbf715a267ac3c19c7b34e3a7f0b9b93adfd9d252fc0f6c397e22f643600ccb9c9800c8bf77",
153 + "sha256": "93ba11de85c9a25160836abac2fea3e9dc8e3c13e38c5542d317a5ba456177a4",
154 + "sha1": "258eb682840b39c43c7e896b1d812c538b54b164",
155 + "md5": "cb0e4feb5cef4f26f6f743eaf1419298"
156 + }
157 + ]
158 + },
159 + {
160 + "name": "releaseRuntimePublication",
161 + "attributes": {
162 + "org.gradle.category": "library",
163 + "org.gradle.dependency.bundling": "external",
164 + "org.gradle.libraryelements": "aar",
165 + "org.gradle.usage": "java-runtime"
166 + },
167 + "dependencies": [
168 + {
169 + "group": "androidx.appcompat",
170 + "module": "appcompat",
171 + "version": {
172 + "requires": "1.4.1"
173 + }
174 + },
175 + {
176 + "group": "androidx.recyclerview",
177 + "module": "recyclerview",
178 + "version": {
179 + "requires": "1.2.1"
180 + }
181 + },
182 + {
183 + "group": "androidx.cardview",
184 + "module": "cardview",
185 + "version": {
186 + "requires": "1.0.0"
187 + }
188 + },
189 + {
190 + "group": "org.altbeacon",
191 + "module": "android-beacon-library",
192 + "version": {
193 + "requires": "2.19.3"
194 + }
195 + },
196 + {
197 + "group": "org.jbundle.util.osgi.wrapped",
198 + "module": "org.jbundle.util.osgi.wrapped.org.apache.http.client",
199 + "version": {
200 + "requires": "4.1.2"
201 + }
202 + },
203 + {
204 + "group": "commons-logging",
205 + "module": "commons-logging",
206 + "version": {
207 + "requires": "1.2"
208 + }
209 + },
210 + {
211 + "group": "com.google.firebase",
212 + "module": "firebase-bom",
213 + "version": {
214 + "requires": "29.0.3"
215 + },
216 + "attributes": {
217 + "org.gradle.category": "platform"
218 + },
219 + "endorseStrictVersions": true
220 + },
221 + {
222 + "group": "com.google.firebase",
223 + "module": "firebase-messaging"
224 + },
225 + {
226 + "group": "com.google.android.gms",
227 + "module": "play-services-base",
228 + "version": {
229 + "requires": "18.0.1"
230 + }
231 + },
232 + {
233 + "group": "androidx.work",
234 + "module": "work-runtime",
235 + "version": {
236 + "requires": "2.7.1"
237 + }
238 + },
239 + {
240 + "group": "com.github.bumptech.glide",
241 + "module": "glide",
242 + "version": {
243 + "requires": "4.12.0"
244 + }
245 + },
246 + {
247 + "group": "com.huawei.agconnect",
248 + "module": "agconnect-core",
249 + "version": {
250 + "requires": "1.6.2.300"
251 + }
252 + },
253 + {
254 + "group": "com.huawei.hms",
255 + "module": "base",
256 + "version": {
257 + "requires": "6.2.0.300"
258 + }
259 + },
260 + {
261 + "group": "com.huawei.hms",
262 + "module": "push",
263 + "version": {
264 + "requires": "6.1.0.300"
265 + }
266 + },
267 + {
268 + "group": "com.huawei.hms",
269 + "module": "ads-identifier",
270 + "version": {
271 + "requires": "3.4.39.302"
272 + }
273 + },
274 + {
275 + "group": "net.zetetic",
276 + "module": "android-database-sqlcipher",
277 + "version": {
278 + "requires": "4.5.0"
279 + }
280 + },
281 + {
282 + "group": "androidx.sqlite",
283 + "module": "sqlite",
284 + "version": {
285 + "requires": "2.2.0"
286 + }
287 + }
288 + ],
289 + "files": [
290 + {
291 + "name": "warply-android-sdk-4.5.0.aar",
292 + "url": "warply-android-sdk-4.5.0.aar",
293 + "size": 631194,
294 + "sha512": "57808d55ce48ed58ac4df8930f71a3b7da8251fe58f1a69802adfcbf715a267ac3c19c7b34e3a7f0b9b93adfd9d252fc0f6c397e22f643600ccb9c9800c8bf77",
295 + "sha256": "93ba11de85c9a25160836abac2fea3e9dc8e3c13e38c5542d317a5ba456177a4",
296 + "sha1": "258eb682840b39c43c7e896b1d812c538b54b164",
297 + "md5": "cb0e4feb5cef4f26f6f743eaf1419298"
298 + }
299 + ]
300 + }
301 + ]
302 +}
1 +-----BEGIN PGP SIGNATURE-----
2 +Version: BCPG v1.68
3 +
4 +iQEcBAABCgAGBQJh8+4XAAoJEAIqwpYLX1k+RKoH/iQT1NL56t0Of+hNX1QWOTBk
5 +Mr87eoMptvgBO7/Vr8/JZ3wNzEHZ9vZU0+sw4ObamfylO76RhPlsPyZZTbgRcgZT
6 +KOX5XKhVrtr3WEub05gvbidZtWj8fBVg8cVoTQExWi5qI/AAbZsjPkAdFVf3ss6B
7 ++Nmh+FmvCsT1pFnNg4+Tnt7I+Bb2kQh117t1bB+ZQecK2ym9XJxK4TNAotzk1uNi
8 +M8BiiS9S9lpdQmwj8vtrsW12SARzh3YLZ+kq1bJGEEQtfE5L4Z6CgzkiDMbzSRgb
9 +AAUEApH97czirqb6uWE/Igdnly9XMaY/j6M9G6rQeQHRCz9PZhUuDqcGfSlu3hc=
10 +=GCQQ
11 +-----END PGP SIGNATURE-----
1 +<?xml version="1.0" encoding="UTF-8"?>
2 +<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
3 + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
4 + <!-- This module was also published with a richer model, Gradle metadata, -->
5 + <!-- which should be used instead. Do not delete the following line which -->
6 + <!-- is to indicate to Gradle or any Gradle module metadata file consumer -->
7 + <!-- that they should prefer consuming it instead. -->
8 + <!-- do_not_remove: published-with-gradle-metadata -->
9 + <modelVersion>4.0.0</modelVersion>
10 + <groupId>ly.warp</groupId>
11 + <artifactId>warply-android-sdk</artifactId>
12 + <version>4.5.0</version>
13 + <packaging>aar</packaging>
14 + <name>warply-android-sdk</name>
15 + <description>Warply Android SDK Maven Plugin</description>
16 + <url>https://git.warp.ly/open-source/warply_android_sdk_maven_plugin</url>
17 + <licenses>
18 + <license>
19 + <name>Warply Ltd. All rights reserved</name>
20 + <url>https://git.warp.ly/open-source/warply_android_sdk_maven_plugin</url>
21 + </license>
22 + </licenses>
23 + <developers>
24 + <developer>
25 + <id>panostr</id>
26 + <name>Panagiotis Triantafyllou</name>
27 + <email>panost@warp.ly</email>
28 + </developer>
29 + </developers>
30 + <scm>
31 + <connection>scm:git:git.warp.ly/open-source/warply_android_sdk_maven_plugin.git</connection>
32 + <developerConnection>scm:git:ssh://git.warp.ly/open-source/warply_android_sdk_maven_plugin.git</developerConnection>
33 + <url>https://git.warp.ly/open-source/warply_android_sdk_maven_plugin/tree/master</url>
34 + </scm>
35 + <dependencyManagement>
36 + <dependencies>
37 + <dependency>
38 + <groupId>com.google.firebase</groupId>
39 + <artifactId>firebase-bom</artifactId>
40 + <version>29.0.3</version>
41 + <type>pom</type>
42 + <scope>import</scope>
43 + </dependency>
44 + </dependencies>
45 + </dependencyManagement>
46 + <dependencies>
47 + <dependency>
48 + <groupId>androidx.appcompat</groupId>
49 + <artifactId>appcompat</artifactId>
50 + <version>1.4.1</version>
51 + <scope>compile</scope>
52 + </dependency>
53 + <dependency>
54 + <groupId>androidx.recyclerview</groupId>
55 + <artifactId>recyclerview</artifactId>
56 + <version>1.2.1</version>
57 + <scope>compile</scope>
58 + </dependency>
59 + <dependency>
60 + <groupId>androidx.cardview</groupId>
61 + <artifactId>cardview</artifactId>
62 + <version>1.0.0</version>
63 + <scope>compile</scope>
64 + </dependency>
65 + <dependency>
66 + <groupId>org.altbeacon</groupId>
67 + <artifactId>android-beacon-library</artifactId>
68 + <version>2.19.3</version>
69 + <scope>compile</scope>
70 + </dependency>
71 + <dependency>
72 + <groupId>org.jbundle.util.osgi.wrapped</groupId>
73 + <artifactId>org.jbundle.util.osgi.wrapped.org.apache.http.client</artifactId>
74 + <version>4.1.2</version>
75 + <scope>compile</scope>
76 + </dependency>
77 + <dependency>
78 + <groupId>commons-logging</groupId>
79 + <artifactId>commons-logging</artifactId>
80 + <version>1.2</version>
81 + <scope>compile</scope>
82 + </dependency>
83 + <dependency>
84 + <groupId>com.google.firebase</groupId>
85 + <artifactId>firebase-messaging</artifactId>
86 + <scope>compile</scope>
87 + </dependency>
88 + <dependency>
89 + <groupId>com.google.android.gms</groupId>
90 + <artifactId>play-services-base</artifactId>
91 + <version>18.0.1</version>
92 + <scope>compile</scope>
93 + </dependency>
94 + <dependency>
95 + <groupId>androidx.work</groupId>
96 + <artifactId>work-runtime</artifactId>
97 + <version>2.7.1</version>
98 + <scope>compile</scope>
99 + </dependency>
100 + <dependency>
101 + <groupId>com.github.bumptech.glide</groupId>
102 + <artifactId>glide</artifactId>
103 + <version>4.12.0</version>
104 + <scope>compile</scope>
105 + </dependency>
106 + <dependency>
107 + <groupId>com.huawei.agconnect</groupId>
108 + <artifactId>agconnect-core</artifactId>
109 + <version>1.6.2.300</version>
110 + <scope>compile</scope>
111 + </dependency>
112 + <dependency>
113 + <groupId>com.huawei.hms</groupId>
114 + <artifactId>base</artifactId>
115 + <version>6.2.0.300</version>
116 + <scope>compile</scope>
117 + </dependency>
118 + <dependency>
119 + <groupId>com.huawei.hms</groupId>
120 + <artifactId>push</artifactId>
121 + <version>6.1.0.300</version>
122 + <scope>compile</scope>
123 + </dependency>
124 + <dependency>
125 + <groupId>com.huawei.hms</groupId>
126 + <artifactId>ads-identifier</artifactId>
127 + <version>3.4.39.302</version>
128 + <scope>compile</scope>
129 + </dependency>
130 + <dependency>
131 + <groupId>net.zetetic</groupId>
132 + <artifactId>android-database-sqlcipher</artifactId>
133 + <version>4.5.0</version>
134 + <scope>compile</scope>
135 + </dependency>
136 + <dependency>
137 + <groupId>androidx.sqlite</groupId>
138 + <artifactId>sqlite</artifactId>
139 + <version>2.2.0</version>
140 + <scope>compile</scope>
141 + </dependency>
142 + </dependencies>
143 +</project>
1 +-----BEGIN PGP SIGNATURE-----
2 +Version: BCPG v1.68
3 +
4 +iQEcBAABCgAGBQJh8+4XAAoJEAIqwpYLX1k+fk8H/3aGTYl9BxfuLRNli7aTZCbO
5 +2WMTi4E4fOlYe8EZkVoHj2B4NJ+XQ/0hMf23fPjpujx1zirNytEGZtTI7XdieSRN
6 +p6FKA9U1ysvF6ryolnRqpsxeZ0wyNp4stlW6Rk5R1Oumh+oruD9c/G/aroRLmXln
7 +cufy07/2y1OLV1Ievk8+dmnXHR83bpVKKO4BF7YBgB/vyeV5X8bCfNJx5goDAP5B
8 +q6nGS8SkWWQWU000uU0klUnmaDL1RlESU+pX1yMatc3R/u6NUnW/C48gSA1iraMO
9 +ROUshoRM3HXeGOCjV7pzSAh2HI/D9DFuvJZh6bVv3EKViFi0XkJAKaYI+IlSOFc=
10 +=KCd+
11 +-----END PGP SIGNATURE-----
1 +ly/warp/sdk/io/models/Card.java
2 + ly.warp.sdk.io.models.Card
3 + ly.warp.sdk.io.models.Card$1
4 +ly/warp/sdk/io/models/Content.java
5 + ly.warp.sdk.io.models.Content
6 + ly.warp.sdk.io.models.Content$1
7 +ly/warp/sdk/io/volley/toolbox/ClearCacheRequest.java
8 + ly.warp.sdk.io.volley.toolbox.ClearCacheRequest
9 +ly/warp/sdk/io/volley/toolbox/HttpStack.java
10 + ly.warp.sdk.io.volley.toolbox.HttpStack
11 +ly/warp/sdk/activities/WarplyListActivity.java
12 + ly.warp.sdk.activities.WarplyListActivity
13 + ly.warp.sdk.activities.WarplyListActivity$1
14 + ly.warp.sdk.activities.WarplyListActivity$2
15 +ly/warp/sdk/dexter/listener/EmptyPermissionRequestErrorListener.java
16 + ly.warp.sdk.dexter.listener.EmptyPermissionRequestErrorListener
17 +ly/warp/sdk/dexter/listener/PermissionRequest.java
18 + ly.warp.sdk.dexter.listener.PermissionRequest
19 +ly/warp/sdk/activities/WarpBaseActivity.java
20 + ly.warp.sdk.activities.WarpBaseActivity
21 +ly/warp/sdk/io/volley/toolbox/RequestFuture.java
22 + ly.warp.sdk.io.volley.toolbox.RequestFuture
23 +ly/warp/sdk/io/request/WarplyTagsCategoriesRequest.java
24 + ly.warp.sdk.io.request.WarplyTagsCategoriesRequest
25 +ly/warp/sdk/io/request/WarplyAuthorizeRequest.java
26 + ly.warp.sdk.io.request.WarplyAuthorizeRequest
27 +ly/warp/sdk/services/PushEventsWorkerService.java
28 + ly.warp.sdk.services.PushEventsWorkerService
29 +ly/warp/sdk/io/volley/toolbox/DiskBasedCache.java
30 + ly.warp.sdk.io.volley.toolbox.DiskBasedCache
31 + ly.warp.sdk.io.volley.toolbox.DiskBasedCache$1
32 + ly.warp.sdk.io.volley.toolbox.DiskBasedCache$CacheHeader
33 + ly.warp.sdk.io.volley.toolbox.DiskBasedCache$CountingInputStream
34 +ly/warp/sdk/services/WarpInAppNotificationService.java
35 + ly.warp.sdk.services.WarpInAppNotificationService
36 +ly/warp/sdk/io/callbacks/ContactHook.java
37 + ly.warp.sdk.io.callbacks.ContactHook
38 +ly/warp/sdk/dexter/listener/multi/BaseMultiplePermissionsListener.java
39 + ly.warp.sdk.dexter.listener.multi.BaseMultiplePermissionsListener
40 +ly/warp/sdk/receivers/WarplyBeaconsApplication.java
41 + ly.warp.sdk.receivers.WarplyBeaconsApplication
42 + ly.warp.sdk.receivers.WarplyBeaconsApplication$1
43 +ly/warp/sdk/io/volley/toolbox/NoCache.java
44 + ly.warp.sdk.io.volley.toolbox.NoCache
45 +ly/warp/sdk/io/request/WarplyResetPasswordRequest.java
46 + ly.warp.sdk.io.request.WarplyResetPasswordRequest
47 +ly/warp/sdk/io/volley/ServerError.java
48 + ly.warp.sdk.io.volley.ServerError
49 +ly/warp/sdk/utils/WarplyInitializer.java
50 + ly.warp.sdk.utils.WarplyInitializer
51 + ly.warp.sdk.utils.WarplyInitializer$1
52 + ly.warp.sdk.utils.WarplyInitializer$2
53 + ly.warp.sdk.utils.WarplyInitializer$WarplyInitCallback
54 +ly/warp/sdk/io/request/WarplyVerifyTicketRequest.java
55 + ly.warp.sdk.io.request.WarplyVerifyTicketRequest
56 +ly/warp/sdk/io/callbacks/VolleyTransformer.java
57 + ly.warp.sdk.io.callbacks.VolleyTransformer
58 +ly/warp/sdk/dexter/listener/PermissionRequestErrorListener.java
59 + ly.warp.sdk.dexter.listener.PermissionRequestErrorListener
60 +ly/warp/sdk/io/volley/AuthFailureError.java
61 + ly.warp.sdk.io.volley.AuthFailureError
62 +ly/warp/sdk/utils/managers/WarplyUserManager.java
63 + ly.warp.sdk.utils.managers.WarplyUserManager
64 + ly.warp.sdk.utils.managers.WarplyUserManager$1
65 + ly.warp.sdk.utils.managers.WarplyUserManager$2
66 + ly.warp.sdk.utils.managers.WarplyUserManager$3
67 + ly.warp.sdk.utils.managers.WarplyUserManager$4
68 + ly.warp.sdk.utils.managers.WarplyUserManager$5
69 + ly.warp.sdk.utils.managers.WarplyUserManager$6
70 + ly.warp.sdk.utils.managers.WarplyUserManager$7
71 + ly.warp.sdk.utils.managers.WarplyUserManager$8
72 + ly.warp.sdk.utils.managers.WarplyUserManager$9
73 +ly/warp/sdk/io/request/WarplyMerchantCategoriesRequest.java
74 + ly.warp.sdk.io.request.WarplyMerchantCategoriesRequest
75 +ly/warp/sdk/io/callbacks/MerchantCategoriesHook.java
76 + ly.warp.sdk.io.callbacks.MerchantCategoriesHook
77 +ly/warp/sdk/views/dialogs/RateDialog.java
78 + ly.warp.sdk.views.dialogs.RateDialog
79 +ly/warp/sdk/io/models/Consumer.java
80 + ly.warp.sdk.io.models.Consumer
81 + ly.warp.sdk.io.models.Consumer$1
82 +ly/warp/sdk/io/callbacks/TransactionsHook.java
83 + ly.warp.sdk.io.callbacks.TransactionsHook
84 +ly/warp/sdk/utils/managers/WarplySessionManager.java
85 + ly.warp.sdk.utils.managers.WarplySessionManager
86 + ly.warp.sdk.utils.managers.WarplySessionManager$1
87 + ly.warp.sdk.utils.managers.WarplySessionManager$ConnectivityReceiver
88 +ly/warp/sdk/io/callbacks/PostHook.java
89 + ly.warp.sdk.io.callbacks.PostHook
90 +ly/warp/sdk/io/request/WarplyRegisterRequest.java
91 + ly.warp.sdk.io.request.WarplyRegisterRequest
92 +ly/warp/sdk/receivers/WarplyInAppNotificationReceiver.java
93 + ly.warp.sdk.receivers.WarplyInAppNotificationReceiver
94 +ly/warp/sdk/receivers/WarplyReferrerReceiver.java
95 + ly.warp.sdk.receivers.WarplyReferrerReceiver
96 +ly/warp/sdk/activities/ApplicationSessionActivity.java
97 + ly.warp.sdk.activities.ApplicationSessionActivity
98 + ly.warp.sdk.activities.ApplicationSessionActivity$SessionStartedListener
99 + ly.warp.sdk.activities.ApplicationSessionActivity$SessionStoppedListener
100 +ly/warp/sdk/utils/WarplyPreferences.java
101 + ly.warp.sdk.utils.WarplyPreferences
102 +ly/warp/sdk/io/request/WarplyMerchantsRequest.java
103 + ly.warp.sdk.io.request.WarplyMerchantsRequest
104 +ly/warp/sdk/activities/ApplicationSessionListActivity.java
105 + ly.warp.sdk.activities.ApplicationSessionListActivity
106 + ly.warp.sdk.activities.ApplicationSessionListActivity$SessionStartedListener
107 + ly.warp.sdk.activities.ApplicationSessionListActivity$SessionStoppedListener
108 +ly/warp/sdk/dexter/listener/PermissionGrantedResponse.java
109 + ly.warp.sdk.dexter.listener.PermissionGrantedResponse
110 +ly/warp/sdk/io/request/WarplyGetAddressRequest.java
111 + ly.warp.sdk.io.request.WarplyGetAddressRequest
112 +ly/warp/sdk/io/models/CardList.java
113 + ly.warp.sdk.io.models.CardList
114 +ly/warp/sdk/dexter/listener/single/DialogOnDeniedPermissionListener.java
115 + ly.warp.sdk.dexter.listener.single.DialogOnDeniedPermissionListener
116 + ly.warp.sdk.dexter.listener.single.DialogOnDeniedPermissionListener$1
117 + ly.warp.sdk.dexter.listener.single.DialogOnDeniedPermissionListener$Builder
118 +ly/warp/sdk/services/WarpIntentService.java
119 + ly.warp.sdk.services.WarpIntentService
120 +ly/warp/sdk/io/models/PushCampaign.java
121 + ly.warp.sdk.io.models.PushCampaign
122 +ly/warp/sdk/utils/managers/WarplyAnalyticsManager.java
123 + ly.warp.sdk.utils.managers.WarplyAnalyticsManager
124 + ly.warp.sdk.utils.managers.WarplyAnalyticsManager$1
125 +ly/warp/sdk/io/models/MerchantCategory.java
126 + ly.warp.sdk.io.models.MerchantCategory
127 + ly.warp.sdk.io.models.MerchantCategory$1
128 +ly/warp/sdk/views/CampaignViewLoader.java
129 + ly.warp.sdk.views.CampaignViewLoader
130 + ly.warp.sdk.views.CampaignViewLoader$DisplayBuilder
131 +ly/warp/sdk/services/UpdateUserLocationService.java
132 + ly.warp.sdk.services.UpdateUserLocationService
133 + ly.warp.sdk.services.UpdateUserLocationService$1
134 + ly.warp.sdk.services.UpdateUserLocationService$2
135 + ly.warp.sdk.services.UpdateUserLocationService$3
136 + ly.warp.sdk.services.UpdateUserLocationService$4
137 + ly.warp.sdk.services.UpdateUserLocationService$firstTask
138 +ly/warp/sdk/io/callbacks/MerchantsHook.java
139 + ly.warp.sdk.io.callbacks.MerchantsHook
140 +ly/warp/sdk/io/volley/toolbox/ByteArrayPool.java
141 + ly.warp.sdk.io.volley.toolbox.ByteArrayPool
142 + ly.warp.sdk.io.volley.toolbox.ByteArrayPool$1
143 +ly/warp/sdk/io/volley/toolbox/HttpClientStack.java
144 + ly.warp.sdk.io.volley.toolbox.HttpClientStack
145 + ly.warp.sdk.io.volley.toolbox.HttpClientStack$1
146 + ly.warp.sdk.io.volley.toolbox.HttpClientStack$TLSSocketFactory
147 + ly.warp.sdk.io.volley.toolbox.HttpClientStack$TLSSocketFactory$1
148 +ly/warp/sdk/dexter/Dexter.java
149 + ly.warp.sdk.dexter.Dexter
150 +ly/warp/sdk/io/request/WarplyRedeemCouponRequest.java
151 + ly.warp.sdk.io.request.WarplyRedeemCouponRequest
152 +ly/warp/sdk/io/models/TagsCategoriesList.java
153 + ly.warp.sdk.io.models.TagsCategoriesList
154 +ly/warp/sdk/io/models/MerchantList.java
155 + ly.warp.sdk.io.models.MerchantList
156 +ly/warp/sdk/dexter/listener/single/CompositePermissionListener.java
157 + ly.warp.sdk.dexter.listener.single.CompositePermissionListener
158 +ly/warp/sdk/io/request/WarplyProductsRequest.java
159 + ly.warp.sdk.io.request.WarplyProductsRequest
160 +ly/warp/sdk/io/callbacks/CouponsHook.java
161 + ly.warp.sdk.io.callbacks.CouponsHook
162 +ly/warp/sdk/utils/constants/WarpConstants.java
163 + ly.warp.sdk.utils.constants.WarpConstants
164 + ly.warp.sdk.utils.constants.WarpConstants$LocationModes
165 + ly.warp.sdk.utils.constants.WarpConstants$LocationSetting
166 + ly.warp.sdk.utils.constants.WarpConstants$MicroApp
167 + ly.warp.sdk.utils.constants.WarpConstants$ServiceRegistrationCallback
168 +ly/warp/sdk/fragments/WarpViewFragment.java
169 + ly.warp.sdk.fragments.WarpViewFragment
170 + ly.warp.sdk.fragments.WarpViewFragment$1
171 + ly.warp.sdk.fragments.WarpViewFragment$2
172 + ly.warp.sdk.fragments.WarpViewFragment$3
173 +ly/warp/sdk/dexter/IntentProvider.java
174 + ly.warp.sdk.dexter.IntentProvider
175 +ly/warp/sdk/views/CampaignItemViewHolder.java
176 + ly.warp.sdk.views.CampaignItemViewHolder
177 +ly/warp/sdk/io/request/WarplyEditAddressRequest.java
178 + ly.warp.sdk.io.request.WarplyEditAddressRequest
179 +ly/warp/sdk/io/models/ContentList.java
180 + ly.warp.sdk.io.models.ContentList
181 +ly/warp/sdk/io/request/WarplyTransactionHistoryRequest.java
182 + ly.warp.sdk.io.request.WarplyTransactionHistoryRequest
183 +ly/warp/sdk/io/callbacks/CallbackReceiver.java
184 + ly.warp.sdk.io.callbacks.CallbackReceiver
185 +ly/warp/sdk/io/volley/toolbox/AndroidAuthenticator.java
186 + ly.warp.sdk.io.volley.toolbox.AndroidAuthenticator
187 +ly/warp/sdk/io/volley/VolleyError.java
188 + ly.warp.sdk.io.volley.VolleyError
189 +ly/warp/sdk/io/models/Tags.java
190 + ly.warp.sdk.io.models.Tags
191 + ly.warp.sdk.io.models.Tags$1
192 +ly/warp/sdk/views/dialogs/RatePreferenceHelper.java
193 + ly.warp.sdk.views.dialogs.RatePreferenceHelper
194 +ly/warp/sdk/views/adapters/mix/CampaignsMixListAdapter.java
195 + ly.warp.sdk.views.adapters.mix.CampaignsMixListAdapter
196 + ly.warp.sdk.views.adapters.mix.CampaignsMixListAdapter$1
197 + ly.warp.sdk.views.adapters.mix.CampaignsMixListAdapter$2
198 + ly.warp.sdk.views.adapters.mix.CampaignsMixListAdapter$Builder
199 +ly/warp/sdk/services/GCMBaseIntentService.java
200 + ly.warp.sdk.services.GCMBaseIntentService
201 +ly/warp/sdk/dexter/AndroidPermissionService.java
202 + ly.warp.sdk.dexter.AndroidPermissionService
203 +ly/warp/sdk/io/callbacks/TagsCategoriesHook.java
204 + ly.warp.sdk.io.callbacks.TagsCategoriesHook
205 +ly/warp/sdk/utils/WarpJSONParser.java
206 + ly.warp.sdk.utils.WarpJSONParser
207 +ly/warp/sdk/services/FCMBaseMessagingService.java
208 + ly.warp.sdk.services.FCMBaseMessagingService
209 +ly/warp/sdk/dexter/listener/PermissionDeniedResponse.java
210 + ly.warp.sdk.dexter.listener.PermissionDeniedResponse
211 +ly/warp/sdk/dexter/DexterInstance.java
212 + ly.warp.sdk.dexter.DexterInstance
213 + ly.warp.sdk.dexter.DexterInstance$1
214 + ly.warp.sdk.dexter.DexterInstance$PermissionStates
215 +ly/warp/sdk/io/request/WarplyPointHistoryRequest.java
216 + ly.warp.sdk.io.request.WarplyPointHistoryRequest
217 +ly/warp/sdk/io/request/WarplyChangePasswordRequest.java
218 + ly.warp.sdk.io.request.WarplyChangePasswordRequest
219 +ly/warp/sdk/io/models/Product.java
220 + ly.warp.sdk.io.models.Product
221 + ly.warp.sdk.io.models.Product$1
222 +ly/warp/sdk/io/callbacks/ContentHook.java
223 + ly.warp.sdk.io.callbacks.ContentHook
224 +ly/warp/sdk/io/callbacks/AddressHook.java
225 + ly.warp.sdk.io.callbacks.AddressHook
226 +ly/warp/sdk/io/callbacks/SimpleCallbackReceiver.java
227 + ly.warp.sdk.io.callbacks.SimpleCallbackReceiver
228 +ly/warp/sdk/io/request/WarplyLoginRequest.java
229 + ly.warp.sdk.io.request.WarplyLoginRequest
230 +ly/warp/sdk/io/models/Campaign.java
231 + ly.warp.sdk.io.models.Campaign
232 + ly.warp.sdk.io.models.Campaign$1
233 +ly/warp/sdk/dexter/ThreadFactory.java
234 + ly.warp.sdk.dexter.ThreadFactory
235 +ly/warp/sdk/io/volley/RetryPolicy.java
236 + ly.warp.sdk.io.volley.RetryPolicy
237 +ly/warp/sdk/io/volley/toolbox/JsonRequest.java
238 + ly.warp.sdk.io.volley.toolbox.JsonRequest
239 +ly/warp/sdk/io/volley/NoConnectionError.java
240 + ly.warp.sdk.io.volley.NoConnectionError
241 +ly/warp/sdk/io/models/PointTransaction.java
242 + ly.warp.sdk.io.models.PointTransaction
243 + ly.warp.sdk.io.models.PointTransaction$1
244 +ly/warp/sdk/dexter/DexterBuilder.java
245 + ly.warp.sdk.dexter.DexterBuilder
246 + ly.warp.sdk.dexter.DexterBuilder$MultiPermissionListener
247 + ly.warp.sdk.dexter.DexterBuilder$Permission
248 + ly.warp.sdk.dexter.DexterBuilder$SinglePermissionListener
249 +ly/warp/sdk/io/volley/ExecutorDelivery.java
250 + ly.warp.sdk.io.volley.ExecutorDelivery
251 + ly.warp.sdk.io.volley.ExecutorDelivery$1
252 + ly.warp.sdk.io.volley.ExecutorDelivery$ResponseDeliveryRunnable
253 +ly/warp/sdk/views/dialogs/IntentHelper.java
254 + ly.warp.sdk.views.dialogs.IntentHelper
255 +ly/warp/sdk/utils/managers/WarplyPushManager.java
256 + ly.warp.sdk.utils.managers.WarplyPushManager
257 +ly/warp/sdk/io/models/TransactionsList.java
258 + ly.warp.sdk.io.models.TransactionsList
259 +ly/warp/sdk/activities/WarplyActivity.java
260 + ly.warp.sdk.activities.WarplyActivity
261 + ly.warp.sdk.activities.WarplyActivity$1
262 + ly.warp.sdk.activities.WarplyActivity$2
263 +ly/warp/sdk/services/WarpBaseIntentService.java
264 + ly.warp.sdk.services.WarpBaseIntentService
265 +ly/warp/sdk/io/request/WarplyUserCouponsRequest.java
266 + ly.warp.sdk.io.request.WarplyUserCouponsRequest
267 +ly/warp/sdk/io/callbacks/PointsHook.java
268 + ly.warp.sdk.io.callbacks.PointsHook
269 +ly/warp/sdk/utils/ObjectSerializer.java
270 + ly.warp.sdk.utils.ObjectSerializer
271 +ly/warp/sdk/io/request/WarplyRefreshTokenRequest.java
272 + ly.warp.sdk.io.request.WarplyRefreshTokenRequest
273 +ly/warp/sdk/dexter/MainThread.java
274 + ly.warp.sdk.dexter.MainThread
275 +ly/warp/sdk/dexter/listener/multi/MultiplePermissionsListener.java
276 + ly.warp.sdk.dexter.listener.multi.MultiplePermissionsListener
277 +ly/warp/sdk/services/WarplyBeaconsRangingService.java
278 + ly.warp.sdk.services.WarplyBeaconsRangingService
279 + ly.warp.sdk.services.WarplyBeaconsRangingService$1
280 + ly.warp.sdk.services.WarplyBeaconsRangingService$2
281 + ly.warp.sdk.services.WarplyBeaconsRangingService$BeaconsRangingServiceBinder
282 + ly.warp.sdk.services.WarplyBeaconsRangingService$SendMessageRunnable
283 + ly.warp.sdk.services.WarplyBeaconsRangingService$SendMessageRunnable$1
284 +ly/warp/sdk/views/adapters/mix/CampaignsMixController.java
285 + ly.warp.sdk.views.adapters.mix.CampaignsMixController
286 + ly.warp.sdk.views.adapters.mix.CampaignsMixController$1
287 + ly.warp.sdk.views.adapters.mix.CampaignsMixController$CampaignTrackClickListener
288 + ly.warp.sdk.views.adapters.mix.CampaignsMixController$MixControllerListener
289 +ly/warp/sdk/receivers/LocationChangedReceiver.java
290 + ly.warp.sdk.receivers.LocationChangedReceiver
291 +ly/warp/sdk/utils/GCMRegistrar.java
292 + ly.warp.sdk.utils.GCMRegistrar
293 +ly/warp/sdk/dexter/listener/multi/CompositeMultiplePermissionsListener.java
294 + ly.warp.sdk.dexter.listener.multi.CompositeMultiplePermissionsListener
295 +ly/warp/sdk/dexter/listener/multi/DialogOnAnyDeniedMultiplePermissionsListener.java
296 + ly.warp.sdk.dexter.listener.multi.DialogOnAnyDeniedMultiplePermissionsListener
297 + ly.warp.sdk.dexter.listener.multi.DialogOnAnyDeniedMultiplePermissionsListener$1
298 + ly.warp.sdk.dexter.listener.multi.DialogOnAnyDeniedMultiplePermissionsListener$Builder
299 +ly/warp/sdk/views/adapters/mix/CampaignsMixRecyclerAdapter.java
300 + ly.warp.sdk.views.adapters.mix.CampaignsMixRecyclerAdapter
301 + ly.warp.sdk.views.adapters.mix.CampaignsMixRecyclerAdapter$1
302 + ly.warp.sdk.views.adapters.mix.CampaignsMixRecyclerAdapter$2
303 + ly.warp.sdk.views.adapters.mix.CampaignsMixRecyclerAdapter$Builder
304 +ly/warp/sdk/io/request/WarplyGetCardsRequest.java
305 + ly.warp.sdk.io.request.WarplyGetCardsRequest
306 +ly/warp/sdk/dexter/PermissionsActivity.java
307 + ly.warp.sdk.dexter.PermissionsActivity
308 +ly/warp/sdk/io/volley/toolbox/NetworkImageView.java
309 + ly.warp.sdk.io.volley.toolbox.NetworkImageView
310 + ly.warp.sdk.io.volley.toolbox.NetworkImageView$1
311 + ly.warp.sdk.io.volley.toolbox.NetworkImageView$1$1
312 +ly/warp/sdk/io/request/WarplyRequestOTPRequest.java
313 + ly.warp.sdk.io.request.WarplyRequestOTPRequest
314 +ly/warp/sdk/io/callbacks/CampaignsHook.java
315 + ly.warp.sdk.io.callbacks.CampaignsHook
316 +ly/warp/sdk/io/request/WarplyTagsRequest.java
317 + ly.warp.sdk.io.request.WarplyTagsRequest
318 +ly/warp/sdk/io/volley/Request.java
319 + ly.warp.sdk.io.volley.Request
320 + ly.warp.sdk.io.volley.Request$1
321 + ly.warp.sdk.io.volley.Request$Method
322 + ly.warp.sdk.io.volley.Request$Priority
323 +ly/warp/sdk/views/CampaignItemWebHolder.java
324 + ly.warp.sdk.views.CampaignItemWebHolder
325 + ly.warp.sdk.views.CampaignItemWebHolder$1
326 + ly.warp.sdk.views.CampaignItemWebHolder$2
327 + ly.warp.sdk.views.CampaignItemWebHolder$3
328 +ly/warp/sdk/dexter/MultiplePermissionListenerThreadDecorator.java
329 + ly.warp.sdk.dexter.MultiplePermissionListenerThreadDecorator
330 + ly.warp.sdk.dexter.MultiplePermissionListenerThreadDecorator$1
331 + ly.warp.sdk.dexter.MultiplePermissionListenerThreadDecorator$2
332 +ly/warp/sdk/utils/WarplyDeviceInfoCollector.java
333 + ly.warp.sdk.utils.WarplyDeviceInfoCollector
334 +ly/warp/sdk/io/volley/TimeoutError.java
335 + ly.warp.sdk.io.volley.TimeoutError
336 +ly/warp/sdk/io/callbacks/CardsHook.java
337 + ly.warp.sdk.io.callbacks.CardsHook
338 +ly/warp/sdk/io/callbacks/TagsHook.java
339 + ly.warp.sdk.io.callbacks.TagsHook
340 +ly/warp/sdk/io/request/WarplyInboxRequest.java
341 + ly.warp.sdk.io.request.WarplyInboxRequest
342 + ly.warp.sdk.io.request.WarplyInboxRequest$DisplayType
343 +ly/warp/sdk/io/callbacks/BaseCallbackReceiver.java
344 + ly.warp.sdk.io.callbacks.BaseCallbackReceiver
345 +ly/warp/sdk/io/models/WarpGeoFence.java
346 + ly.warp.sdk.io.models.WarpGeoFence
347 +ly/warp/sdk/receivers/GCMBroadcastReceiver.java
348 + ly.warp.sdk.receivers.GCMBroadcastReceiver
349 +ly/warp/sdk/utils/managers/WarplyManager.java
350 + ly.warp.sdk.utils.managers.WarplyManager
351 + ly.warp.sdk.utils.managers.WarplyManager$1
352 + ly.warp.sdk.utils.managers.WarplyManager$10
353 + ly.warp.sdk.utils.managers.WarplyManager$10$1
354 + ly.warp.sdk.utils.managers.WarplyManager$11
355 + ly.warp.sdk.utils.managers.WarplyManager$11$1
356 + ly.warp.sdk.utils.managers.WarplyManager$12
357 + ly.warp.sdk.utils.managers.WarplyManager$12$1
358 + ly.warp.sdk.utils.managers.WarplyManager$13
359 + ly.warp.sdk.utils.managers.WarplyManager$14
360 + ly.warp.sdk.utils.managers.WarplyManager$14$1
361 + ly.warp.sdk.utils.managers.WarplyManager$15
362 + ly.warp.sdk.utils.managers.WarplyManager$15$1
363 + ly.warp.sdk.utils.managers.WarplyManager$16
364 + ly.warp.sdk.utils.managers.WarplyManager$16$1
365 + ly.warp.sdk.utils.managers.WarplyManager$17
366 + ly.warp.sdk.utils.managers.WarplyManager$17$1
367 + ly.warp.sdk.utils.managers.WarplyManager$18
368 + ly.warp.sdk.utils.managers.WarplyManager$18$1
369 + ly.warp.sdk.utils.managers.WarplyManager$19
370 + ly.warp.sdk.utils.managers.WarplyManager$19$1
371 + ly.warp.sdk.utils.managers.WarplyManager$2
372 + ly.warp.sdk.utils.managers.WarplyManager$20
373 + ly.warp.sdk.utils.managers.WarplyManager$20$1
374 + ly.warp.sdk.utils.managers.WarplyManager$21
375 + ly.warp.sdk.utils.managers.WarplyManager$21$1
376 + ly.warp.sdk.utils.managers.WarplyManager$22
377 + ly.warp.sdk.utils.managers.WarplyManager$23
378 + ly.warp.sdk.utils.managers.WarplyManager$24
379 + ly.warp.sdk.utils.managers.WarplyManager$25
380 + ly.warp.sdk.utils.managers.WarplyManager$3
381 + ly.warp.sdk.utils.managers.WarplyManager$4
382 + ly.warp.sdk.utils.managers.WarplyManager$5
383 + ly.warp.sdk.utils.managers.WarplyManager$6
384 + ly.warp.sdk.utils.managers.WarplyManager$6$1
385 + ly.warp.sdk.utils.managers.WarplyManager$7
386 + ly.warp.sdk.utils.managers.WarplyManager$7$1
387 + ly.warp.sdk.utils.managers.WarplyManager$8
388 + ly.warp.sdk.utils.managers.WarplyManager$8$1
389 + ly.warp.sdk.utils.managers.WarplyManager$9
390 + ly.warp.sdk.utils.managers.WarplyManager$9$1
391 +ly/warp/sdk/io/models/Merchant.java
392 + ly.warp.sdk.io.models.Merchant
393 + ly.warp.sdk.io.models.Merchant$1
394 +ly/warp/sdk/dexter/listener/single/PermissionListener.java
395 + ly.warp.sdk.dexter.listener.single.PermissionListener
396 +ly/warp/sdk/Warply.java
397 + ly.warp.sdk.Warply
398 + ly.warp.sdk.Warply$1
399 + ly.warp.sdk.Warply$10
400 + ly.warp.sdk.Warply$11
401 + ly.warp.sdk.Warply$2
402 + ly.warp.sdk.Warply$3
403 + ly.warp.sdk.Warply$4
404 + ly.warp.sdk.Warply$5
405 + ly.warp.sdk.Warply$6
406 + ly.warp.sdk.Warply$7
407 + ly.warp.sdk.Warply$8
408 + ly.warp.sdk.Warply$9
409 +ly/warp/sdk/receivers/WarplyCustomPushActionsReceiver.java
410 + ly.warp.sdk.receivers.WarplyCustomPushActionsReceiver
411 +ly/warp/sdk/io/models/TagCategory.java
412 + ly.warp.sdk.io.models.TagCategory
413 + ly.warp.sdk.io.models.TagCategory$1
414 +ly/warp/sdk/io/volley/RequestQueue.java
415 + ly.warp.sdk.io.volley.RequestQueue
416 + ly.warp.sdk.io.volley.RequestQueue$1
417 + ly.warp.sdk.io.volley.RequestQueue$RequestFilter
418 +ly/warp/sdk/io/volley/toolbox/Authenticator.java
419 + ly.warp.sdk.io.volley.toolbox.Authenticator
420 +ly/warp/sdk/io/volley/toolbox/HurlStack.java
421 + ly.warp.sdk.io.volley.toolbox.HurlStack
422 + ly.warp.sdk.io.volley.toolbox.HurlStack$UrlRewriter
423 +ly/warp/sdk/io/request/WarplyAddAddressRequest.java
424 + ly.warp.sdk.io.request.WarplyAddAddressRequest
425 +ly/warp/sdk/io/models/Address.java
426 + ly.warp.sdk.io.models.Address
427 + ly.warp.sdk.io.models.Address$1
428 +ly/warp/sdk/io/volley/toolbox/ImageLoader.java
429 + ly.warp.sdk.io.volley.toolbox.ImageLoader
430 + ly.warp.sdk.io.volley.toolbox.ImageLoader$1
431 + ly.warp.sdk.io.volley.toolbox.ImageLoader$2
432 + ly.warp.sdk.io.volley.toolbox.ImageLoader$3
433 + ly.warp.sdk.io.volley.toolbox.ImageLoader$4
434 + ly.warp.sdk.io.volley.toolbox.ImageLoader$BatchedImageRequest
435 + ly.warp.sdk.io.volley.toolbox.ImageLoader$ImageCache
436 + ly.warp.sdk.io.volley.toolbox.ImageLoader$ImageContainer
437 + ly.warp.sdk.io.volley.toolbox.ImageLoader$ImageListener
438 +ly/warp/sdk/dexter/MultiplePermissionsListenerToPermissionListenerAdapter.java
439 + ly.warp.sdk.dexter.MultiplePermissionsListenerToPermissionListenerAdapter
440 +ly/warp/sdk/dexter/Thread.java
441 + ly.warp.sdk.dexter.Thread
442 +ly/warp/sdk/db/WarplyDBHelper.java
443 + ly.warp.sdk.db.WarplyDBHelper
444 + ly.warp.sdk.db.WarplyDBHelper$State
445 +ly/warp/sdk/io/volley/toolbox/JsonArrayRequest.java
446 + ly.warp.sdk.io.volley.toolbox.JsonArrayRequest
447 +ly/warp/sdk/services/HMSBaseMessagingService.java
448 + ly.warp.sdk.services.HMSBaseMessagingService
449 + ly.warp.sdk.services.HMSBaseMessagingService$URLThread
450 +ly/warp/sdk/io/volley/CacheDispatcher.java
451 + ly.warp.sdk.io.volley.CacheDispatcher
452 + ly.warp.sdk.io.volley.CacheDispatcher$1
453 +ly/warp/sdk/io/volley/toolbox/BasicNetwork.java
454 + ly.warp.sdk.io.volley.toolbox.BasicNetwork
455 +ly/warp/sdk/io/callbacks/WarplyReadyCallback.java
456 + ly.warp.sdk.io.callbacks.WarplyReadyCallback
457 +ly/warp/sdk/io/models/CampaignAction.java
458 + ly.warp.sdk.io.models.CampaignAction
459 + ly.warp.sdk.io.models.CampaignAction$1
460 +ly/warp/sdk/activities/WarpViewActivity.java
461 + ly.warp.sdk.activities.WarpViewActivity
462 + ly.warp.sdk.activities.WarpViewActivity$1
463 +ly/warp/sdk/utils/managers/WarplyServerPreferencesManager.java
464 + ly.warp.sdk.utils.managers.WarplyServerPreferencesManager
465 + ly.warp.sdk.utils.managers.WarplyServerPreferencesManager$1
466 + ly.warp.sdk.utils.managers.WarplyServerPreferencesManager$ServerPreferencesReceivedListener
467 +ly/warp/sdk/views/dialogs/RateDialogManager.java
468 + ly.warp.sdk.views.dialogs.RateDialogManager
469 + ly.warp.sdk.views.dialogs.RateDialogManager$1
470 + ly.warp.sdk.views.dialogs.RateDialogManager$2
471 + ly.warp.sdk.views.dialogs.RateDialogManager$3
472 + ly.warp.sdk.views.dialogs.RateDialogManager$4
473 + ly.warp.sdk.views.dialogs.RateDialogManager$5
474 + ly.warp.sdk.views.dialogs.RateDialogManager$6
475 +ly/warp/sdk/io/callbacks/InboxStatsHook.java
476 + ly.warp.sdk.io.callbacks.InboxStatsHook
477 +ly/warp/sdk/io/models/CampaignList.java
478 + ly.warp.sdk.io.models.CampaignList
479 +ly/warp/sdk/io/request/WarplyContentRequest.java
480 + ly.warp.sdk.io.request.WarplyContentRequest
481 +ly/warp/sdk/dexter/MultiplePermissionsReport.java
482 + ly.warp.sdk.dexter.MultiplePermissionsReport
483 +ly/warp/sdk/views/adapters/mix/CampaignsMixTracker.java
484 + ly.warp.sdk.views.adapters.mix.CampaignsMixTracker
485 + ly.warp.sdk.views.adapters.mix.CampaignsMixTracker$1
486 + ly.warp.sdk.views.adapters.mix.CampaignsMixTracker$TrackCampaignsTask
487 + ly.warp.sdk.views.adapters.mix.CampaignsMixTracker$TrackEvent
488 +ly/warp/sdk/dexter/WorkerThread.java
489 + ly.warp.sdk.dexter.WorkerThread
490 +ly/warp/sdk/io/volley/toolbox/ImageRequest.java
491 + ly.warp.sdk.io.volley.toolbox.ImageRequest
492 +ly/warp/sdk/views/WarpView.java
493 + ly.warp.sdk.views.WarpView
494 + ly.warp.sdk.views.WarpView$1
495 + ly.warp.sdk.views.WarpView$ProgressChangeListener
496 + ly.warp.sdk.views.WarpView$WarplyWebChromeClient
497 + ly.warp.sdk.views.WarpView$WarplyWebViewClient
498 + ly.warp.sdk.views.WarpView$WarplyWebViewClient$1
499 + ly.warp.sdk.views.WarpView$WarplyWebViewClient$2
500 +ly/warp/sdk/io/volley/toolbox/Volley.java
501 + ly.warp.sdk.io.volley.toolbox.Volley
502 +ly/warp/sdk/views/dialogs/RateDialogOptions.java
503 + ly.warp.sdk.views.dialogs.RateDialogOptions
504 +ly/warp/sdk/io/models/Coupon.java
505 + ly.warp.sdk.io.models.Coupon
506 + ly.warp.sdk.io.models.Coupon$1
507 +ly/warp/sdk/utils/WarpUtils.java
508 + ly.warp.sdk.utils.WarpUtils
509 + ly.warp.sdk.utils.WarpUtils$1
510 + ly.warp.sdk.utils.WarpUtils$2
511 +ly/warp/sdk/io/volley/Cache.java
512 + ly.warp.sdk.io.volley.Cache
513 + ly.warp.sdk.io.volley.Cache$Entry
514 +ly/warp/sdk/io/volley/NetworkDispatcher.java
515 + ly.warp.sdk.io.volley.NetworkDispatcher
516 +ly/warp/sdk/io/volley/Response.java
517 + ly.warp.sdk.io.volley.Response
518 + ly.warp.sdk.io.volley.Response$ErrorListener
519 + ly.warp.sdk.io.volley.Response$Listener
520 +ly/warp/sdk/io/request/WarplyContactRequest.java
521 + ly.warp.sdk.io.request.WarplyContactRequest
522 +ly/warp/sdk/io/models/MerchantCategoriesList.java
523 + ly.warp.sdk.io.models.MerchantCategoriesList
524 +ly/warp/sdk/io/request/WarplyAddCardRequest.java
525 + ly.warp.sdk.io.request.WarplyAddCardRequest
526 +ly/warp/sdk/io/models/AddressList.java
527 + ly.warp.sdk.io.models.AddressList
528 +ly/warp/sdk/io/models/PointsList.java
529 + ly.warp.sdk.io.models.PointsList
530 +ly/warp/sdk/utils/WarplyProperty.java
531 + ly.warp.sdk.utils.WarplyProperty
532 +ly/warp/sdk/services/PushEventsClickedWorkerService.java
533 + ly.warp.sdk.services.PushEventsClickedWorkerService
534 +ly/warp/sdk/io/models/InboxStats.java
535 + ly.warp.sdk.io.models.InboxStats
536 +ly/warp/sdk/io/volley/Network.java
537 + ly.warp.sdk.io.volley.Network
538 +ly/warp/sdk/io/volley/NetworkError.java
539 + ly.warp.sdk.io.volley.NetworkError
540 +ly/warp/sdk/io/volley/toolbox/HttpHeaderParser.java
541 + ly.warp.sdk.io.volley.toolbox.HttpHeaderParser
542 +ly/warp/sdk/services/PushAnalyticsService.java
543 + ly.warp.sdk.services.PushAnalyticsService
544 +ly/warp/sdk/io/volley/toolbox/StringRequest.java
545 + ly.warp.sdk.io.volley.toolbox.StringRequest
546 +ly/warp/sdk/io/request/WarplyJsonArrayRequest.java
547 + ly.warp.sdk.io.request.WarplyJsonArrayRequest
548 +ly/warp/sdk/io/volley/VolleyLog.java
549 + ly.warp.sdk.io.volley.VolleyLog
550 + ly.warp.sdk.io.volley.VolleyLog$MarkerLog
551 + ly.warp.sdk.io.volley.VolleyLog$MarkerLog$Marker
552 +ly/warp/sdk/io/volley/toolbox/PoolingByteArrayOutputStream.java
553 + ly.warp.sdk.io.volley.toolbox.PoolingByteArrayOutputStream
554 +ly/warp/sdk/io/volley/NetworkResponse.java
555 + ly.warp.sdk.io.volley.NetworkResponse
556 +ly/warp/sdk/io/models/BeaconMessage.java
557 + ly.warp.sdk.io.models.BeaconMessage
558 +ly/warp/sdk/utils/GoogleAdInfoClient.java
559 + ly.warp.sdk.utils.GoogleAdInfoClient
560 + ly.warp.sdk.utils.GoogleAdInfoClient$1
561 + ly.warp.sdk.utils.GoogleAdInfoClient$AdServiceConnection
562 + ly.warp.sdk.utils.GoogleAdInfoClient$GoogleAdInfo
563 + ly.warp.sdk.utils.GoogleAdInfoClient$GoogleAdInfoFetcher
564 +ly/warp/sdk/io/volley/toolbox/JsonObjectRequest.java
565 + ly.warp.sdk.io.volley.toolbox.JsonObjectRequest
566 +ly/warp/sdk/utils/constants/GCMConstants.java
567 + ly.warp.sdk.utils.constants.GCMConstants
568 +ly/warp/sdk/io/request/WarplyEditConsumerRequest.java
569 + ly.warp.sdk.io.request.WarplyEditConsumerRequest
570 +ly/warp/sdk/io/volley/ResponseDelivery.java
571 + ly.warp.sdk.io.volley.ResponseDelivery
572 +ly/warp/sdk/utils/WarplyUrlHandler.java
573 + ly.warp.sdk.utils.WarplyUrlHandler
574 +ly/warp/sdk/views/dialogs/InAppDialog.java
575 + ly.warp.sdk.views.dialogs.InAppDialog
576 + ly.warp.sdk.views.dialogs.InAppDialog$1
577 +ly/warp/sdk/utils/managers/WarplyLocationManager.java
578 + ly.warp.sdk.utils.managers.WarplyLocationManager
579 + ly.warp.sdk.utils.managers.WarplyLocationManager$1
580 + ly.warp.sdk.utils.managers.WarplyLocationManager$2
581 +ly/warp/sdk/BuildConfig.java
582 + ly.warp.sdk.BuildConfig
583 +ly/warp/sdk/io/volley/ParseError.java
584 + ly.warp.sdk.io.volley.ParseError
585 +ly/warp/sdk/io/request/WarplyConsumerRequest.java
586 + ly.warp.sdk.io.request.WarplyConsumerRequest
587 +ly/warp/sdk/dexter/PermissionToken.java
588 + ly.warp.sdk.dexter.PermissionToken
589 +ly/warp/sdk/utils/PermissionsUtil.java
590 + ly.warp.sdk.utils.PermissionsUtil
591 + ly.warp.sdk.utils.PermissionsUtil$1
592 + ly.warp.sdk.utils.PermissionsUtil$2
593 + ly.warp.sdk.utils.PermissionsUtil$3
594 + ly.warp.sdk.utils.PermissionsUtil$PermissionCallback
595 +ly/warp/sdk/dexter/listener/single/BasePermissionListener.java
596 + ly.warp.sdk.dexter.listener.single.BasePermissionListener
597 +ly/warp/sdk/dexter/PermissionRationaleToken.java
598 + ly.warp.sdk.dexter.PermissionRationaleToken
599 +ly/warp/sdk/io/models/TagsList.java
600 + ly.warp.sdk.io.models.TagsList
601 +ly/warp/sdk/io/models/ProductList.java
602 + ly.warp.sdk.io.models.ProductList
603 +ly/warp/sdk/io/models/Transaction.java
604 + ly.warp.sdk.io.models.Transaction
605 + ly.warp.sdk.io.models.Transaction$1
606 +ly/warp/sdk/io/request/WarplyVerifyOTPRequest.java
607 + ly.warp.sdk.io.request.WarplyVerifyOTPRequest
608 +ly/warp/sdk/receivers/ConnectivityChangedReceiver.java
609 + ly.warp.sdk.receivers.ConnectivityChangedReceiver
610 +ly/warp/sdk/io/request/WarplyTokenAuthorizeRequest.java
611 + ly.warp.sdk.io.request.WarplyTokenAuthorizeRequest
612 +ly/warp/sdk/io/models/CouponList.java
613 + ly.warp.sdk.io.models.CouponList
614 +ly/warp/sdk/views/dialogs/OnClickButtonListener.java
615 + ly.warp.sdk.views.dialogs.OnClickButtonListener
616 +ly/warp/sdk/dexter/listener/DexterError.java
617 + ly.warp.sdk.dexter.listener.DexterError
618 +ly/warp/sdk/dexter/DexterException.java
619 + ly.warp.sdk.dexter.DexterException
620 +ly/warp/sdk/io/request/WarplyDeleteCardRequest.java
621 + ly.warp.sdk.io.request.WarplyDeleteCardRequest
622 +ly/warp/sdk/io/callbacks/ProductsHook.java
623 + ly.warp.sdk.io.callbacks.ProductsHook
624 +ly/warp/sdk/io/request/WarplyForgotPasswordRequest.java
625 + ly.warp.sdk.io.request.WarplyForgotPasswordRequest
626 +ly/warp/sdk/io/volley/DefaultRetryPolicy.java
627 + ly.warp.sdk.io.volley.DefaultRetryPolicy
628 +ly/warp/sdk/views/adapters/CampaignsArrayAdapter.java
629 + ly.warp.sdk.views.adapters.CampaignsArrayAdapter
630 + ly.warp.sdk.views.adapters.CampaignsArrayAdapter$1
631 +ly/warp/sdk/io/request/WarplyJsonObjectRequest.java
632 + ly.warp.sdk.io.request.WarplyJsonObjectRequest
633 +ly/warp/sdk/io/request/WarplyDeleteAddressRequest.java
634 + ly.warp.sdk.io.request.WarplyDeleteAddressRequest
635 +ly/warp/sdk/receivers/BluetoothStateChangeReceiver.java
636 + ly.warp.sdk.receivers.BluetoothStateChangeReceiver
637 +ly/warp/sdk/io/request/WarplyUploadConsumerPhotoRequest.java
638 + ly.warp.sdk.io.request.WarplyUploadConsumerPhotoRequest
1 +<?xml version="1.0" encoding="UTF-8"?>
2 +<metadata>
3 + <groupId>ly.warp</groupId>
4 + <artifactId>warply-android-sdk</artifactId>
5 + <versioning>
6 + <latest>4.5.0</latest>
7 + <release>4.5.0</release>
8 + <versions>
9 + <version>4.5.0</version>
10 + </versions>
11 + <lastUpdated>20220128132240</lastUpdated>
12 + </versioning>
13 +</metadata>
1 +# Add project specific ProGuard rules here.
2 +# By default, the flags in this file are appended to flags specified
3 +# in C:\Users\philimon\AppData\Local\Android\sdk1/tools/proguard/proguard-android.txt
4 +# You can edit the include path and order by changing the proguardFiles
5 +# directive in build.gradle.
6 +#
7 +# For more details, see
8 +# http://developer.android.com/guide/developing/tools/proguard.html
9 +
10 +# Add any project specific keep options here:
11 +
12 +# If your project uses WebView with JS, uncomment the following
13 +# and specify the fully qualified class name to the JavaScript interface
14 +# class:
15 +#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
16 +# public *;
17 +#}
18 +#-keep,includedescriptorclasses class com.google.android.gms.** { *; }
19 +#-keep,includedescriptorclasses class com.google.android.gms.internal.** { *; }
20 +#-keep class com.google.android.gms.internal.** {com.google.android.gms.internal.** initialize(android.content.Context);}
21 +-ignorewarnings
22 +-keepattributes *Annotation*
23 +-keepattributes Exceptions
24 +-keepattributes InnerClasses
25 +-keepattributes Signature
26 +-keepattributes SourceFile,LineNumberTable
27 +-keep class com.huawei.hianalytics.**{*;}
28 +-keep class com.huawei.updatesdk.**{*;}
29 +-keep class com.huawei.hms.**{*;}
30 +-keep,includedescriptorclasses class net.sqlcipher.** { *; }
31 +-keep,includedescriptorclasses interface net.sqlcipher.** { *; }
...\ No newline at end of file ...\ No newline at end of file
1 +package ly.warp.sdk.views;
2 +
3 +import android.content.Context;
4 +import androidx.fragment.app.Fragment;
5 +import androidx.fragment.app.FragmentActivity;
6 +import androidx.fragment.app.FragmentManager;
7 +import androidx.fragment.app.FragmentTransaction;
8 +import android.text.TextUtils;
9 +
10 +import ly.warp.sdk.BuildConfig;
11 +import ly.warp.sdk.Warply;
12 +import ly.warp.sdk.fragments.WarpViewFragment;
13 +import ly.warp.sdk.io.callbacks.CallbackReceiver;
14 +import ly.warp.sdk.io.callbacks.SimpleCallbackReceiver;
15 +import ly.warp.sdk.io.models.CampaignList;
16 +import ly.warp.sdk.io.request.WarplyInboxRequest;
17 +
18 +public class CampaignViewLoader implements CallbackReceiver<CampaignList> {
19 +
20 + // ===========================================================
21 + // Constants
22 + // ===========================================================
23 +
24 + // ===========================================================
25 + // Fields
26 + // ===========================================================
27 +
28 + private DisplayBuilder mLastDisplayBuilder;
29 + private SimpleCallbackReceiver<CampaignList> mExternalListener;
30 +
31 + // ===========================================================
32 + // Constructors
33 + // ===========================================================
34 +
35 + public CampaignViewLoader(Context context) {
36 + Warply.getInitializer(context).init();
37 + }
38 +
39 + // ===========================================================
40 + // Methods for/from SuperClass/Interfaces
41 + // ===========================================================
42 +
43 + @Override
44 + public void onSuccess(CampaignList result) {
45 +
46 + if (result != null && result.size() > 0) {
47 + showWarplyFragment(mLastDisplayBuilder, result.get(0).getSessionUUID());
48 + }
49 + notifySuccessExternalListener(result);
50 + }
51 +
52 + @Override
53 + public void onFailure(int errorCode) {
54 +
55 + notifyFailureExternalListener(errorCode);
56 + }
57 +
58 + // ===========================================================
59 + // Methods
60 + // ===========================================================
61 +
62 + private void requestCampaignsIfNeed(DisplayBuilder builder, WarplyInboxRequest request, String sessionUuid) {
63 +
64 + if (request != null && TextUtils.isEmpty(sessionUuid)) {
65 + mLastDisplayBuilder = builder;
66 + Warply.getInbox(request, this);
67 + } else if (!TextUtils.isEmpty(sessionUuid)) {
68 + showWarplyFragment(builder, sessionUuid);
69 + notifySuccessExternalListener(null);
70 + }
71 + }
72 +
73 + private void showWarplyFragment(DisplayBuilder builder, String sessionUuid) {
74 +
75 + if (builder != null && builder.fragmentManager != null) {
76 +
77 + WarpViewFragment warpFragment = WarpViewFragment.newInstance(sessionUuid, builder.isUseProgress, builder.isShowCloseBtn);
78 + FragmentTransaction transaction = builder.fragmentManager.beginTransaction()
79 + .replace(builder.containerId, warpFragment,
80 + WarpViewFragment.class.getSimpleName())
81 + .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
82 +
83 + if (builder.isAddToBackStack) {
84 + transaction.addToBackStack(null);
85 + }
86 +
87 + try {
88 + transaction.commit();
89 + } catch (IllegalStateException e) {
90 + if (BuildConfig.DEBUG) {
91 + e.printStackTrace();
92 + }
93 + }
94 + }
95 + }
96 +
97 + private void notifySuccessExternalListener(CampaignList campaigns) {
98 +
99 + if (mExternalListener != null) {
100 + mExternalListener.onSuccess(campaigns);
101 + }
102 + }
103 +
104 + private void notifyFailureExternalListener(int errorCode) {
105 +
106 + if (mExternalListener != null) {
107 + mExternalListener.onFailure(errorCode);
108 + }
109 + }
110 +
111 + // ===========================================================
112 + // Getter & Setter
113 + // ===========================================================
114 +
115 + public void setCampaignsListener(SimpleCallbackReceiver<CampaignList> listener) {
116 + this.mExternalListener = listener;
117 + }
118 +
119 + public DisplayBuilder DisplayBuilder() {
120 + return new DisplayBuilder();
121 + }
122 +
123 + // ===========================================================
124 + // Inner and Anonymous Classes
125 + // ===========================================================
126 +
127 + public class DisplayBuilder {
128 +
129 + private boolean isUseProgress = false;
130 + private boolean isShowCloseBtn = true;
131 + private boolean isAddToBackStack = true;
132 +
133 + private FragmentManager fragmentManager;
134 + private int containerId;
135 +
136 + public void display(FragmentActivity activity, WarplyInboxRequest request) {
137 +
138 + if (activity != null && !activity.isFinishing()) {
139 + display(activity, android.R.id.content, request);
140 + }
141 + }
142 +
143 + public void display(FragmentActivity activity, int containerId, WarplyInboxRequest request) {
144 +
145 + if (activity != null && !activity.isFinishing()) {
146 + this.fragmentManager = activity.getSupportFragmentManager();
147 + this.containerId = containerId;
148 + requestCampaignsIfNeed(this, request, null);
149 + }
150 + }
151 +
152 + public void display(Fragment parentFragment, int containerId, WarplyInboxRequest request) {
153 +
154 + if (parentFragment != null && parentFragment.getActivity() != null && !parentFragment.getActivity().isFinishing()) {
155 + this.fragmentManager = parentFragment.getChildFragmentManager();
156 + this.containerId = containerId;
157 + requestCampaignsIfNeed(this, request, null);
158 + }
159 + }
160 +
161 + public void display(FragmentActivity activity, String sessionUuid) {
162 +
163 + if (activity != null && !activity.isFinishing()) {
164 + display(activity, android.R.id.content, sessionUuid);
165 + }
166 + }
167 +
168 + public void display(FragmentActivity activity, int containerId, String sessionUuid) {
169 +
170 + if (activity != null && !activity.isFinishing()) {
171 + this.fragmentManager = activity.getSupportFragmentManager();
172 + this.containerId = containerId;
173 + requestCampaignsIfNeed(this, null, sessionUuid);
174 + }
175 + }
176 +
177 + public void display(Fragment parentFragment, int containerId, String sessionUuid) {
178 +
179 + if (parentFragment != null && parentFragment.getActivity() != null && !parentFragment.getActivity().isFinishing()) {
180 + this.fragmentManager = parentFragment.getChildFragmentManager();
181 + this.containerId = containerId;
182 + requestCampaignsIfNeed(this, null, sessionUuid);
183 + }
184 + }
185 +
186 + public DisplayBuilder setUseProgress(boolean use) {
187 + this.isUseProgress = use;
188 + return this;
189 + }
190 +
191 + public DisplayBuilder setShowCloseBtn(boolean show) {
192 + this.isShowCloseBtn = show;
193 + return this;
194 + }
195 +
196 + public DisplayBuilder setAddToBackStack(boolean add) {
197 + this.isAddToBackStack = add;
198 + return this;
199 + }
200 +
201 + }
202 +}
1 +package ly.warp.sdk.views.adapters.mix;
2 +
3 +import android.os.AsyncTask;
4 +import androidx.annotation.NonNull;
5 +
6 +import java.util.ArrayList;
7 +import java.util.HashSet;
8 +import java.util.List;
9 +import java.util.Set;
10 +
11 +import ly.warp.sdk.io.models.Campaign;
12 +import ly.warp.sdk.utils.WarpUtils;
13 +import ly.warp.sdk.utils.managers.WarplyAnalyticsManager;
14 +
15 +/**
16 + * Helper class that used within the {@Link CampaignsMixController}
17 + * and allow to track native campaigns events.
18 + * Mix adapters monitor 2 types of events: view campaign in list and click on campaign item.
19 + */
20 +public class CampaignsMixTracker {
21 +
22 + // ===========================================================
23 + // Constants
24 + // ===========================================================
25 +
26 + private enum TrackEvent {
27 +
28 + CAMPAIGN_VIEW("native_campaign_view"), CAMPAIGN_CLICK("native_campaign_click");
29 +
30 + private String type;
31 +
32 + TrackEvent(String type) {
33 + this.type = type;
34 + }
35 +
36 + public String getTrackMessage(@NonNull Campaign campaign) {
37 + return type + ":" + campaign.getSessionUUID();
38 + }
39 + }
40 +
41 + // ===========================================================
42 + // Fields
43 + // ===========================================================
44 +
45 + private CampaignsMixController mMixController;
46 + private int mOldFirstVisibleItem = -1;
47 + private HashSet<Integer> mVisibleCampaignIndexes;
48 + private Set<Integer> mNewCampaignIndexes;
49 + private Set<Integer> mUpdatedCampaignIndexes;
50 +
51 + // ===========================================================
52 + // Constructors
53 + // ===========================================================
54 +
55 + public CampaignsMixTracker(@NonNull CampaignsMixController mixController) {
56 +
57 + mMixController = mixController;
58 + mVisibleCampaignIndexes = new HashSet<>();
59 + mNewCampaignIndexes = new HashSet<>();
60 + mUpdatedCampaignIndexes = new HashSet<>();
61 + }
62 +
63 + // ===========================================================
64 + // Methods for/from SuperClass/Interfaces
65 + // ===========================================================
66 +
67 + // ===========================================================
68 + // Methods
69 + // ===========================================================
70 +
71 + // ===========================================================
72 + // Getter & Setter
73 + // ===========================================================
74 +
75 + /**
76 + * call in onScroll for correct results
77 + *
78 + * @param firstVisiblePosition - first visible position in global adapter
79 + * @param lastVisibleItemPosition - last visible position in global adapter
80 + */
81 + public void trackCampaignsView(int firstVisiblePosition, int lastVisibleItemPosition) {
82 +
83 + if (lastVisibleItemPosition >= firstVisiblePosition && mOldFirstVisibleItem != firstVisiblePosition) {
84 + mOldFirstVisibleItem = firstVisiblePosition;
85 +
86 + /*Log.i("list_view_scroll", "first: " + firstVisibleItem + " visibleCount: " + visibleItemCount +
87 + " last: " +lastVisibleItem);*/
88 +
89 + mNewCampaignIndexes.clear();
90 + mUpdatedCampaignIndexes.clear();
91 + for (int i = firstVisiblePosition; i < lastVisibleItemPosition + 1; i++) {
92 + if (mMixController.getItemViewType(i) == mMixController.getCampaignItemViewType()) {
93 + // if new campaign index
94 + if (mVisibleCampaignIndexes.add(i)) {
95 + mNewCampaignIndexes.add(i);
96 + } else {
97 + mUpdatedCampaignIndexes.add(i);
98 + }
99 + }
100 + }
101 +
102 + // retain only visible indexes
103 + mVisibleCampaignIndexes.clear();
104 + mVisibleCampaignIndexes.addAll(mUpdatedCampaignIndexes);
105 + mVisibleCampaignIndexes.addAll(mNewCampaignIndexes);
106 +
107 + // update new campaigns
108 + if (mNewCampaignIndexes.size() > 0) {
109 + new TrackCampaignsTask(mNewCampaignIndexes, TrackEvent.CAMPAIGN_VIEW).execute();
110 + }
111 + }
112 + }
113 +
114 + public void trackCampaignClick(Campaign campaign) {
115 +
116 + if (campaign != null) {
117 + new TrackCampaignsTask(campaign, TrackEvent.CAMPAIGN_CLICK).execute();
118 + }
119 +
120 + }
121 +
122 + // ===========================================================
123 + // Inner and Anonymous Classes
124 + // ===========================================================
125 +
126 + private class TrackCampaignsTask extends AsyncTask<Void, Void, Void> {
127 +
128 + private List<Campaign> mmTrackCampaigns;
129 + private TrackEvent mmTrackEvent;
130 +
131 + private TrackCampaignsTask(Set<Integer> indexes, TrackEvent event) {
132 +
133 + mmTrackEvent = event;
134 + if (indexes != null && indexes.size() > 0) {
135 + mmTrackCampaigns = new ArrayList<>(indexes.size());
136 + for (int index : indexes) {
137 + Campaign camp = mMixController.getCampaignItem(index);
138 + if (camp != null) {
139 + mmTrackCampaigns.add(camp);
140 + }
141 + }
142 + }
143 + }
144 +
145 + private TrackCampaignsTask(Campaign campaign, TrackEvent event) {
146 +
147 + mmTrackEvent = event;
148 + if (campaign != null) {
149 + mmTrackCampaigns = new ArrayList<>(1);
150 + mmTrackCampaigns.add(campaign);
151 + }
152 + }
153 +
154 + @Override
155 + protected Void doInBackground(Void... params) {
156 +
157 + if (mmTrackCampaigns != null) {
158 + for (Campaign campaign : mmTrackCampaigns) {
159 +
160 + WarplyAnalyticsManager.logEvent(null, mmTrackEvent.getTrackMessage(campaign), null);
161 + WarpUtils.log("track_campaigns - " + mmTrackEvent.getTrackMessage(campaign) + " - " + campaign.getTitle());
162 + }
163 + }
164 + return null;
165 + }
166 + }
167 +}
1 +package ly.warp.sdk.views.dialogs;
2 +
3 +import android.content.Context;
4 +
5 +import androidx.appcompat.app.AlertDialog;
6 +import android.view.Gravity;
7 +import android.view.LayoutInflater;
8 +import android.view.View;
9 +import android.widget.ImageView;
10 +import android.widget.LinearLayout;
11 +import android.widget.TextView;
12 +
13 +import com.bumptech.glide.Glide;
14 +
15 +import ly.warp.sdk.R;
16 +import ly.warp.sdk.activities.WarpViewActivity;
17 +import ly.warp.sdk.io.models.Campaign;
18 +
19 +/**
20 + * Created by Panagiotis Triantafyllou on 28-Mar-19.
21 + */
22 +
23 +public class InAppDialog {
24 +
25 + // ===========================================================
26 + // Constants
27 + // ===========================================================
28 +
29 + // ===========================================================
30 + // Fields
31 + // ===========================================================
32 +
33 + private static Context mContext;
34 + private static AlertDialog mInAppDialog;
35 +
36 + // ===========================================================
37 + // Methods for/from SuperClass/Interfaces
38 + // ===========================================================
39 +
40 + // ===========================================================
41 + // Methods
42 + // ===========================================================
43 +
44 + public static void showDefaultInAppDialog(Context context, Campaign campaignToShow, boolean showViewBtn, int v) {
45 + mContext = context;
46 + showDefaultInAppDialog(context, campaignToShow, showViewBtn);
47 + }
48 +
49 + private static void showDefaultInAppDialog(final Context context, final Campaign campaignToShow, boolean showViewBtn) {
50 + if (mInAppDialog != null && mInAppDialog.isShowing()) {
51 + mInAppDialog.dismiss();
52 + }
53 +
54 + LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
55 + View customView = inflater.inflate(R.layout.layout_inapp_alert_dialog_default, null);
56 +
57 + LinearLayout customButtonsView = customView.findViewById(R.id.ll_custom_buttons_view);
58 + LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
59 + params.gravity = Gravity.RIGHT | Gravity.END;
60 +
61 + ImageView campaignImage = customView.findViewById(R.id.iv_inapp_image);
62 + TextView campaignTitle = customView.findViewById(R.id.tv_inapp_title);
63 + TextView campaignSubtitle = customView.findViewById(R.id.tv_inapp_subtitle);
64 +
65 + Glide
66 + .with(context)
67 + .load(campaignToShow.getLogoUrl())
68 + .placeholder(R.drawable.ic_default_campaign)
69 + .into(campaignImage);
70 + campaignTitle.setText(campaignToShow.getTitle());
71 + campaignSubtitle.setText(campaignToShow.getSubtitle());
72 +
73 + if (showViewBtn) {
74 + String[] items = {"View", "Close"};
75 + TextView viewBtn = new TextView(context);
76 + viewBtn.setId(0);
77 + viewBtn.setTag(items[0]);
78 + viewBtn.setText(items[0]);
79 + viewBtn.setTextAppearance(context, R.style.InAppButtonsStyle);
80 + viewBtn.setOnClickListener(new View.OnClickListener() {
81 + @Override
82 + public void onClick(View v) {
83 + context.startActivity(WarpViewActivity.createIntentFromSessionUUID(mContext,
84 + campaignToShow.getSessionUUID()));
85 + mInAppDialog.dismiss();
86 + }
87 + });
88 + customButtonsView.addView(viewBtn, params);
89 +
90 +// dialog.setItems(items, new DialogInterface.OnClickListener() {
91 +// public void onClick(DialogInterface dialog, int which) {
92 +// switch (which) {
93 +// case 0:
94 +// context.startActivity(WarpViewActivity.createIntentFromSessionUUID(context,
95 +// campaignToShow.getSessionUUID()));
96 +// break;
97 +//
98 +// case 1:
99 +// break;
100 +// }
101 +// }
102 +// });
103 + mInAppDialog = new AlertDialog.Builder(context)
104 + .setView(customView)
105 + .create();
106 + mInAppDialog.show();
107 + } else {
108 +// AlertDialog.Builder dialog = new AlertDialog.Builder(context);
109 +// mInAppDialog.setView(customView);
110 +// mInAppDialog.setNegativeButton("Close", new DialogInterface.OnClickListener() {
111 +// public void onClick(DialogInterface dialog, int id) {
112 +// }
113 +// });
114 +// mInAppDialog = new AlertDialog.Builder(context)
115 +// .create();
116 +// mInAppDialog.show();
117 + }
118 + }
119 +
120 + // ===========================================================
121 + // Inner and Anonymous Classes
122 + // ===========================================================
123 +}
1 +package ly.warp.sdk.views.dialogs;
2 +
3 +public interface OnClickButtonListener {
4 +
5 + void onClickButton(int which);
6 +
7 +}
...\ No newline at end of file ...\ No newline at end of file
1 +package ly.warp.sdk.views.dialogs;
2 +
3 +import android.app.Activity;
4 +import android.content.Context;
5 +import android.view.View;
6 +
7 +import java.util.Date;
8 +
9 +public class RateDialog {
10 +
11 + private static RateDialog singleton;
12 +
13 + private Context context;
14 +
15 + private final RateDialogOptions options = new RateDialogOptions();
16 +
17 + private int installDate = -1;
18 +
19 + private int launchTimes = -1;
20 +
21 + private int remindInterval = 1;
22 +
23 + private int eventsTimes = -1;
24 +
25 + private boolean isDebug = false;
26 +
27 + public RateDialog(Context context) {
28 + this.context = context;
29 + }
30 +
31 + public static RateDialog with(Context context) {
32 + if (singleton == null) {
33 + synchronized (RateDialog.class) {
34 + if (singleton == null) {
35 + singleton = new RateDialog(context);
36 + }
37 + }
38 + }
39 + return singleton;
40 + }
41 +
42 + public void launch() {
43 + if(RatePreferenceHelper.isFirstLaunch(context)) {
44 + RatePreferenceHelper.setInstallDate(context);
45 + }
46 +
47 + RatePreferenceHelper.setLaunchTimes(context, RatePreferenceHelper.getLaunchTimes(context) + 1);
48 + }
49 +
50 + public static boolean showRateDialogIfMeetsConditions(Activity activity) {
51 + boolean isMeetsConditions = singleton.isDebug || singleton.shouldShowRateDialog();
52 + if (isMeetsConditions) {
53 + singleton.showRateDialog(activity);
54 + }
55 + return isMeetsConditions;
56 + }
57 +
58 + public static boolean passSignificantEventAndConditions(Activity activity) {
59 + return passSignificantEvent(activity, singleton.shouldShowRateDialog());
60 + }
61 +
62 + private static boolean passSignificantEvent(Activity activity, boolean shouldShow) {
63 + int eventTimes = RatePreferenceHelper.getEventTimes(activity);
64 + RatePreferenceHelper.setEventTimes(activity, ++eventTimes);
65 + boolean isMeetsConditions = singleton.isDebug || (singleton.isOverEventTimes() && shouldShow);
66 + if (isMeetsConditions) {
67 + singleton.showRateDialog(activity);
68 + }
69 + return isMeetsConditions;
70 + }
71 +
72 + public RateDialog clearPreferenceSettings() {
73 + RatePreferenceHelper.setAgreeShowDialog(context, true);
74 + RatePreferenceHelper.clearSharedPreferences(context);
75 + return this;
76 + }
77 +
78 + private static boolean isOverDate(long targetDate, int threshold) {
79 + return new Date().getTime() - targetDate >= threshold * 24 * 60 * 60 * 1000;
80 + }
81 +
82 + public boolean shouldShowRateDialog() {
83 + return RatePreferenceHelper.getIsAgreeShowDialog(context) &&
84 + isOverLaunchTimes() &&
85 + isOverInstallDate() &&
86 + isOverIntervalDate();
87 + }
88 +
89 + public boolean isOverInstallDate() {
90 + if(installDate == -1)
91 + return true;
92 +
93 + return isOverDate(RatePreferenceHelper.getInstallDate(context), installDate);
94 + }
95 +
96 + public boolean isOverIntervalDate() {
97 + return isOverDate(RatePreferenceHelper.getRemindIntervalDate(context), remindInterval);
98 + }
99 +
100 + public boolean isOverLaunchTimes() {
101 + if(launchTimes == -1)
102 + return true;
103 +
104 + return RatePreferenceHelper.getLaunchTimes(context) >= launchTimes;
105 + }
106 +
107 + public boolean isOverEventTimes() {
108 + if(eventsTimes == -1)
109 + return true;
110 +
111 + return RatePreferenceHelper.getEventTimes(context) >= launchTimes;
112 + }
113 +
114 + public RateDialog setInstallDate(int installDate) {
115 + this.installDate = installDate;
116 + return this;
117 + }
118 +
119 + public RateDialog setLaunchTimes(int launchTimes) {
120 + this.launchTimes = launchTimes;
121 + return this;
122 + }
123 +
124 + public RateDialog setRemindInterval(int remindInterval) {
125 + this.remindInterval = remindInterval;
126 + return this;
127 + }
128 +
129 + public RateDialog setEventsTimes(int eventsTimes) {
130 + this.eventsTimes = eventsTimes;
131 + return this;
132 + }
133 +
134 + public RateDialog setShowNeutralButton(boolean isShowNeutralButton) {
135 + options.setShowNeutralButton(isShowNeutralButton);
136 + return this;
137 + }
138 +
139 + public RateDialog setShowTitle(boolean isShowTitle) {
140 + options.setShowTitle(isShowTitle);
141 + return this;
142 + }
143 +
144 + public RateDialog setView(View view) {
145 + options.setView(view);
146 + return this;
147 + }
148 +
149 + public RateDialog setOnClickButtonListener(OnClickButtonListener listener) {
150 + options.setListener(listener);
151 + return this;
152 + }
153 +
154 + public RateDialog setTitle(int resourceId) {
155 + options.setTitleResId(resourceId);
156 + return this;
157 + }
158 +
159 + public RateDialog setTitle(String title) {
160 + options.setTitleText(title);
161 + return this;
162 + }
163 +
164 + public RateDialog setMessage(int resourceId) {
165 + options.setMessageResId(resourceId);
166 + return this;
167 + }
168 +
169 + public RateDialog setMessage(String message) {
170 + options.setMessageText(message);
171 + return this;
172 + }
173 +
174 + public RateDialog setTextPositive(int resourceId) {
175 + options.setTextPositiveResId(resourceId);
176 + return this;
177 + }
178 +
179 + public RateDialog setTextPositive(String positiveText) {
180 + options.setPositiveText(positiveText);
181 + return this;
182 + }
183 +
184 + public RateDialog setTextNeutral(int resourceId) {
185 + options.setTextNeutralResId(resourceId);
186 + return this;
187 + }
188 +
189 + public RateDialog setTextNeutral(String neutralText) {
190 + options.setNeutralText(neutralText);
191 + return this;
192 + }
193 +
194 + public RateDialog setTextNegative(int resourceId) {
195 + options.setTextNegativeResId(resourceId);
196 + return this;
197 + }
198 +
199 + public RateDialog setTextNegative(String negativeText) {
200 + options.setNegativeText(negativeText);
201 + return this;
202 + }
203 +
204 + public RateDialog setCancelable(boolean cancelable) {
205 + options.setCancelable(cancelable);
206 + return this;
207 + }
208 +
209 + public RateDialog setPackageType(String packageType) {
210 + options.setPackageType(packageType);
211 + return this;
212 + }
213 +
214 + public RateDialog setPackageId(String packageId) {
215 + options.setPackageId(packageId);
216 + return this;
217 + }
218 +
219 + public RateDialog setDialogStyle(int style) {
220 + options.setDialogStyleResId(style);
221 + return this;
222 + }
223 +
224 + public RateDialog setIsDebug(boolean isDebug) {
225 + this.isDebug = isDebug;
226 + return this;
227 + }
228 +
229 + public void showRateDialog(Activity activity) {
230 + if (!activity.isFinishing()) {
231 + RateDialogManager.with(activity).create(options).show();
232 + }
233 + }
234 +}
1 +package ly.warp.sdk.views.dialogs;
2 +
3 +import android.app.AlertDialog;
4 +import android.app.Dialog;
5 +import android.content.Context;
6 +import android.content.DialogInterface;
7 +import android.content.Intent;
8 +import android.os.Build;
9 +import android.view.View;
10 +import android.widget.Button;
11 +import android.widget.LinearLayout;
12 +
13 +import static ly.warp.sdk.utils.constants.WarpConstants.PACKAGE_TITLE_GOOGLE;
14 +
15 +final class RateDialogManager {
16 +
17 + private static RateDialogManager singleton;
18 +
19 + private static Context context;
20 +
21 + static Dialog dialog = null;
22 +
23 + private RateDialogManager() {
24 + }
25 +
26 + private RateDialogManager(Context context) {
27 + this.context = context;
28 + }
29 +
30 + public static RateDialogManager with(Context context) {
31 + if (singleton == null) {
32 + synchronized (RateDialogManager.class) {
33 + if (singleton == null) {
34 + singleton = new RateDialogManager(context);
35 + }
36 + }
37 + }
38 + return singleton;
39 + }
40 +
41 + public RateDialogManager create(final RateDialogOptions options) {
42 + if (dialog != null)
43 + return this;
44 +
45 + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
46 + dialog = createDialog(context, options);
47 + } else {
48 + dialog = createMaterialDialog(context, options);
49 + }
50 +
51 + return this;
52 + }
53 +
54 + public void show() {
55 + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
56 + showDialog();
57 + } else {
58 + showMaterialDialog();
59 + }
60 + }
61 +
62 + static private void showDialog() {
63 + AlertDialog alertDialog = (AlertDialog) dialog;
64 + alertDialog.show();
65 +
66 + try {
67 + final Button button = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE);
68 + LinearLayout linearLayout = (LinearLayout) button.getParent();
69 + linearLayout.setOrientation(LinearLayout.HORIZONTAL);
70 + } catch (Exception ex) {
71 + }
72 + }
73 +
74 + static private void showMaterialDialog() {
75 + androidx.appcompat.app.AlertDialog alertDialog = (androidx.appcompat.app.AlertDialog) dialog;
76 + alertDialog.show();
77 +
78 + try {
79 + final Button button = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE);
80 + LinearLayout linearLayout = (LinearLayout) button.getParent();
81 + linearLayout.setOrientation(LinearLayout.HORIZONTAL);
82 + } catch (Exception ex) {
83 + }
84 + }
85 +
86 + static private AlertDialog.Builder getDialogBuilder(final Context context) {
87 + return new AlertDialog.Builder(context);
88 + }
89 +
90 + static private androidx.appcompat.app.AlertDialog.Builder getMaterialDialogBuilder(final Context context, final RateDialogOptions options) {
91 + return new androidx.appcompat.app.AlertDialog.Builder(context, options.getDialogStyleResId());
92 + }
93 +
94 + static private Dialog createDialog(final Context context, final RateDialogOptions options) {
95 + AlertDialog.Builder builder = getDialogBuilder(context);
96 +
97 + builder.setMessage(options.getMessageText(context));
98 +
99 + if (options.shouldShowTitle()) builder.setTitle(options.getTitleText(context));
100 +
101 + builder.setCancelable(options.getCancelable());
102 +
103 + View view = options.getView();
104 + if (view != null) builder.setView(view);
105 +
106 + final OnClickButtonListener listener = options.getListener();
107 +
108 + builder.setPositiveButton(options.getPositiveText(context), new DialogInterface.OnClickListener() {
109 + @Override
110 + public void onClick(DialogInterface dialog, int which) {
111 + Intent intentToAppstore = null;
112 +
113 + if (options.getPackageType() == PACKAGE_TITLE_GOOGLE)
114 + intentToAppstore = IntentHelper.createIntentForGooglePlay(context);
115 +
116 + context.startActivity(intentToAppstore);
117 + RatePreferenceHelper.setAgreeShowDialog(context, false);
118 + if (listener != null) listener.onClickButton(which);
119 + }
120 + });
121 +
122 + if (options.shouldShowNeutralButton()) {
123 + builder.setNeutralButton(options.getNeutralText(context), new DialogInterface.OnClickListener() {
124 + @Override
125 + public void onClick(DialogInterface dialog, int which) {
126 + RatePreferenceHelper.setRemindIntervalDate(context);
127 + if (listener != null) listener.onClickButton(which);
128 + }
129 + });
130 + }
131 +
132 + builder.setNegativeButton(options.getNegativeText(context), new DialogInterface.OnClickListener() {
133 + @Override
134 + public void onClick(DialogInterface dialog, int which) {
135 + RatePreferenceHelper.setAgreeShowDialog(context, false);
136 + if (listener != null) listener.onClickButton(which);
137 + }
138 + });
139 +
140 + return builder.create();
141 + }
142 +
143 + static private Dialog createMaterialDialog(final Context context, final RateDialogOptions options) {
144 + androidx.appcompat.app.AlertDialog.Builder builder = getMaterialDialogBuilder(context, options);
145 +
146 + builder.setMessage(options.getMessageText(context));
147 +
148 + if (options.shouldShowTitle()) builder.setTitle(options.getTitleText(context));
149 +
150 + builder.setCancelable(options.getCancelable());
151 +
152 + View view = options.getView();
153 + if (view != null) builder.setView(view);
154 +
155 + final OnClickButtonListener listener = options.getListener();
156 +
157 + builder.setPositiveButton(options.getPositiveText(context), new DialogInterface.OnClickListener() {
158 + @Override
159 + public void onClick(DialogInterface dialog, int which) {
160 + Intent intentToAppstore = null;
161 +
162 + if (options.getPackageType() == PACKAGE_TITLE_GOOGLE)
163 + intentToAppstore = IntentHelper.createIntentForGooglePlay(context);
164 +
165 + context.startActivity(intentToAppstore);
166 + RatePreferenceHelper.setAgreeShowDialog(context, false);
167 + if (listener != null) listener.onClickButton(which);
168 + }
169 + });
170 +
171 + if (options.shouldShowNeutralButton()) {
172 + builder.setNeutralButton(options.getNeutralText(context), new DialogInterface.OnClickListener() {
173 + @Override
174 + public void onClick(DialogInterface dialog, int which) {
175 + RatePreferenceHelper.setRemindIntervalDate(context);
176 + if (listener != null) listener.onClickButton(which);
177 + }
178 + });
179 + }
180 +
181 + builder.setNegativeButton(options.getNegativeText(context), new DialogInterface.OnClickListener() {
182 + @Override
183 + public void onClick(DialogInterface dialog, int which) {
184 + RatePreferenceHelper.setAgreeShowDialog(context, false);
185 + if (listener != null) listener.onClickButton(which);
186 + }
187 + });
188 +
189 + return builder.create();
190 + }
191 +}
...\ No newline at end of file ...\ No newline at end of file
1 +package ly.warp.sdk.views.dialogs;
2 +
3 +import android.content.Context;
4 +import android.view.View;
5 +
6 +import ly.warp.sdk.R;
7 +
8 +import static ly.warp.sdk.utils.constants.WarpConstants.PACKAGE_TITLE_GOOGLE;
9 +
10 +final class RateDialogOptions {
11 +
12 + private boolean showNeutralButton = true;
13 +
14 + private boolean showTitle = true;
15 +
16 + private boolean cancelable = false;
17 +
18 + private String packageType = PACKAGE_TITLE_GOOGLE;
19 +
20 + private String packageId = "";
21 +
22 + private int titleResId = R.string.rate_dialog_title;
23 +
24 + private int messageResId = R.string.rate_dialog_message;
25 +
26 + private int textPositiveResId = R.string.rate_dialog_positive;
27 +
28 + private int textNeutralResId = R.string.rate_diloag_neutral;
29 +
30 + private int textNegativeResId = R.string.rate_dialog_negative;
31 +
32 + private int dialogStyleResId = R.style.AppCompatAlertDialogStyle;
33 +
34 + private String titleText = null;
35 +
36 + private String messageText = null;
37 +
38 + private String positiveText = null;
39 +
40 + private String neutralText = null;
41 +
42 + private String negativeText = null;
43 +
44 + private View view;
45 +
46 + private OnClickButtonListener listener;
47 +
48 + public boolean shouldShowNeutralButton() {
49 + return showNeutralButton;
50 + }
51 +
52 + public void setShowNeutralButton(boolean showNeutralButton) {
53 + this.showNeutralButton = showNeutralButton;
54 + }
55 +
56 + public boolean shouldShowTitle() {
57 + return showTitle;
58 + }
59 +
60 + public void setShowTitle(boolean showTitle) {
61 + this.showTitle = showTitle;
62 + }
63 +
64 + public boolean getCancelable() {
65 + return cancelable;
66 + }
67 +
68 + public void setCancelable(boolean cancelable) {
69 + this.cancelable = cancelable;
70 + }
71 +
72 + public String getPackageType() {
73 + return packageType;
74 + }
75 +
76 + public void setPackageType(String packageType) {
77 + this.packageType = packageType;
78 + }
79 +
80 + public String getPackageId() {
81 + return packageId;
82 + }
83 +
84 + public void setPackageId(String packageId) {
85 + this.packageId = packageId;
86 + }
87 +
88 + public int getTitleResId() {
89 + return titleResId;
90 + }
91 +
92 + public void setTitleResId(int titleResId) {
93 + this.titleResId = titleResId;
94 + }
95 +
96 + public int getMessageResId() {
97 + return messageResId;
98 + }
99 +
100 + public void setMessageResId(int messageResId) {
101 + this.messageResId = messageResId;
102 + }
103 +
104 + public int getTextPositiveResId() {
105 + return textPositiveResId;
106 + }
107 +
108 + public void setTextPositiveResId(int textPositiveResId) {
109 + this.textPositiveResId = textPositiveResId;
110 + }
111 +
112 + public int getTextNeutralResId() {
113 + return textNeutralResId;
114 + }
115 +
116 + public void setTextNeutralResId(int textNeutralResId) {
117 + this.textNeutralResId = textNeutralResId;
118 + }
119 +
120 + public int getTextNegativeResId() {
121 + return textNegativeResId;
122 + }
123 +
124 + public void setTextNegativeResId(int textNegativeResId) {
125 + this.textNegativeResId = textNegativeResId;
126 + }
127 +
128 + public int getDialogStyleResId() {
129 + return dialogStyleResId;
130 + }
131 +
132 + public void setDialogStyleResId(int dialogStyleResId) {
133 + this.dialogStyleResId = dialogStyleResId;
134 + }
135 +
136 + public View getView() {
137 + return view;
138 + }
139 +
140 + public void setView(View view) {
141 + this.view = view;
142 + }
143 +
144 + public OnClickButtonListener getListener() {
145 + return listener;
146 + }
147 +
148 + public void setListener(OnClickButtonListener listener) {
149 + this.listener = listener;
150 + }
151 +
152 + public String getTitleText(Context context) {
153 + if (titleText == null) {
154 + return context.getString(titleResId);
155 + }
156 + return titleText;
157 + }
158 +
159 + public void setTitleText(String titleText) {
160 + this.titleText = titleText;
161 + }
162 +
163 + public String getMessageText(Context context) {
164 + if (messageText == null) {
165 + return context.getString(messageResId);
166 + }
167 + return messageText;
168 + }
169 +
170 + public void setMessageText(String messageText) {
171 + this.messageText = messageText;
172 + }
173 +
174 + public String getPositiveText(Context context) {
175 + if (positiveText == null) {
176 + return context.getString(textPositiveResId);
177 + }
178 + return positiveText;
179 + }
180 +
181 + public void setPositiveText(String positiveText) {
182 + this.positiveText = positiveText;
183 + }
184 +
185 + public String getNeutralText(Context context) {
186 + if (neutralText == null) {
187 + return context.getString(textNeutralResId);
188 + }
189 + return neutralText;
190 + }
191 +
192 + public void setNeutralText(String neutralText) {
193 + this.neutralText = neutralText;
194 + }
195 +
196 + public String getNegativeText(Context context) {
197 + if (negativeText == null) {
198 + return context.getString(textNegativeResId);
199 + }
200 + return negativeText;
201 + }
202 +
203 + public void setNegativeText(String negativeText) {
204 + this.negativeText = negativeText;
205 + }
206 +}
...\ No newline at end of file ...\ No newline at end of file
1 +package ly.warp.sdk.views.dialogs;
2 +
3 +import android.content.Context;
4 +import android.content.SharedPreferences;
5 +
6 +import java.util.Date;
7 +
8 +final class RatePreferenceHelper {
9 +
10 + private static final String PREF_FILE_NAME = "ratedialog_rate_pref_file";
11 + private static final String PREF_KEY_INSTALL_DATE = "ratedialog_rate_install_date";
12 + private static final String PREF_KEY_LAUNCH_TIMES = "ratedialog_rate_launch_times";
13 + private static final String PREF_KEY_IS_AGREE_SHOW_DIALOG = "ratedialog_rate_is_agree_show_dialog";
14 + private static final String PREF_KEY_REMIND_INTERVAL = "ratedialog_rate_remind_interval";
15 + private static final String PREF_KEY_EVENT_TIMES = "ratedialog_rate_event_times";
16 +
17 + private RatePreferenceHelper() {
18 + }
19 +
20 + static SharedPreferences getPreferences(Context context) {
21 + return context.getSharedPreferences(PREF_FILE_NAME, Context.MODE_PRIVATE);
22 + }
23 +
24 + static SharedPreferences.Editor getPreferencesEditor(Context context) {
25 + return getPreferences(context).edit();
26 + }
27 +
28 + /**
29 + * Clear data in shared preferences
30 + *
31 + * @param context context
32 + */
33 + static void clearSharedPreferences(Context context) {
34 + SharedPreferences.Editor editor = getPreferencesEditor(context);
35 + editor.remove(PREF_KEY_INSTALL_DATE);
36 + editor.remove(PREF_KEY_LAUNCH_TIMES);
37 + editor.remove(PREF_KEY_REMIND_INTERVAL);
38 + editor.remove(PREF_KEY_EVENT_TIMES);
39 + editor.apply();
40 + }
41 +
42 + /**
43 + * Set agree flag about show dialog.
44 + * If it is false, rate dialog will never shown unless data is cleared.
45 + *
46 + * @param context context
47 + * @param isAgree agree with showing rate dialog
48 + */
49 + static void setAgreeShowDialog(Context context, boolean isAgree) {
50 + SharedPreferences.Editor editor = getPreferencesEditor(context);
51 + editor.putBoolean(PREF_KEY_IS_AGREE_SHOW_DIALOG, isAgree);
52 + editor.apply();
53 + }
54 +
55 + /**
56 + * get agree flag about show dialog.
57 + * If it is false, rate dialog will never shown unless data is cleared.
58 + *
59 + * @param context context
60 + */
61 + static boolean getIsAgreeShowDialog(Context context) {
62 + return getPreferences(context).getBoolean(PREF_KEY_IS_AGREE_SHOW_DIALOG, true);
63 + }
64 +
65 + /**
66 + * set remind interval date.
67 + * If remind interval date is over than setting days, rate dialog will appear.
68 + *
69 + * @param context context
70 + */
71 + static void setRemindIntervalDate(Context context) {
72 + SharedPreferences.Editor editor = getPreferencesEditor(context);
73 + editor.remove(PREF_KEY_REMIND_INTERVAL);
74 + editor.putLong(PREF_KEY_REMIND_INTERVAL, new Date().getTime());
75 + editor.apply();
76 + }
77 +
78 + /**
79 + * get remind interval date.
80 + * If remind interval date is over than setting days, rate dialog will appear.
81 + *
82 + * @param context context
83 + */
84 + static long getRemindIntervalDate(Context context) {
85 + return getPreferences(context).getLong(PREF_KEY_REMIND_INTERVAL, 0);
86 + }
87 +
88 + /**
89 + * set install date.
90 + * If install date is over than setting days, rate dialog will appear.
91 + *
92 + * @param context context
93 + */
94 + static void setInstallDate(Context context) {
95 + SharedPreferences.Editor editor = getPreferencesEditor(context);
96 + editor.putLong(PREF_KEY_INSTALL_DATE, new Date().getTime());
97 + editor.apply();
98 + }
99 +
100 + /**
101 + * get install date.
102 + * If install date is over than setting days, rate dialog will appear.
103 + *
104 + * @param context context
105 + */
106 + static long getInstallDate(Context context) {
107 + return getPreferences(context).getLong(PREF_KEY_INSTALL_DATE, 0);
108 + }
109 +
110 + /**
111 + * set luanch times date.
112 + * If launch time is over than setting times, rate dialog will appear.
113 + *
114 + * @param context context
115 + * @param launchTimes launchTimes
116 + */
117 + static void setLaunchTimes(Context context, int launchTimes) {
118 + SharedPreferences.Editor editor = getPreferencesEditor(context);
119 + editor.putInt(PREF_KEY_LAUNCH_TIMES, launchTimes);
120 + editor.apply();
121 + }
122 +
123 + /**
124 + * get luanch times date.
125 + * If launch time is over than setting times, rate dialog will appear.
126 + *
127 + * @param context context
128 + */
129 + static int getLaunchTimes(Context context) {
130 + return getPreferences(context).getInt(PREF_KEY_LAUNCH_TIMES, 0);
131 + }
132 +
133 + /**
134 + * check if first launch or not.
135 + * If launching first time, andialog will set luanch date.
136 + *
137 + * @param context context
138 + */
139 + static boolean isFirstLaunch(Context context) {
140 + return getPreferences(context).getLong(PREF_KEY_INSTALL_DATE, 0) == 0L;
141 + }
142 +
143 + /**
144 + * set event times date.
145 + * If event time is over than setting times, rate dialog will appear.
146 + *
147 + * @param context context
148 + */
149 + static int getEventTimes(Context context) {
150 + return getPreferences(context).getInt(PREF_KEY_EVENT_TIMES, 0);
151 + }
152 +
153 + /**
154 + * set event times date.
155 + * If event time is over than setting times, rate dialog will appear.
156 + *
157 + * @param context context
158 + */
159 + static void setEventTimes(Context context, int eventTimes) {
160 + SharedPreferences.Editor editor = getPreferencesEditor(context);
161 + editor.putInt(PREF_KEY_EVENT_TIMES, eventTimes);
162 + editor.apply();
163 + }
164 +
165 +}
...\ No newline at end of file ...\ No newline at end of file
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 + xmlns:app="http://schemas.android.com/apk/res-auto"
4 + xmlns:tools="http://schemas.android.com/tools"
5 + android:layout_width="match_parent"
6 + android:layout_height="wrap_content"
7 + android:gravity="center"
8 + android:orientation="vertical">
9 +
10 + <ImageView
11 + android:id="@+id/iv_inapp_image"
12 + android:layout_width="80dp"
13 + android:layout_height="80dp"
14 + android:layout_gravity="center"
15 + android:layout_margin="8dp" />
16 +
17 + <TextView
18 + android:id="@+id/tv_inapp_title"
19 + android:layout_width="wrap_content"
20 + android:layout_height="wrap_content"
21 + android:layout_gravity="center"
22 + android:layout_margin="8dp"
23 + android:textAlignment="center"
24 + tools:text="Title" />
25 +
26 + <TextView
27 + android:id="@+id/tv_inapp_subtitle"
28 + android:layout_width="wrap_content"
29 + android:layout_height="wrap_content"
30 + android:layout_gravity="center"
31 + android:layout_margin="8dp"
32 + android:textAlignment="center"
33 + tools:text="Subtitle" />
34 +
35 + <LinearLayout
36 + android:id="@+id/ll_custom_buttons_view"
37 + android:layout_width="wrap_content"
38 + android:layout_height="wrap_content"
39 + android:layout_gravity="right|end"
40 + android:gravity="right|end"
41 + android:layout_margin="8dp"
42 + android:orientation="vertical">
43 +
44 + </LinearLayout>
45 +
46 +</LinearLayout>
...\ No newline at end of file ...\ No newline at end of file