icons and splash screen
|
@ -9,6 +9,7 @@ using Bit.Core.Services;
|
||||||
using Bit.Core.Utilities;
|
using Bit.Core.Utilities;
|
||||||
using Bit.iOS.Core.Services;
|
using Bit.iOS.Core.Services;
|
||||||
using Bit.iOS.Services;
|
using Bit.iOS.Services;
|
||||||
|
using CoreNFC;
|
||||||
using Foundation;
|
using Foundation;
|
||||||
using UIKit;
|
using UIKit;
|
||||||
|
|
||||||
|
@ -21,7 +22,9 @@ namespace Bit.iOS
|
||||||
private const string AppGroupId = "group.com.8bit.bitwarden";
|
private const string AppGroupId = "group.com.8bit.bitwarden";
|
||||||
private const string AccessGroup = "LTZ2PFU5D6.com.8bit.bitwarden";
|
private const string AccessGroup = "LTZ2PFU5D6.com.8bit.bitwarden";
|
||||||
|
|
||||||
private iOSPushNotificationHandler _pushHandler;
|
private NFCNdefReaderSession _nfcSession = null;
|
||||||
|
private iOSPushNotificationHandler _pushHandler = null;
|
||||||
|
private NFCReaderDelegate _nfcDelegate = null;
|
||||||
|
|
||||||
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
|
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
|
||||||
{
|
{
|
||||||
|
@ -72,6 +75,7 @@ namespace Bit.iOS
|
||||||
ServiceContainer.Init();
|
ServiceContainer.Init();
|
||||||
_pushHandler = new iOSPushNotificationHandler(
|
_pushHandler = new iOSPushNotificationHandler(
|
||||||
ServiceContainer.Resolve<IPushNotificationListenerService>("pushNotificationListenerService"));
|
ServiceContainer.Resolve<IPushNotificationListenerService>("pushNotificationListenerService"));
|
||||||
|
_nfcDelegate = new NFCReaderDelegate((success, message) => { }); // TODO: process YubiKey
|
||||||
// TODO: HockeyApp Init
|
// TODO: HockeyApp Init
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -147,5 +151,11 @@ namespace Bit.iOS
|
||||||
disableFavicon);
|
disableFavicon);
|
||||||
await ServiceContainer.Resolve<IEnvironmentService>("environmentService").SetUrlsFromStorageAsync();
|
await ServiceContainer.Resolve<IEnvironmentService>("environmentService").SetUrlsFromStorageAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void AppearanceAdjustments()
|
||||||
|
{
|
||||||
|
UINavigationBar.Appearance.ShadowImage = new UIImage();
|
||||||
|
UINavigationBar.Appearance.SetBackgroundImage(new UIImage(), UIBarMetrics.Default);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Before Width: | Height: | Size: 69 KiB |
Before Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 4.6 KiB |
Before Width: | Height: | Size: 4.6 KiB |
Before Width: | Height: | Size: 5.1 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 845 B |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 2.5 KiB |
Before Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 2.7 KiB |
|
@ -82,6 +82,8 @@
|
||||||
</array>
|
</array>
|
||||||
<key>UILaunchStoryboardName</key>
|
<key>UILaunchStoryboardName</key>
|
||||||
<string>LaunchScreen</string>
|
<string>LaunchScreen</string>
|
||||||
|
<key>UIMainStoryboardFile</key>
|
||||||
|
<string>LaunchScreen</string>
|
||||||
<key>UIMainStoryboardFile~ipad</key>
|
<key>UIMainStoryboardFile~ipad</key>
|
||||||
<string>LaunchScreen</string>
|
<string>LaunchScreen</string>
|
||||||
<key>UIViewControllerBasedStatusBarAppearance</key>
|
<key>UIViewControllerBasedStatusBarAppearance</key>
|
||||||
|
@ -103,7 +105,7 @@
|
||||||
<true/>
|
<true/>
|
||||||
</dict>
|
</dict>
|
||||||
<key>XSAppIconAssets</key>
|
<key>XSAppIconAssets</key>
|
||||||
<string>Assets.xcassets/AppIcon.appiconset</string>
|
<string>Resources/Assets.xcassets/AppIcons.appiconset</string>
|
||||||
<key>ITSAppUsesNonExemptEncryption</key>
|
<key>ITSAppUsesNonExemptEncryption</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>ITSEncryptionExportComplianceCode</key>
|
<key>ITSEncryptionExportComplianceCode</key>
|
||||||
|
|
92
src/iOS/LaunchScreen.storyboard
Normal file
|
@ -0,0 +1,92 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="6211" systemVersion="14A298i" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="5">
|
||||||
|
<dependencies>
|
||||||
|
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6204"/>
|
||||||
|
</dependencies>
|
||||||
|
<scenes>
|
||||||
|
<scene sceneID="4">
|
||||||
|
<objects>
|
||||||
|
<viewController id="5" sceneMemberID="viewController" customClass="LaunchScreenViewController">
|
||||||
|
<layoutGuides>
|
||||||
|
<viewControllerLayoutGuide type="top" id="2"/>
|
||||||
|
<viewControllerLayoutGuide type="bottom" id="3"/>
|
||||||
|
</layoutGuides>
|
||||||
|
<view key="view" contentMode="scaleToFill" id="6">
|
||||||
|
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
|
||||||
|
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||||
|
<color key="backgroundColor" customColorSpace="calibratedWhite" colorSpace="calibratedRGB" red="0.92549019607843142" green="0.94117647058823528" blue="0.96078431372549022" alpha="1"/>
|
||||||
|
<subviews>
|
||||||
|
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" id="16" translatesAutoresizingMaskIntoConstraints="NO" image="logo.png">
|
||||||
|
<rect key="frame" x="159" y="248" width="282" height="44"/>
|
||||||
|
</imageView>
|
||||||
|
</subviews>
|
||||||
|
<constraints>
|
||||||
|
<constraint id="19" firstItem="16" firstAttribute="centerY" secondItem="6" secondAttribute="centerY" constant="-30"/>
|
||||||
|
<constraint id="20" firstItem="6" firstAttribute="centerX" secondItem="16" secondAttribute="centerX"/>
|
||||||
|
</constraints>
|
||||||
|
</view>
|
||||||
|
<connections/>
|
||||||
|
</viewController>
|
||||||
|
<placeholder placeholderIdentifier="IBFirstResponder" id="7" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||||
|
</objects>
|
||||||
|
<point key="canvasLocation" x="-54" y="0.0"/>
|
||||||
|
</scene>
|
||||||
|
</scenes>
|
||||||
|
<resources>
|
||||||
|
<image name="Default.png" width="320" height="480"/>
|
||||||
|
<image name="fa-cogs.png" width="22" height="22"/>
|
||||||
|
<image name="fa-lock.png" width="22" height="22"/>
|
||||||
|
<image name="fa-refresh.png" width="22" height="22"/>
|
||||||
|
<image name="fa_folder_open.png" width="14" height="14"/>
|
||||||
|
<image name="Icon-120.png" width="120" height="120"/>
|
||||||
|
<image name="Icon-152.png" width="152" height="152"/>
|
||||||
|
<image name="Icon-16.png" width="16" height="16"/>
|
||||||
|
<image name="Icon-24.png" width="24" height="24"/>
|
||||||
|
<image name="Icon-32.png" width="32" height="32"/>
|
||||||
|
<image name="Icon-40.png" width="40" height="40"/>
|
||||||
|
<image name="Icon-60.png" width="60" height="60"/>
|
||||||
|
<image name="Icon-64.png" width="64" height="64"/>
|
||||||
|
<image name="Icon-72.png" width="72" height="72"/>
|
||||||
|
<image name="Icon-76.png" width="76" height="76"/>
|
||||||
|
<image name="Icon-Small-40.png" width="40" height="40"/>
|
||||||
|
<image name="Icon-Small-50.png" width="50" height="50"/>
|
||||||
|
<image name="Icon-Small.png" width="29" height="29"/>
|
||||||
|
<image name="Icon.png" width="57" height="57"/>
|
||||||
|
<image name="ion_chevron_right.png" width="14" height="14"/>
|
||||||
|
<image name="ion_plus.png" width="22" height="22"/>
|
||||||
|
<image name="logo.png" width="282" height="44"/>
|
||||||
|
<image name="cogs.png" width="29" height="29"/>
|
||||||
|
<image name="eye.png" width="22" height="22"/>
|
||||||
|
<image name="eye_slash.png" width="22" height="22"/>
|
||||||
|
<image name="more.png" width="28" height="28"/>
|
||||||
|
<image name="more_selected.png" width="28" height="28"/>
|
||||||
|
<image name="plus.png" width="18" height="18"/>
|
||||||
|
<image name="star.png" width="25" height="25"/>
|
||||||
|
<image name="cloudup.png" width="44" height="44"/>
|
||||||
|
<image name="envelope.png" width="18" height="18"/>
|
||||||
|
<image name="globe.png" width="44" height="44"/>
|
||||||
|
<image name="lightbulb-o.png" width="18" height="18"/>
|
||||||
|
<image name="lock.png" width="18" height="18"/>
|
||||||
|
<image name="refresh.png" width="44" height="44"/>
|
||||||
|
<image name="upload.png" width="44" height="44"/>
|
||||||
|
<image name="user.png" width="18" height="18"/>
|
||||||
|
<image name="wrench.png" width="22" height="22"/>
|
||||||
|
<image name="camera.png" width="22" height="22"/>
|
||||||
|
<image name="download.png" width="18" height="18"/>
|
||||||
|
<image name="ext-act.png" width="290" height="252"/>
|
||||||
|
<image name="ext-more.png" width="290" height="252"/>
|
||||||
|
<image name="ext-use.png" width="290" height="252"/>
|
||||||
|
<image name="fa_lock.png" width="25" height="25"/>
|
||||||
|
<image name="fingerprint.png" width="91" height="92"/>
|
||||||
|
<image name="folder.png" width="18" height="18"/>
|
||||||
|
<image name="Icon-83.5.png" width="83.5" height="83.5"/>
|
||||||
|
<image name="lightbulb.png" width="18" height="18"/>
|
||||||
|
<image name="paperclip.png" width="14" height="14"/>
|
||||||
|
<image name="photo.png" width="22" height="22"/>
|
||||||
|
<image name="share.png" width="14" height="14"/>
|
||||||
|
<image name="share_tools.png" width="44" height="44"/>
|
||||||
|
<image name="tools.png" width="26" height="26"/>
|
||||||
|
<image name="trash.png" width="18" height="18"/>
|
||||||
|
<image name="yubikey.png" width="266" height="160"/>
|
||||||
|
</resources>
|
||||||
|
</document>
|
53
src/iOS/NFCReaderDelegate.cs
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
using CoreNFC;
|
||||||
|
using Foundation;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
|
namespace Bit.iOS
|
||||||
|
{
|
||||||
|
public class NFCReaderDelegate : NFCNdefReaderSessionDelegate
|
||||||
|
{
|
||||||
|
private Regex _otpPattern = new Regex("^.*?([cbdefghijklnrtuv]{32,64})$");
|
||||||
|
private Action<bool, string> _callback;
|
||||||
|
|
||||||
|
public NFCReaderDelegate(Action<bool, string> callback)
|
||||||
|
{
|
||||||
|
_callback = callback;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void DidDetect(NFCNdefReaderSession session, NFCNdefMessage[] messages)
|
||||||
|
{
|
||||||
|
var results = new List<string>();
|
||||||
|
foreach(var message in messages)
|
||||||
|
{
|
||||||
|
foreach(var record in message.Records)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
results.Add(new NSString(record.Payload, NSStringEncoding.UTF8));
|
||||||
|
}
|
||||||
|
catch { }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach(var result in results)
|
||||||
|
{
|
||||||
|
var matches = _otpPattern.Matches(result);
|
||||||
|
if(matches.Count > 0 && matches[0].Groups.Count > 1)
|
||||||
|
{
|
||||||
|
var otp = matches[0].Groups[1].ToString();
|
||||||
|
_callback.Invoke(true, otp);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
_callback.Invoke(false, "No tags were read.");
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void DidInvalidate(NFCNdefReaderSession session, NSError error)
|
||||||
|
{
|
||||||
|
_callback.Invoke(false, error?.LocalizedDescription);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -4,109 +4,109 @@
|
||||||
"scale": "2x",
|
"scale": "2x",
|
||||||
"size": "20x20",
|
"size": "20x20",
|
||||||
"idiom": "iphone",
|
"idiom": "iphone",
|
||||||
"filename": "Icon40.png"
|
"filename": "Icon-40.png"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"scale": "3x",
|
"scale": "3x",
|
||||||
"size": "20x20",
|
"size": "20x20",
|
||||||
"idiom": "iphone",
|
"idiom": "iphone",
|
||||||
"filename": "Icon60.png"
|
"filename": "Icon-60.png"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"scale": "2x",
|
"scale": "2x",
|
||||||
"size": "29x29",
|
"size": "29x29",
|
||||||
"idiom": "iphone",
|
"idiom": "iphone",
|
||||||
"filename": "Icon58.png"
|
"filename": "Icon-58.png"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"scale": "3x",
|
"scale": "3x",
|
||||||
"size": "29x29",
|
"size": "29x29",
|
||||||
"idiom": "iphone",
|
"idiom": "iphone",
|
||||||
"filename": "Icon87.png"
|
"filename": "Icon-87.png"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"scale": "2x",
|
"scale": "2x",
|
||||||
"size": "40x40",
|
"size": "40x40",
|
||||||
"idiom": "iphone",
|
"idiom": "iphone",
|
||||||
"filename": "Icon80.png"
|
"filename": "Icon-80.png"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"scale": "3x",
|
"scale": "3x",
|
||||||
"size": "40x40",
|
"size": "40x40",
|
||||||
"idiom": "iphone",
|
"idiom": "iphone",
|
||||||
"filename": "Icon120.png"
|
"filename": "Icon-120.png"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"scale": "2x",
|
"scale": "2x",
|
||||||
"size": "60x60",
|
"size": "60x60",
|
||||||
"idiom": "iphone",
|
"idiom": "iphone",
|
||||||
"filename": "Icon120.png"
|
"filename": "Icon-120.png"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"scale": "3x",
|
"scale": "3x",
|
||||||
"size": "60x60",
|
"size": "60x60",
|
||||||
"idiom": "iphone",
|
"idiom": "iphone",
|
||||||
"filename": "Icon180.png"
|
"filename": "Icon-180.png"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"scale": "1x",
|
"scale": "1x",
|
||||||
"size": "20x20",
|
"size": "20x20",
|
||||||
"idiom": "ipad",
|
"idiom": "ipad",
|
||||||
"filename": "Icon20.png"
|
"filename": "Icon-20.png"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"scale": "2x",
|
"scale": "2x",
|
||||||
"size": "20x20",
|
"size": "20x20",
|
||||||
"idiom": "ipad",
|
"idiom": "ipad",
|
||||||
"filename": "Icon40.png"
|
"filename": "Icon-40.png"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"scale": "1x",
|
"scale": "1x",
|
||||||
"size": "29x29",
|
"size": "29x29",
|
||||||
"idiom": "ipad",
|
"idiom": "ipad",
|
||||||
"filename": "Icon29.png"
|
"filename": "Icon-29.png"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"scale": "2x",
|
"scale": "2x",
|
||||||
"size": "29x29",
|
"size": "29x29",
|
||||||
"idiom": "ipad",
|
"idiom": "ipad",
|
||||||
"filename": "Icon58.png"
|
"filename": "Icon-58.png"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"scale": "1x",
|
"scale": "1x",
|
||||||
"size": "40x40",
|
"size": "40x40",
|
||||||
"idiom": "ipad",
|
"idiom": "ipad",
|
||||||
"filename": "Icon40.png"
|
"filename": "Icon-40.png"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"scale": "2x",
|
"scale": "2x",
|
||||||
"size": "40x40",
|
"size": "40x40",
|
||||||
"idiom": "ipad",
|
"idiom": "ipad",
|
||||||
"filename": "Icon80.png"
|
"filename": "Icon-80.png"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"scale": "1x",
|
"scale": "1x",
|
||||||
"size": "76x76",
|
"size": "76x76",
|
||||||
"idiom": "ipad",
|
"idiom": "ipad",
|
||||||
"filename": "Icon76.png"
|
"filename": "Icon-76.png"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"scale": "2x",
|
"scale": "2x",
|
||||||
"size": "76x76",
|
"size": "76x76",
|
||||||
"idiom": "ipad",
|
"idiom": "ipad",
|
||||||
"filename": "Icon152.png"
|
"filename": "Icon-152.png"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"scale": "2x",
|
"scale": "2x",
|
||||||
"size": "83.5x83.5",
|
"size": "83.5x83.5",
|
||||||
"idiom": "ipad",
|
"idiom": "ipad",
|
||||||
"filename": "Icon167.png"
|
"filename": "Icon-167.png"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"scale": "1x",
|
"scale": "1x",
|
||||||
"size": "1024x1024",
|
"size": "1024x1024",
|
||||||
"idiom": "ios-marketing",
|
"idiom": "ios-marketing",
|
||||||
"filename": "Icon1024.png"
|
"filename": "Icon-1024.png"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"properties": {},
|
"properties": {},
|
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 4.9 KiB |
After Width: | Height: | Size: 8.6 KiB |
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 800 B |
After Width: | Height: | Size: 863 B |
After Width: | Height: | Size: 1 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 3.1 KiB |
After Width: | Height: | Size: 2 KiB |
After Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 8.7 KiB |
Before Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 7.1 KiB |
Before Width: | Height: | Size: 8.2 KiB |
|
@ -1,39 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
|
||||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="6245" systemVersion="13F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="X5k-f2-b5h">
|
|
||||||
<dependencies>
|
|
||||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6238"/>
|
|
||||||
</dependencies>
|
|
||||||
<scenes>
|
|
||||||
<!--View Controller-->
|
|
||||||
<scene sceneID="gAE-YM-kbH">
|
|
||||||
<objects>
|
|
||||||
<viewController id="X5k-f2-b5h" sceneMemberID="viewController">
|
|
||||||
<layoutGuides>
|
|
||||||
<viewControllerLayoutGuide type="top" id="Y8P-hJ-Z43"/>
|
|
||||||
<viewControllerLayoutGuide type="bottom" id="9ZL-r4-8FZ"/>
|
|
||||||
</layoutGuides>
|
|
||||||
<view key="view" contentMode="scaleToFill" id="yd7-JS-zBw">
|
|
||||||
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
|
|
||||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
|
||||||
<subviews>
|
|
||||||
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" misplaced="YES" image="Icon-60.png" translatesAutoresizingMaskIntoConstraints="NO" id="23">
|
|
||||||
<rect key="frame" x="270" y="270" width="60" height="60"/>
|
|
||||||
<rect key="contentStretch" x="0.0" y="0.0" width="0.0" height="0.0"/>
|
|
||||||
</imageView>
|
|
||||||
</subviews>
|
|
||||||
<color key="backgroundColor" red="0.20392156862745098" green="0.59607843137254901" blue="0.85882352941176465" alpha="1" colorSpace="calibratedRGB"/>
|
|
||||||
<constraints>
|
|
||||||
<constraint firstItem="23" firstAttribute="centerY" secondItem="yd7-JS-zBw" secondAttribute="centerY" priority="1" id="39"/>
|
|
||||||
<constraint firstItem="23" firstAttribute="centerX" secondItem="yd7-JS-zBw" secondAttribute="centerX" priority="1" id="41"/>
|
|
||||||
</constraints>
|
|
||||||
</view>
|
|
||||||
</viewController>
|
|
||||||
<placeholder placeholderIdentifier="IBFirstResponder" id="XAI-xm-WK6" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
|
||||||
</objects>
|
|
||||||
<point key="canvasLocation" x="349" y="339"/>
|
|
||||||
</scene>
|
|
||||||
</scenes>
|
|
||||||
<resources>
|
|
||||||
<image name="Icon-60.png" width="180" height="180"/>
|
|
||||||
</resources>
|
|
||||||
</document>
|
|
BIN
src/iOS/Resources/autofill-kb.png
Normal file
After Width: | Height: | Size: 28 KiB |
BIN
src/iOS/Resources/autofill-kb@2x.png
Normal file
After Width: | Height: | Size: 83 KiB |
BIN
src/iOS/Resources/autofill-kb@3x.png
Normal file
After Width: | Height: | Size: 136 KiB |
BIN
src/iOS/Resources/cog.png
Normal file
After Width: | Height: | Size: 878 B |
BIN
src/iOS/Resources/cog@2x.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
src/iOS/Resources/cog@3x.png
Normal file
After Width: | Height: | Size: 2 KiB |
BIN
src/iOS/Resources/ext-act.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
src/iOS/Resources/ext-act@2x.png
Normal file
After Width: | Height: | Size: 44 KiB |
BIN
src/iOS/Resources/ext-act@3x.png
Normal file
After Width: | Height: | Size: 71 KiB |
BIN
src/iOS/Resources/ext-more.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
src/iOS/Resources/ext-more@2x.png
Normal file
After Width: | Height: | Size: 44 KiB |
BIN
src/iOS/Resources/ext-more@3x.png
Normal file
After Width: | Height: | Size: 70 KiB |
BIN
src/iOS/Resources/ext-use.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
src/iOS/Resources/ext-use@2x.png
Normal file
After Width: | Height: | Size: 47 KiB |
BIN
src/iOS/Resources/ext-use@3x.png
Normal file
After Width: | Height: | Size: 73 KiB |
BIN
src/iOS/Resources/lock.png
Normal file
After Width: | Height: | Size: 437 B |
BIN
src/iOS/Resources/lock@2x.png
Normal file
After Width: | Height: | Size: 663 B |
BIN
src/iOS/Resources/lock@3x.png
Normal file
After Width: | Height: | Size: 877 B |
BIN
src/iOS/Resources/login.png
Normal file
After Width: | Height: | Size: 657 B |
BIN
src/iOS/Resources/login@2x.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
src/iOS/Resources/login@3x.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
BIN
src/iOS/Resources/logo.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
src/iOS/Resources/logo@2x.png
Normal file
After Width: | Height: | Size: 5.3 KiB |
BIN
src/iOS/Resources/logo@3x.png
Normal file
After Width: | Height: | Size: 8.2 KiB |
BIN
src/iOS/Resources/plus.png
Normal file
After Width: | Height: | Size: 155 B |
BIN
src/iOS/Resources/plus@2x.png
Normal file
After Width: | Height: | Size: 133 B |
BIN
src/iOS/Resources/plus@3x.png
Normal file
After Width: | Height: | Size: 140 B |
BIN
src/iOS/Resources/refresh.png
Normal file
After Width: | Height: | Size: 686 B |
BIN
src/iOS/Resources/refresh@2x.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
src/iOS/Resources/refresh@3x.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
src/iOS/Resources/search.png
Normal file
After Width: | Height: | Size: 449 B |
BIN
src/iOS/Resources/search@2x.png
Normal file
After Width: | Height: | Size: 693 B |
BIN
src/iOS/Resources/search@3x.png
Normal file
After Width: | Height: | Size: 957 B |
BIN
src/iOS/Resources/yubikey.png
Normal file
After Width: | Height: | Size: 54 KiB |
BIN
src/iOS/Resources/yubikey@2x.png
Normal file
After Width: | Height: | Size: 200 KiB |
BIN
src/iOS/Resources/yubikey@3x.png
Normal file
After Width: | Height: | Size: 417 KiB |
|
@ -112,6 +112,7 @@
|
||||||
<Compile Include="Main.cs" />
|
<Compile Include="Main.cs" />
|
||||||
<Compile Include="AppDelegate.cs" />
|
<Compile Include="AppDelegate.cs" />
|
||||||
<Compile Include="Migration\KeyChainStorageService.cs" />
|
<Compile Include="Migration\KeyChainStorageService.cs" />
|
||||||
|
<Compile Include="NFCReaderDelegate.cs" />
|
||||||
<Compile Include="Renderers\CustomContentPageRenderer.cs" />
|
<Compile Include="Renderers\CustomContentPageRenderer.cs" />
|
||||||
<Compile Include="Renderers\HybridWebViewRenderer.cs" />
|
<Compile Include="Renderers\HybridWebViewRenderer.cs" />
|
||||||
<Compile Include="Services\DeviceActionService.cs" />
|
<Compile Include="Services\DeviceActionService.cs" />
|
||||||
|
@ -122,51 +123,12 @@
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
<BundleResource Include="Resources\FontAwesome.ttf" />
|
<BundleResource Include="Resources\FontAwesome.ttf" />
|
||||||
<BundleResource Include="Resources\MaterialIcons_Regular.ttf" />
|
<BundleResource Include="Resources\MaterialIcons_Regular.ttf" />
|
||||||
|
<ImageAsset Include="Resources\Assets.xcassets\AppIcons.appiconset\Contents.json">
|
||||||
|
<Visible>false</Visible>
|
||||||
|
</ImageAsset>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<InterfaceDefinition Include="Resources\LaunchScreen.storyboard" />
|
<InterfaceDefinition Include="LaunchScreen.storyboard" />
|
||||||
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Contents.json">
|
|
||||||
<Visible>false</Visible>
|
|
||||||
</ImageAsset>
|
|
||||||
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon1024.png">
|
|
||||||
<Visible>false</Visible>
|
|
||||||
</ImageAsset>
|
|
||||||
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon180.png">
|
|
||||||
<Visible>false</Visible>
|
|
||||||
</ImageAsset>
|
|
||||||
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon167.png">
|
|
||||||
<Visible>false</Visible>
|
|
||||||
</ImageAsset>
|
|
||||||
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon152.png">
|
|
||||||
<Visible>false</Visible>
|
|
||||||
</ImageAsset>
|
|
||||||
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon120.png">
|
|
||||||
<Visible>false</Visible>
|
|
||||||
</ImageAsset>
|
|
||||||
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon87.png">
|
|
||||||
<Visible>false</Visible>
|
|
||||||
</ImageAsset>
|
|
||||||
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon80.png">
|
|
||||||
<Visible>false</Visible>
|
|
||||||
</ImageAsset>
|
|
||||||
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon76.png">
|
|
||||||
<Visible>false</Visible>
|
|
||||||
</ImageAsset>
|
|
||||||
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon60.png">
|
|
||||||
<Visible>false</Visible>
|
|
||||||
</ImageAsset>
|
|
||||||
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon58.png">
|
|
||||||
<Visible>false</Visible>
|
|
||||||
</ImageAsset>
|
|
||||||
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon40.png">
|
|
||||||
<Visible>false</Visible>
|
|
||||||
</ImageAsset>
|
|
||||||
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon29.png">
|
|
||||||
<Visible>false</Visible>
|
|
||||||
</ImageAsset>
|
|
||||||
<ImageAsset Include="Assets.xcassets\AppIcon.appiconset\Icon20.png">
|
|
||||||
<Visible>false</Visible>
|
|
||||||
</ImageAsset>
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
|
@ -197,5 +159,177 @@
|
||||||
<IsWatchApp>false</IsWatchApp>
|
<IsWatchApp>false</IsWatchApp>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup />
|
<ItemGroup>
|
||||||
|
<BundleResource Include="Resources\autofill-kb.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BundleResource Include="Resources\autofill-kb%402x.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BundleResource Include="Resources\autofill-kb%403x.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BundleResource Include="Resources\cog.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BundleResource Include="Resources\cog%402x.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BundleResource Include="Resources\cog%403x.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BundleResource Include="Resources\ext-act.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BundleResource Include="Resources\ext-act%402x.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BundleResource Include="Resources\ext-act%403x.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BundleResource Include="Resources\ext-more.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BundleResource Include="Resources\ext-more%402x.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BundleResource Include="Resources\ext-more%403x.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BundleResource Include="Resources\ext-use.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BundleResource Include="Resources\ext-use%402x.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BundleResource Include="Resources\ext-use%403x.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BundleResource Include="Resources\lock.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BundleResource Include="Resources\lock%402x.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BundleResource Include="Resources\lock%403x.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BundleResource Include="Resources\login.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BundleResource Include="Resources\login%402x.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BundleResource Include="Resources\login%403x.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BundleResource Include="Resources\logo.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BundleResource Include="Resources\logo%402x.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BundleResource Include="Resources\logo%403x.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BundleResource Include="Resources\plus.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BundleResource Include="Resources\plus%402x.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BundleResource Include="Resources\plus%403x.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BundleResource Include="Resources\refresh.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BundleResource Include="Resources\refresh%402x.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BundleResource Include="Resources\refresh%403x.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BundleResource Include="Resources\search.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BundleResource Include="Resources\search%402x.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BundleResource Include="Resources\search%403x.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BundleResource Include="Resources\yubikey.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BundleResource Include="Resources\yubikey%402x.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BundleResource Include="Resources\yubikey%403x.png" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ImageAsset Include="Resources\Assets.xcassets\AppIcons.appiconset\Icon-1024.png">
|
||||||
|
<Visible>false</Visible>
|
||||||
|
</ImageAsset>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ImageAsset Include="Resources\Assets.xcassets\AppIcons.appiconset\Icon-120.png">
|
||||||
|
<Visible>false</Visible>
|
||||||
|
</ImageAsset>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ImageAsset Include="Resources\Assets.xcassets\AppIcons.appiconset\Icon-152.png">
|
||||||
|
<Visible>false</Visible>
|
||||||
|
</ImageAsset>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ImageAsset Include="Resources\Assets.xcassets\AppIcons.appiconset\Icon-167.png">
|
||||||
|
<Visible>false</Visible>
|
||||||
|
</ImageAsset>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ImageAsset Include="Resources\Assets.xcassets\AppIcons.appiconset\Icon-180.png">
|
||||||
|
<Visible>false</Visible>
|
||||||
|
</ImageAsset>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ImageAsset Include="Resources\Assets.xcassets\AppIcons.appiconset\Icon-20.png">
|
||||||
|
<Visible>false</Visible>
|
||||||
|
</ImageAsset>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ImageAsset Include="Resources\Assets.xcassets\AppIcons.appiconset\Icon-29.png">
|
||||||
|
<Visible>false</Visible>
|
||||||
|
</ImageAsset>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ImageAsset Include="Resources\Assets.xcassets\AppIcons.appiconset\Icon-40.png">
|
||||||
|
<Visible>false</Visible>
|
||||||
|
</ImageAsset>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ImageAsset Include="Resources\Assets.xcassets\AppIcons.appiconset\Icon-58.png">
|
||||||
|
<Visible>false</Visible>
|
||||||
|
</ImageAsset>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ImageAsset Include="Resources\Assets.xcassets\AppIcons.appiconset\Icon-60.png">
|
||||||
|
<Visible>false</Visible>
|
||||||
|
</ImageAsset>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ImageAsset Include="Resources\Assets.xcassets\AppIcons.appiconset\Icon-76.png">
|
||||||
|
<Visible>false</Visible>
|
||||||
|
</ImageAsset>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ImageAsset Include="Resources\Assets.xcassets\AppIcons.appiconset\Icon-80.png">
|
||||||
|
<Visible>false</Visible>
|
||||||
|
</ImageAsset>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ImageAsset Include="Resources\Assets.xcassets\AppIcons.appiconset\Icon-87.png">
|
||||||
|
<Visible>false</Visible>
|
||||||
|
</ImageAsset>
|
||||||
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|