Skip to content

Commit

Permalink
Merge pull request #788 from predictive-technology-laboratory/mehdi_test
Browse files Browse the repository at this point in the history
Mehdi test
Boukhechba authored May 22, 2019

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
2 parents 7f542f8 + 64646f3 commit a63e8a0
Showing 16 changed files with 524 additions and 85 deletions.
2 changes: 1 addition & 1 deletion Sensus.Android.Shared/AndroidSensusServiceHelper.cs
Original file line number Diff line number Diff line change
@@ -546,7 +546,7 @@ protected override void RequestNewPushNotificationToken()
public override async Task<bool> EnableBluetoothAsync(bool lowEnergy, string rationale)
{
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.DefaultAdapter;

// ensure that the device has the required feature
if (bluetoothAdapter == null || !Application.Context.PackageManager.HasSystemFeature(lowEnergy ? PackageManager.FeatureBluetoothLe : PackageManager.FeatureBluetooth))
{
106 changes: 106 additions & 0 deletions Sensus.Android.Shared/Probes/Apps/AndroidKeystrokeProbe.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,106 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Sensus.Probes.Apps;
using Syncfusion.SfChart.XForms;
using Android.AccessibilityServices;
using Android.Views.Accessibility;
using Android.Content;
using Android.App;
using Xamarin.Android;


namespace Sensus.Android.Probes.Apps
{
public class AndroidKeystrokeProbe : KeystrokeProbe
{
private AndroidKeystrokeService _accessibilityListener;
private DateTime? _accessibilityEventTime;
private EventHandler<KeystrokeDatum> _accessibilityCallback;

public AndroidKeystrokeProbe()
{
_accessibilityCallback = async (sender, incomingKeystrokedatum) =>
{

//Console.WriteLine("***** OnAccessibilityEvent Probeeeeeeeeeeeeeeeeeee***** " + incomingKeystrokedatum.Key + " " + incomingKeystrokedatum.App);

await StoreDatumAsync(incomingKeystrokedatum);
};

}

protected override ChartDataPoint GetChartDataPointFromDatum(Datum datum)
{
throw new NotImplementedException();
}

protected override ChartAxis GetChartPrimaryAxis()
{
throw new NotImplementedException();
}

protected override RangeAxisBase GetChartSecondaryAxis()
{
throw new NotImplementedException();
}

protected override ChartSeries GetChartSeries()
{
throw new NotImplementedException();
}

protected override Task StartListeningAsync()
{

if (!isAccessibilityServiceEnabled()) {

//This temporary, code should be added to automatically open settings page.
//Xamarin.Forms.Application.Current.MainPage.DisplayAlert("Permission Request", "Please navigate to settings->Accessibility and enable the accessbility service permission for Sensus", "ok", "cancel");

//var response = await Xamarin.Forms.Application.Current.MainPage.DisplayAlert("Permission Request", "On the next screen, please enable the accessbility service permission for Sensus", "ok", "cancel");

//if (response)
//{
// //user click ok
// //await SensusServiceHelper.Get().FlashNotificationAsync("starttttttttttttttttt");
// //Intent intent = new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS);
// //Application.Context.StartActivity(intent);

//}

}

AndroidKeystrokeService.AccessibilityBroadcast += _accessibilityCallback;
//This doesn't work because the accessibility service can be started and stopped only by system apps
//Intent serviceIntent = new Intent(Application.Context, typeof(AndroidKeystrokeService));
//Application.Context.StartService(serviceIntent);
return Task.CompletedTask;
}

protected override Task StopListeningAsync()
{
AndroidKeystrokeService.AccessibilityBroadcast -= _accessibilityCallback;
//This doesn't work
//Intent serviceIntent = new Intent(Application.Context, typeof(AndroidKeystrokeService));
//Application.Context.StopService(serviceIntent);
return Task.CompletedTask;
}

public Boolean isAccessibilityServiceEnabled()
{
AccessibilityManager accessibilityManager = (AccessibilityManager)Application.Context.GetSystemService(AccessibilityService.AccessibilityService);
IList<AccessibilityServiceInfo> enabledServices = accessibilityManager.GetEnabledAccessibilityServiceList(FeedbackFlags.AllMask);
bool check = false;
for (int i = 0; i < enabledServices.Count; i++) {
AccessibilityServiceInfo e = enabledServices[i];
if (e.ResolveInfo.ServiceInfo.PackageName == Application.Context.ApplicationInfo.PackageName) {
check = true;
}
}
return check;
}
}
}
68 changes: 68 additions & 0 deletions Sensus.Android.Shared/Probes/Apps/AndroidKeystrokeService.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
using System;
using System.Collections.Generic;
using System.Text;
using Android.Views.Accessibility;
using Android.AccessibilityServices;
using Sensus.Android;
using Android.App;
using Android;
using Android.Util;
using Sensus.Probes.Apps;
using Android.Content;
using Sensus.Exceptions;

namespace Sensus.Android.Probes.Apps
{
[Service(Permission = Manifest.Permission.BindAccessibilityService)]
[IntentFilter(new[] { "android.accessibilityservice.AccessibilityService" })]
public class AndroidKeystrokeService : AccessibilityService
{
private AccessibilityServiceInfo info = new AccessibilityServiceInfo();
public static event EventHandler<KeystrokeDatum> AccessibilityBroadcast;
public override void OnAccessibilityEvent(AccessibilityEvent e)
{
try {
if (e.Text.Count > 0)
{
AccessibilityBroadcast?.Invoke(this, new KeystrokeDatum(DateTimeOffset.UtcNow, e.Text[0].ToString(), e.PackageName));
}

}
catch (Exception ex)
{
SensusException.Report("Exception in Kesystroke service: " + ex.Message, ex);
}
}

public override void OnCreate()
{
base.OnCreate();

}

public override void OnInterrupt()
{
throw new NotImplementedException();
}

public override ComponentName StartService(Intent service)
{
return base.StartService(service);
}

public override bool StopService(Intent name)
{
return base.StopService(name);
}

protected override void OnServiceConnected()
{
base.OnServiceConnected();
info.EventTypes = EventTypes.ViewTextChanged;
info.FeedbackType = FeedbackFlags.AllMask;
info.NotificationTimeout = 100;
this.SetServiceInfo(info);

}
}
}
Original file line number Diff line number Diff line change
@@ -46,10 +46,19 @@ public override void OnReceive(global::Android.Content.Context context, Intent i
// we've seen duplicate reports of the BSSID. only call the event handler if this is the first report
// or if the BSSID has changed to a new value. it's possible for the current to be null multiple times
// hence the need for both the first check as well as the change check.
string currAccessPointBSSID = GetAccessPointBSSID();
string currAccessPointBSSID = null;
string currAccessPointRssi = null;

if (SensusServiceHelper.Get().WiFiConnected)
{
WifiManager wifiManager = Application.Context.GetSystemService(global::Android.Content.Context.WifiService) as WifiManager;
currAccessPointBSSID = wifiManager.ConnectionInfo.BSSID;
currAccessPointRssi = wifiManager.ConnectionInfo.Rssi.ToString();
}

if (FIRST_RECEIVE || currAccessPointBSSID != PREVIOUS_ACCESS_POINT_BSSID)
{
WIFI_CONNECTION_CHANGED?.Invoke(this, new WlanDatum(DateTimeOffset.UtcNow, currAccessPointBSSID));
WIFI_CONNECTION_CHANGED?.Invoke(this, new WlanDatum(DateTimeOffset.UtcNow, currAccessPointBSSID, currAccessPointRssi));
PREVIOUS_ACCESS_POINT_BSSID = currAccessPointBSSID;
FIRST_RECEIVE = false;
}
@@ -61,17 +70,6 @@ public override void OnReceive(global::Android.Content.Context context, Intent i
}
}

private string GetAccessPointBSSID()
{
string accessPointBSSID = null;

if (SensusServiceHelper.Get().WiFiConnected)
{
WifiManager wifiManager = Application.Context.GetSystemService(global::Android.Content.Context.WifiService) as WifiManager;
accessPointBSSID = wifiManager.ConnectionInfo.BSSID;
}

return accessPointBSSID;
}

}
}
2 changes: 2 additions & 0 deletions Sensus.Android.Shared/Sensus.Android.Shared.projitems
Original file line number Diff line number Diff line change
@@ -11,6 +11,8 @@
<ItemGroup>
<Compile Include="$(MSBuildThisFileDirectory)Concurrent\MainConcurrent.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Context\AndroidSensusContext.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Probes\Apps\AndroidKeystrokeProbe.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Probes\Apps\AndroidKeystrokeService.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Probes\Movement\AndroidGyroscopeProbe.cs" />
<Compile Include="$(MSBuildThisFileDirectory)UI\SliderInputEffect.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Callbacks\AndroidCallbackScheduler.cs" />
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@@ -7,10 +7,11 @@
<OutputType>Library</OutputType>
<RootNamespace>Sensus.Android.Tests.AppCenter</RootNamespace>
<AssemblyName>Sensus.Android.Tests.AppCenter</AssemblyName>
<TargetFrameworkVersion>v4.7</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<ReleaseVersion>2.0.0</ReleaseVersion>
<Description>Endpoint for running Sensus unit tests within the AppCenter cloud. This must be built in release
to run on the AppCenter cloud.</Description>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
2 changes: 1 addition & 1 deletion Sensus.Android/AndroidMainActivity.cs
Original file line number Diff line number Diff line change
@@ -374,7 +374,7 @@ public void GetActivityResultAsync(Intent intent, AndroidActivityResultRequestCo
_activityResultWait.Reset();

try
{
{
StartActivityForResult(intent, (int)requestCode);
}
catch (Exception ex)
2 changes: 1 addition & 1 deletion Sensus.Android/Properties/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -12,7 +12,7 @@
<meta-data android:name="com.google.android.awareness.API_KEY" android:value="AIzaSyDQxDh05AoGtHNAwTRKvg6zWnBNTGmmu7Y" />
<!-- Declare the Estimote scanning service. -->
<service android:name="com.estimote.scanning_plugin.packet_provider.service.PacketProviderWrapperService" android:enabled="true" android:exported="false" />
<!-- Google Firebase Cloud Messaging -->
<!-- Google Firebase Cloud Messaging -->
<receiver android:name="com.google.firebase.iid.FirebaseInstanceIdInternalReceiver" android:exported="false" />
<receiver android:name="com.google.firebase.iid.FirebaseInstanceIdReceiver" android:exported="true" android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
49 changes: 49 additions & 0 deletions Sensus.Shared/Probes/Apps/KeystrokeDatum.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
using System;
using System.Collections.Generic;
using System.Text;

namespace Sensus.Probes.Apps
{
public class KeystrokeDatum : Datum
{
private string _key;
private string _app;


public KeystrokeDatum(DateTimeOffset timestamp, string key, string app) : base(timestamp)
{
_key = key == null ? "" : key;
_app = app == null ? "" : app;
}

public override string DisplayDetail
{
get
{
return "(Keystroke Data)";
}
}

public string Key { get => _key; set => _key = value; }
public string App { get => _app; set => _app = value; }

public override object StringPlaceholderValue => throw new NotImplementedException();

public override bool Equals(object obj)
{
return base.Equals(obj);
}

public override int GetHashCode()
{
return base.GetHashCode();
}

public override string ToString()
{
return base.ToString() + Environment.NewLine +
"Key: " + _key + Environment.NewLine +
"App: " + _app + Environment.NewLine;
}
}
}
65 changes: 65 additions & 0 deletions Sensus.Shared/Probes/Apps/KeystrokeProbe.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Syncfusion.SfChart.XForms;
using Newtonsoft.Json;

namespace Sensus.Probes.Apps
{
public abstract class KeystrokeProbe : ListeningProbe
{

public override string DisplayName
{
get
{
return "Keystroke";
}
}
public override Type DatumType
{
get { return typeof(KeystrokeDatum); }
}

[JsonIgnore]
protected override bool DefaultKeepDeviceAwake
{
get
{
return false;
}
}

[JsonIgnore]
protected override string DeviceAwakeWarning
{
get
{
return "This setting should not be enabled. It does not affect iOS and will unnecessarily reduce battery life on Android.";
}
}

[JsonIgnore]
protected override string DeviceAsleepWarning
{
get
{
return null;
}
}

public override double? MaxDataStoresPerSecond { get => base.MaxDataStoresPerSecond; set => base.MaxDataStoresPerSecond = value; }

public override string CollectionDescription => base.CollectionDescription;

protected override bool WillHaveSignificantNegativeImpactOnBattery => base.WillHaveSignificantNegativeImpactOnBattery;

protected override double RawParticipation => base.RawParticipation;

protected override long DataRateSampleSize => base.DataRateSampleSize;


}
}
9 changes: 9 additions & 0 deletions Sensus.Shared/Probes/Network/WlanDatum.cs
Original file line number Diff line number Diff line change
@@ -22,6 +22,7 @@ namespace Sensus.Probes.Network
public class WlanDatum : Datum, IWlanDatum
{
private string _accessPointBSSID;
private string _accessPointRssi = null;

[StringProbeTriggerProperty("Wireless Access Point")]
[Anonymizable("Wireless Access Point:", typeof(StringHashAnonymizer), false)]
@@ -59,6 +60,14 @@ public WlanDatum(DateTimeOffset timestamp, string accessPointBSSID)
_accessPointBSSID = accessPointBSSID == null ? "" : accessPointBSSID;
}

public WlanDatum(DateTimeOffset timestamp, string accessPointBSSID, string accessPointRssi)
: base(timestamp)
{
_accessPointBSSID = accessPointBSSID == null ? "" : accessPointBSSID;
_accessPointRssi = accessPointRssi == null ? "" : accessPointRssi;
}


public override string ToString()
{
return base.ToString() + Environment.NewLine +
2 changes: 2 additions & 0 deletions Sensus.Shared/Sensus.Shared.projitems
Original file line number Diff line number Diff line change
@@ -28,6 +28,8 @@
<Compile Include="$(MSBuildThisFileDirectory)Encryption\SymmetricEncryption.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Exceptions\SensusException.cs" />
<Compile Include="$(MSBuildThisFileDirectory)ImpreciseDatum.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Probes\Apps\KeystrokeDatum.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Probes\Apps\KeystrokeProbe.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Probes\Communication\SmsDatum.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Probes\Communication\TelephonyDatum.cs" />
<Compile Include="$(MSBuildThisFileDirectory)Probes\Context\HumidityDatum.cs" />
5 changes: 3 additions & 2 deletions Sensus.iOS.Tests.AppCenter/Sensus.iOS.Tests.AppCenter.csproj
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@@ -7,8 +7,9 @@
<OutputType>Library</OutputType>
<RootNamespace>Sensus.iOS.Tests.AppCenter</RootNamespace>
<AssemblyName>Sensus.iOS.Tests.AppCenter</AssemblyName>
<TargetFrameworkVersion>v4.7</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<ReleaseVersion>2.0.0</ReleaseVersion>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
36 changes: 30 additions & 6 deletions Sensus.iOS.Tests/Sensus.iOS.Tests.csproj
Original file line number Diff line number Diff line change
@@ -38,13 +38,15 @@
<MtouchLink>None</MtouchLink>
<MtouchArch>x86_64</MtouchArch>
<MtouchHttpClientHandler>NSUrlSessionHandler</MtouchHttpClientHandler>
<MtouchVerbosity></MtouchVerbosity>
<MtouchVerbosity>
</MtouchVerbosity>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\iPhone\Release</OutputPath>
<DefineConstants></DefineConstants>
<DefineConstants>
</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<CodesignKey>iPhone Developer</CodesignKey>
@@ -54,7 +56,8 @@
<MtouchLink>SdkOnly</MtouchLink>
<MtouchArch>ARM64</MtouchArch>
<MtouchHttpClientHandler>NSUrlSessionHandler</MtouchHttpClientHandler>
<MtouchVerbosity></MtouchVerbosity>
<MtouchVerbosity>
</MtouchVerbosity>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhone' ">
<DebugSymbols>true</DebugSymbols>
@@ -74,8 +77,10 @@
<MtouchLink>SdkOnly</MtouchLink>
<MtouchArch>ARM64</MtouchArch>
<MtouchHttpClientHandler>NSUrlSessionHandler</MtouchHttpClientHandler>
<MtouchVerbosity></MtouchVerbosity>
<BuildIpa></BuildIpa>
<MtouchVerbosity>
</MtouchVerbosity>
<BuildIpa>
</BuildIpa>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhoneSimulator' ">
<CodesignKey>iPhone Developer</CodesignKey>
@@ -343,65 +348,84 @@
<ItemGroup>
<ImageAsset Include="..\Sensus.iOS\Resources\Images.xcassets\AppIcons.appiconset\Contents.json">
<Link>Resources\Images.xcassets\AppIcons.appiconset\Contents.json</Link>
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="..\Sensus.iOS\Resources\Images.xcassets\AppIcons.appiconset\Icon-App-1024x1024%401x.png">
<Link>Resources\Images.xcassets\AppIcons.appiconset\Icon-App-1024x1024%401x.png</Link>
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="..\Sensus.iOS\Resources\Images.xcassets\AppIcons.appiconset\Icon-App-29x29%401x.png">
<Link>Resources\Images.xcassets\AppIcons.appiconset\Icon-App-29x29%401x.png</Link>
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="..\Sensus.iOS\Resources\Images.xcassets\AppIcons.appiconset\Icon-App-29x29%402x.png">
<Link>Resources\Images.xcassets\AppIcons.appiconset\Icon-App-29x29%402x.png</Link>
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="..\Sensus.iOS\Resources\Images.xcassets\AppIcons.appiconset\Icon-App-29x29%403x.png">
<Link>Resources\Images.xcassets\AppIcons.appiconset\Icon-App-29x29%403x.png</Link>
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="..\Sensus.iOS\Resources\Images.xcassets\AppIcons.appiconset\Icon-App-40x40%401x.png">
<Link>Resources\Images.xcassets\AppIcons.appiconset\Icon-App-40x40%401x.png</Link>
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="..\Sensus.iOS\Resources\Images.xcassets\AppIcons.appiconset\Icon-App-40x40%402x.png">
<Link>Resources\Images.xcassets\AppIcons.appiconset\Icon-App-40x40%402x.png</Link>
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="..\Sensus.iOS\Resources\Images.xcassets\AppIcons.appiconset\Icon-App-40x40%403x.png">
<Link>Resources\Images.xcassets\AppIcons.appiconset\Icon-App-40x40%403x.png</Link>
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="..\Sensus.iOS\Resources\Images.xcassets\AppIcons.appiconset\Icon-App-57x57%401x.png">
<Link>Resources\Images.xcassets\AppIcons.appiconset\Icon-App-57x57%401x.png</Link>
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="..\Sensus.iOS\Resources\Images.xcassets\AppIcons.appiconset\Icon-App-57x57%402x.png">
<Link>Resources\Images.xcassets\AppIcons.appiconset\Icon-App-57x57%402x.png</Link>
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="..\Sensus.iOS\Resources\Images.xcassets\AppIcons.appiconset\Icon-App-60x60%402x.png">
<Link>Resources\Images.xcassets\AppIcons.appiconset\Icon-App-60x60%402x.png</Link>
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="..\Sensus.iOS\Resources\Images.xcassets\AppIcons.appiconset\Icon-App-60x60%403x.png">
<Link>Resources\Images.xcassets\AppIcons.appiconset\Icon-App-60x60%403x.png</Link>
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="..\Sensus.iOS\Resources\Images.xcassets\AppIcons.appiconset\Icon-App-72x72%401x.png">
<Link>Resources\Images.xcassets\AppIcons.appiconset\Icon-App-72x72%401x.png</Link>
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="..\Sensus.iOS\Resources\Images.xcassets\AppIcons.appiconset\Icon-App-72x72%402x.png">
<Link>Resources\Images.xcassets\AppIcons.appiconset\Icon-App-72x72%402x.png</Link>
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="..\Sensus.iOS\Resources\Images.xcassets\AppIcons.appiconset\Icon-App-76x76%401x.png">
<Link>Resources\Images.xcassets\AppIcons.appiconset\Icon-App-76x76%401x.png</Link>
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="..\Sensus.iOS\Resources\Images.xcassets\AppIcons.appiconset\Icon-App-76x76%402x.png">
<Link>Resources\Images.xcassets\AppIcons.appiconset\Icon-App-76x76%402x.png</Link>
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="..\Sensus.iOS\Resources\Images.xcassets\AppIcons.appiconset\Icon-App-83.5x83.5%402x.png">
<Link>Resources\Images.xcassets\AppIcons.appiconset\Icon-App-83.5x83.5%402x.png</Link>
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="..\Sensus.iOS\Resources\Images.xcassets\AppIcons.appiconset\Icon-Small-50x50%401x.png">
<Link>Resources\Images.xcassets\AppIcons.appiconset\Icon-Small-50x50%401x.png</Link>
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="..\Sensus.iOS\Resources\Images.xcassets\AppIcons.appiconset\Icon-Small-50x50%402x.png">
<Link>Resources\Images.xcassets\AppIcons.appiconset\Icon-Small-50x50%402x.png</Link>
<Visible>false</Visible>
</ImageAsset>
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.CSharp.targets" />
<Import Project="..\packages\xunit.core.2.4.0\build\xunit.core.targets" Condition="Exists('..\packages\xunit.core.2.4.0\build\xunit.core.targets')" />
<Import Project="..\packages\xunit.runner.devices.2.4.48\build\xamarinios10\xunit.runner.devices.targets" Condition="Exists('..\packages\xunit.runner.devices.2.4.48\build\xamarinios10\xunit.runner.devices.targets')" />
<Import Project="..\packages\Xamarin.Forms.3.2.0.839982\build\netstandard2.0\Xamarin.Forms.targets" Condition="Exists('..\packages\Xamarin.Forms.3.2.0.839982\build\netstandard2.0\Xamarin.Forms.targets')" />
<Import Project="..\packages\Xamarin.Swift4.4.0.0.1\build\Xamarin.Swift4.targets" Condition="Exists('..\packages\Xamarin.Swift4.4.0.0.1\build\Xamarin.Swift4.targets')" />
</Project>
</Project>
81 changes: 60 additions & 21 deletions Sensus.iOS/Sensus.iOS.csproj
Original file line number Diff line number Diff line change
@@ -72,7 +72,7 @@ Store. It is possible to run and debug this project on physical and virtual iOS
<CodesignProvision>Sensus App Store</CodesignProvision>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<NoWarn>1701</NoWarn>
<MtouchUseLlvm>true</MtouchUseLlvm>
<MtouchUseLlvm>true</MtouchUseLlvm>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Ad-Hoc|iPhone' ">
<Optimize>true</Optimize>
@@ -83,7 +83,8 @@ Store. It is possible to run and debug this project on physical and virtual iOS
<MtouchArch>ARMv7, ARM64</MtouchArch>
<ConsolePause>false</ConsolePause>
<CodesignKey>iPhone Distribution: UVA Apps, LLC (L8C6JE7MP8)</CodesignKey>
<IpaPackageName></IpaPackageName>
<IpaPackageName>
</IpaPackageName>
<DefineConstants>__IOS__;__MOBILE__;__UNIFIED__;RELEASE</DefineConstants>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<NoWarn>1701</NoWarn>
@@ -348,25 +349,63 @@ Store. It is possible to run and debug this project on physical and virtual iOS
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.CSharp.targets" />
<ItemGroup>
<ImageAsset Include="Resources\Images.xcassets\AppIcons.appiconset\Contents.json" />
<ImageAsset Include="Resources\Images.xcassets\AppIcons.appiconset\Icon-App-29x29%401x.png" />
<ImageAsset Include="Resources\Images.xcassets\AppIcons.appiconset\Icon-App-29x29%402x.png" />
<ImageAsset Include="Resources\Images.xcassets\AppIcons.appiconset\Icon-App-29x29%403x.png" />
<ImageAsset Include="Resources\Images.xcassets\AppIcons.appiconset\Icon-App-40x40%401x.png" />
<ImageAsset Include="Resources\Images.xcassets\AppIcons.appiconset\Icon-App-40x40%402x.png" />
<ImageAsset Include="Resources\Images.xcassets\AppIcons.appiconset\Icon-App-40x40%403x.png" />
<ImageAsset Include="Resources\Images.xcassets\AppIcons.appiconset\Icon-App-57x57%401x.png" />
<ImageAsset Include="Resources\Images.xcassets\AppIcons.appiconset\Icon-App-57x57%402x.png" />
<ImageAsset Include="Resources\Images.xcassets\AppIcons.appiconset\Icon-App-60x60%402x.png" />
<ImageAsset Include="Resources\Images.xcassets\AppIcons.appiconset\Icon-App-60x60%403x.png" />
<ImageAsset Include="Resources\Images.xcassets\AppIcons.appiconset\Icon-App-72x72%401x.png" />
<ImageAsset Include="Resources\Images.xcassets\AppIcons.appiconset\Icon-App-72x72%402x.png" />
<ImageAsset Include="Resources\Images.xcassets\AppIcons.appiconset\Icon-App-76x76%401x.png" />
<ImageAsset Include="Resources\Images.xcassets\AppIcons.appiconset\Icon-App-76x76%402x.png" />
<ImageAsset Include="Resources\Images.xcassets\AppIcons.appiconset\Icon-App-83.5x83.5%402x.png" />
<ImageAsset Include="Resources\Images.xcassets\AppIcons.appiconset\Icon-Small-50x50%401x.png" />
<ImageAsset Include="Resources\Images.xcassets\AppIcons.appiconset\Icon-Small-50x50%402x.png" />
<ImageAsset Include="Resources\Images.xcassets\AppIcons.appiconset\Icon-App-1024x1024%401x.png" />
<ImageAsset Include="Resources\Images.xcassets\AppIcons.appiconset\Contents.json">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Resources\Images.xcassets\AppIcons.appiconset\Icon-App-29x29%401x.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Resources\Images.xcassets\AppIcons.appiconset\Icon-App-29x29%402x.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Resources\Images.xcassets\AppIcons.appiconset\Icon-App-29x29%403x.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Resources\Images.xcassets\AppIcons.appiconset\Icon-App-40x40%401x.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Resources\Images.xcassets\AppIcons.appiconset\Icon-App-40x40%402x.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Resources\Images.xcassets\AppIcons.appiconset\Icon-App-40x40%403x.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Resources\Images.xcassets\AppIcons.appiconset\Icon-App-57x57%401x.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Resources\Images.xcassets\AppIcons.appiconset\Icon-App-57x57%402x.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Resources\Images.xcassets\AppIcons.appiconset\Icon-App-60x60%402x.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Resources\Images.xcassets\AppIcons.appiconset\Icon-App-60x60%403x.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Resources\Images.xcassets\AppIcons.appiconset\Icon-App-72x72%401x.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Resources\Images.xcassets\AppIcons.appiconset\Icon-App-72x72%402x.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Resources\Images.xcassets\AppIcons.appiconset\Icon-App-76x76%401x.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Resources\Images.xcassets\AppIcons.appiconset\Icon-App-76x76%402x.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Resources\Images.xcassets\AppIcons.appiconset\Icon-App-83.5x83.5%402x.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Resources\Images.xcassets\AppIcons.appiconset\Icon-Small-50x50%401x.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Resources\Images.xcassets\AppIcons.appiconset\Icon-Small-50x50%402x.png">
<Visible>false</Visible>
</ImageAsset>
<ImageAsset Include="Resources\Images.xcassets\AppIcons.appiconset\Icon-App-1024x1024%401x.png">
<Visible>false</Visible>
</ImageAsset>
</ItemGroup>
<ItemGroup>
<BundleResource Include="Resources\check.png" />
149 changes: 112 additions & 37 deletions Sensus.sln

Large diffs are not rendered by default.

0 comments on commit a63e8a0

Please sign in to comment.