kopia lustrzana https://github.com/ryukoposting/Signal-Android
Add VPN/metered connection status during FCM receives.
rodzic
100dc54292
commit
1a6bd3d3f2
|
@ -1,12 +1,10 @@
|
|||
package org.thoughtcrime.securesms.gcm;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Build;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.core.content.ContextCompat;
|
||||
|
||||
import com.google.firebase.messaging.FirebaseMessagingService;
|
||||
import com.google.firebase.messaging.RemoteMessage;
|
||||
|
@ -18,6 +16,7 @@ import org.thoughtcrime.securesms.jobs.SubmitRateLimitPushChallengeJob;
|
|||
import org.thoughtcrime.securesms.keyvalue.SignalStore;
|
||||
import org.thoughtcrime.securesms.registration.PushChallengeRequest;
|
||||
import org.thoughtcrime.securesms.util.FeatureFlags;
|
||||
import org.thoughtcrime.securesms.util.NetworkUtil;
|
||||
|
||||
import java.util.Locale;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
@ -31,11 +30,12 @@ public class FcmReceiveService extends FirebaseMessagingService {
|
|||
@Override
|
||||
public void onMessageReceived(RemoteMessage remoteMessage) {
|
||||
Log.i(TAG, String.format(Locale.US,
|
||||
"onMessageReceived() ID: %s, Delay: %d, Priority: %d, Original Priority: %d",
|
||||
"onMessageReceived() ID: %s, Delay: %d, Priority: %d, Original Priority: %d, Network: %s",
|
||||
remoteMessage.getMessageId(),
|
||||
(System.currentTimeMillis() - remoteMessage.getSentTime()),
|
||||
remoteMessage.getPriority(),
|
||||
remoteMessage.getOriginalPriority()));
|
||||
remoteMessage.getOriginalPriority(),
|
||||
NetworkUtil.getNetworkStatus(this)));
|
||||
|
||||
String registrationChallenge = remoteMessage.getData().get("challenge");
|
||||
String rateLimitChallenge = remoteMessage.getData().get("rateLimitChallenge");
|
||||
|
|
|
@ -23,6 +23,7 @@ import org.thoughtcrime.securesms.service.webrtc.AndroidTelecomUtil;
|
|||
import org.thoughtcrime.securesms.util.AppSignatureUtil;
|
||||
import org.thoughtcrime.securesms.util.ByteUnit;
|
||||
import org.thoughtcrime.securesms.util.DeviceProperties;
|
||||
import org.thoughtcrime.securesms.util.NetworkUtil;
|
||||
import org.thoughtcrime.securesms.util.ScreenDensity;
|
||||
import org.thoughtcrime.securesms.util.ServiceUtil;
|
||||
import org.thoughtcrime.securesms.util.TextSecurePreferences;
|
||||
|
@ -65,7 +66,9 @@ public class LogSectionSystemInfo implements LogSection {
|
|||
builder.append("OS Host : ").append(Build.HOST).append("\n");
|
||||
builder.append("RecipientId : ").append(SignalStore.registrationValues().isRegistrationComplete() ? Recipient.self().getId() : "N/A").append("\n");
|
||||
builder.append("ACI : ").append(getCensoredAci(context)).append("\n");
|
||||
builder.append("Device ID : ").append(SignalStore.account().getDeviceId()).append("\n");
|
||||
builder.append("Censored : ").append(ApplicationDependencies.getSignalServiceNetworkAccess().isCensored()).append("\n");
|
||||
builder.append("Network status: ").append(NetworkUtil.getNetworkStatus(context)).append("\n");
|
||||
builder.append("Play Services : ").append(getPlayServicesString(context)).append("\n");
|
||||
builder.append("FCM : ").append(SignalStore.account().isFcmEnabled()).append("\n");
|
||||
builder.append("BkgRestricted : ").append(Build.VERSION.SDK_INT >= 28 ? DeviceProperties.isBackgroundRestricted(context) : "N/A").append("\n");
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
package org.thoughtcrime.securesms.util
|
||||
|
||||
/**
|
||||
* Information about the current network status by our best guess. This information
|
||||
* isn't guaranteed to be 100% accurate.
|
||||
*/
|
||||
data class NetworkStatus(val isOnVpn: Boolean, val isMetered: Boolean) {
|
||||
override fun toString(): String {
|
||||
return "[isOnVpn: $isOnVpn, isMetered: $isMetered]"
|
||||
}
|
||||
}
|
|
@ -2,7 +2,10 @@ package org.thoughtcrime.securesms.util;
|
|||
|
||||
import android.content.Context;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.net.Network;
|
||||
import android.net.NetworkCapabilities;
|
||||
import android.net.NetworkInfo;
|
||||
import android.os.Build;
|
||||
import android.telephony.TelephonyManager;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
@ -38,7 +41,7 @@ public final class NetworkUtil {
|
|||
if (SignalStore.internalValues().callingBandwidthMode() != CallManager.BandwidthMode.NORMAL) {
|
||||
return SignalStore.internalValues().callingBandwidthMode();
|
||||
}
|
||||
|
||||
|
||||
return useLowBandwidthCalling(context, networkAdapter) ? CallManager.BandwidthMode.LOW : CallManager.BandwidthMode.NORMAL;
|
||||
}
|
||||
|
||||
|
@ -78,6 +81,22 @@ public final class NetworkUtil {
|
|||
}
|
||||
}
|
||||
|
||||
public static @NonNull NetworkStatus getNetworkStatus(@NonNull Context context) {
|
||||
ConnectivityManager connectivityManager = ServiceUtil.getConnectivityManager(context);
|
||||
|
||||
if (Build.VERSION.SDK_INT >= 23) {
|
||||
Network network = connectivityManager.getActiveNetwork();
|
||||
NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(network);
|
||||
|
||||
boolean onVpn = capabilities != null && capabilities.hasTransport(NetworkCapabilities.TRANSPORT_VPN);
|
||||
boolean isNotMetered = capabilities == null || capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED);
|
||||
|
||||
return new NetworkStatus(onVpn, !isNotMetered);
|
||||
} else {
|
||||
return new NetworkStatus(false, false);
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean useLowBandwidthCalling(@NonNull Context context, @NonNull PeerConnection.AdapterType networkAdapter) {
|
||||
switch (SignalStore.settings().getCallBandwidthMode()) {
|
||||
case HIGH_ON_WIFI:
|
||||
|
|
Ładowanie…
Reference in New Issue