Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 44d01ecc20 | |||
| e43e187d84 | |||
| 849170cd2b | |||
| d36b07cbd4 | |||
| ceeb999b7f | |||
| 51c4e15c57 | |||
| 67b266ae0e | |||
| 6f2866a202 | |||
| dfa6e960da |
@@ -1,5 +1,23 @@
|
||||
# Changelog
|
||||
|
||||
## Versione 3.3.2
|
||||
|
||||
### Build (58)
|
||||
- Corretto spazio banner sempre visibile
|
||||
|
||||
### Build (57)
|
||||
- Corretto layout conteggio
|
||||
|
||||
### Build (56)
|
||||
- Corretto crash in configurazione iniziale
|
||||
- Corretta distanza in allerta tempo reale
|
||||
- Aggiunto conto alla rovescia in allerta tempo reale in home
|
||||
|
||||
## Versione 3.3.1
|
||||
|
||||
### Build (54)
|
||||
- Corretto problema user-id non ricavato
|
||||
|
||||
## Versione 3.3
|
||||
|
||||
### Build (52)
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
}
|
||||
|
||||
|
||||
self.userSeismicTimestamp = [self calculateUserSeismicTimestampWithInfo:userInfo];
|
||||
self.userSeismicTimestamp = [EQNUtility calculateUserSeismicTimestampFromUserInfo:userInfo];
|
||||
if (self.userSeismicTimestamp) {
|
||||
// start the countdown
|
||||
self.countdownTimer = [NSTimer scheduledTimerWithTimeInterval:1.0
|
||||
@@ -88,39 +88,6 @@
|
||||
|
||||
#pragma mark - Private
|
||||
|
||||
- (nullable NSDate *)calculateUserSeismicTimestampWithInfo:(NSDictionary *)info
|
||||
{
|
||||
// dobbiamo calcolare l'ora in cui il sisma arriverà nella posizione dell'utente
|
||||
// per fare questo, il calcolo sarà:
|
||||
// timestamp sisma + warning time
|
||||
|
||||
// ultima posizione nota dell'utente
|
||||
CLLocationManager *manager = [[CLLocationManager alloc] init];
|
||||
CLLocation *lastUserLocation = manager.location;
|
||||
if (!lastUserLocation) {
|
||||
return nil;
|
||||
}
|
||||
|
||||
// posizione sisma
|
||||
double latitude = [info[@"latitude"] doubleValue];
|
||||
double longitude = [info[@"longitude"] doubleValue];
|
||||
CLLocation *location = [[CLLocation alloc] initWithLatitude:latitude longitude:longitude];
|
||||
|
||||
// distanza tra sisma e utente (in km)
|
||||
CLLocationDistance distance = [lastUserLocation distanceFromLocation:location];
|
||||
double userDistance = distance/1000;
|
||||
|
||||
// calcoliamo warning_time
|
||||
double waveSpeed = [info[@"wave_speed"] doubleValue];
|
||||
double warningTime = round(userDistance/waveSpeed - 5);
|
||||
|
||||
// aggiungiamo il warning time al timestamp del sisma
|
||||
NSDate *seismicDate = [EQNUtility getDateFromString:info[@"datetime"]];
|
||||
NSDate *userSeismicDate = [seismicDate dateByAddingTimeInterval:warningTime];
|
||||
|
||||
return userSeismicDate;
|
||||
}
|
||||
|
||||
- (void)countdownFired:(id)sender
|
||||
{
|
||||
NSDate *now = [NSDate date];
|
||||
|
||||
@@ -1705,12 +1705,12 @@
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_STYLE = Manual;
|
||||
CURRENT_PROJECT_VERSION = 52;
|
||||
CURRENT_PROJECT_VERSION = 58;
|
||||
DEVELOPMENT_TEAM = WJA4MR4CPC;
|
||||
INFOPLIST_FILE = EQNNotificationService/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
|
||||
MARKETING_VERSION = 3.3;
|
||||
MARKETING_VERSION = 3.3.2;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.finazzi.distquake.EQNNotificationService;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "Earthquake Network Extensions - Development";
|
||||
@@ -1727,12 +1727,12 @@
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_STYLE = Manual;
|
||||
CURRENT_PROJECT_VERSION = 52;
|
||||
CURRENT_PROJECT_VERSION = 58;
|
||||
DEVELOPMENT_TEAM = WJA4MR4CPC;
|
||||
INFOPLIST_FILE = EQNNotificationService/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
|
||||
MARKETING_VERSION = 3.3;
|
||||
MARKETING_VERSION = 3.3.2;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.finazzi.distquake.EQNNotificationService;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "Earthquake Network Extensions - Development";
|
||||
@@ -1865,14 +1865,14 @@
|
||||
CODE_SIGN_ENTITLEMENTS = "Earthquake Network/Earthquake Network.entitlements";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
CODE_SIGN_STYLE = Manual;
|
||||
CURRENT_PROJECT_VERSION = 52;
|
||||
CURRENT_PROJECT_VERSION = 58;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = WJA4MR4CPC;
|
||||
GCC_PREFIX_HEADER = "Earthquake Network/Earthquake Network-Prefix.pch";
|
||||
INFOPLIST_FILE = "Earthquake Network/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
MARKETING_VERSION = 3.3;
|
||||
MARKETING_VERSION = 3.3.2;
|
||||
OTHER_LDFLAGS = (
|
||||
"$(inherited)",
|
||||
"-ObjC",
|
||||
@@ -1976,13 +1976,13 @@
|
||||
CODE_SIGN_ENTITLEMENTS = "Earthquake Network/Earthquake Network.entitlements";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
CODE_SIGN_STYLE = Manual;
|
||||
CURRENT_PROJECT_VERSION = 52;
|
||||
CURRENT_PROJECT_VERSION = 58;
|
||||
DEFINES_MODULE = YES;
|
||||
DEVELOPMENT_TEAM = WJA4MR4CPC;
|
||||
GCC_PREFIX_HEADER = "Earthquake Network/Earthquake Network-Prefix.pch";
|
||||
INFOPLIST_FILE = "Earthquake Network/Info.plist";
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
|
||||
MARKETING_VERSION = 3.3;
|
||||
MARKETING_VERSION = 3.3.2;
|
||||
OTHER_LDFLAGS = (
|
||||
"$(inherited)",
|
||||
"-ObjC",
|
||||
@@ -2081,12 +2081,12 @@
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_STYLE = Manual;
|
||||
CURRENT_PROJECT_VERSION = 52;
|
||||
CURRENT_PROJECT_VERSION = 58;
|
||||
DEVELOPMENT_TEAM = WJA4MR4CPC;
|
||||
INFOPLIST_FILE = EQNNotificationContent/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
|
||||
MARKETING_VERSION = 3.3;
|
||||
MARKETING_VERSION = 3.3.2;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.finazzi.distquake.EQNNotificationContent;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "Earthquake Network Extensions - Development";
|
||||
@@ -2103,12 +2103,12 @@
|
||||
buildSettings = {
|
||||
CLANG_ENABLE_MODULES = YES;
|
||||
CODE_SIGN_STYLE = Manual;
|
||||
CURRENT_PROJECT_VERSION = 52;
|
||||
CURRENT_PROJECT_VERSION = 58;
|
||||
DEVELOPMENT_TEAM = WJA4MR4CPC;
|
||||
INFOPLIST_FILE = EQNNotificationContent/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
|
||||
MARKETING_VERSION = 3.3;
|
||||
MARKETING_VERSION = 3.3.2;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = com.finazzi.distquake.EQNNotificationContent;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
PROVISIONING_PROFILE_SPECIFIER = "Earthquake Network Extensions - Development";
|
||||
|
||||
@@ -181,7 +181,6 @@
|
||||
[EQNNotificheReteSismiche saveDefaultValues];
|
||||
}
|
||||
|
||||
[[NSUserDefaults standardUserDefaults] setObject:fcmToken forKey:TOKEN_USER];
|
||||
[EQNUser defaultUser].tokenUser = fcmToken;
|
||||
}
|
||||
|
||||
|
||||
+46
-11
@@ -15,6 +15,7 @@ class AlertsSeismicNotificationExpandedTableViewCell: EQNBaseTableViewCell, MKMa
|
||||
|
||||
@objc var notification: [String: Any]? {
|
||||
didSet {
|
||||
startCountdown()
|
||||
updateUI()
|
||||
}
|
||||
}
|
||||
@@ -28,6 +29,7 @@ class AlertsSeismicNotificationExpandedTableViewCell: EQNBaseTableViewCell, MKMa
|
||||
|
||||
@IBOutlet weak var notificationTitleLabel: UILabel!
|
||||
@IBOutlet weak var notificationDescriptionLabel: UILabel!
|
||||
@IBOutlet weak var waveTimeLabel: UILabel!
|
||||
@IBOutlet weak var mapView: MKMapView! {
|
||||
didSet {
|
||||
mapView.delegate = self
|
||||
@@ -35,9 +37,22 @@ class AlertsSeismicNotificationExpandedTableViewCell: EQNBaseTableViewCell, MKMa
|
||||
mapView.isZoomEnabled = false
|
||||
}
|
||||
}
|
||||
private var impactTimestamp: Date?
|
||||
private var countdownTimer: Timer?
|
||||
|
||||
// MARK: - Private
|
||||
|
||||
private func startCountdown() {
|
||||
guard let notification = notification else { return }
|
||||
|
||||
// calculate the impact timestamp and start a timer for the countdown label
|
||||
if let impactTimestamp = EQNUtility.calculateUserSeismicTimestamp(fromUserInfo: notification) {
|
||||
self.impactTimestamp = impactTimestamp
|
||||
countdownTimer = Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(countdownTimerFired(_:)), userInfo: nil, repeats: true)
|
||||
countdownTimer?.fire()
|
||||
}
|
||||
}
|
||||
|
||||
private func updateUI() {
|
||||
notificationTitleLabel.text = ""
|
||||
notificationDescriptionLabel.text = ""
|
||||
@@ -55,25 +70,31 @@ class AlertsSeismicNotificationExpandedTableViewCell: EQNBaseTableViewCell, MKMa
|
||||
if let title = alert["loc-key"] as? String, let args = alert["loc-args"] as? [String], let arg = args.first {
|
||||
notificationTitleLabel.text = String(format: NSLocalizedString(title, comment: ""), arg)
|
||||
}
|
||||
if let location = notification["location"],
|
||||
let counter = notification["counter"],
|
||||
let dateString = notification["datetime"] as? String,
|
||||
let date = EQNUtility.getDateFrom(dateString) {
|
||||
|
||||
// get coordinate
|
||||
var coordinate: CLLocation?
|
||||
if let latitudeString = notification["latitude"] as? String, let latitude = Double(latitudeString),
|
||||
let longitudeString = notification["longitude"] as? String, let longitude = Double(longitudeString) {
|
||||
|
||||
coordinate = CLLocation(latitude: latitude, longitude: longitude)
|
||||
}
|
||||
|
||||
if let coordinate = coordinate,
|
||||
let counter = notification["counter"],
|
||||
let dateString = notification["datetime"] as? String,
|
||||
let date = EQNUtility.getDateFrom(dateString) {
|
||||
|
||||
let distance = EQNUser.default().lastPosition?.distance(from: coordinate) ?? 0.0
|
||||
let distanceRound = Int(round(distance / 1_000))
|
||||
let difference = Int(NSDate().timeIntervalSince(date) / 60.0)
|
||||
|
||||
notificationDescriptionLabel.text = ""
|
||||
+ NSLocalizedString("Distanza", comment: "") + " \(location)"
|
||||
+ NSLocalizedString("Distanza", comment: "") + " \(distanceRound) km"
|
||||
+ " - " + EQNUtility.formattedString(forTimeDifference: difference)
|
||||
+ "\n" + String(format: NSLocalizedString("map_number", comment: ""), "\(counter)")
|
||||
}
|
||||
|
||||
if let latitudeString = notification["latitude"] as? String,
|
||||
let latitude = Double(latitudeString),
|
||||
let longitudeString = notification["longitude"] as? String,
|
||||
let longitude = Double(longitudeString) {
|
||||
|
||||
let coordinate = CLLocation(latitude: latitude, longitude: longitude)
|
||||
if let coordinate = coordinate {
|
||||
let span = MKCoordinateSpan(latitudeDelta: 10.5, longitudeDelta: 10.5)
|
||||
let region = MKCoordinateRegion(center: coordinate.coordinate, span: span)
|
||||
|
||||
@@ -111,6 +132,20 @@ class AlertsSeismicNotificationExpandedTableViewCell: EQNBaseTableViewCell, MKMa
|
||||
|
||||
// MARK: - Actions
|
||||
|
||||
@objc private func countdownTimerFired(_ sender: Timer) {
|
||||
guard let impactTimestamp = impactTimestamp else { return }
|
||||
|
||||
let now = Date()
|
||||
let difference = max(impactTimestamp.timeIntervalSince(now), 0)
|
||||
waveTimeLabel.text = String(format: "%@ %.0f %@", NSLocalizedString("alert_wave", comment: ""), difference, NSLocalizedString("alert_seconds", comment: ""))
|
||||
|
||||
if difference <= 0 {
|
||||
// stop the countdown
|
||||
countdownTimer?.invalidate()
|
||||
countdownTimer = nil
|
||||
}
|
||||
}
|
||||
|
||||
@IBAction private func shareAppTapped(_ sender: UIButton) {
|
||||
onTapShareApp?()
|
||||
}
|
||||
|
||||
@@ -63,14 +63,12 @@
|
||||
|
||||
- (void)hideAdBanner
|
||||
{
|
||||
if (self.bannerView == nil) {
|
||||
return;
|
||||
}
|
||||
// make sure that the banner is hidden
|
||||
self.bannerContainerHeightConstraint.constant = 0;
|
||||
|
||||
// remove the banner (if available)
|
||||
[self.bannerView removeFromSuperview];
|
||||
self.bannerView = nil;
|
||||
self.bannerContainerHeightConstraint.constant = 0;
|
||||
}
|
||||
|
||||
- (void)showAdBanner
|
||||
|
||||
@@ -13,6 +13,9 @@ import StoreKit
|
||||
|
||||
class SubscriptionDetailViewController: UIViewController {
|
||||
|
||||
/// Enable this allows shake to enable the current subscription
|
||||
private static let ShareToEnableSubscription = false
|
||||
|
||||
var product: SKProduct? {
|
||||
didSet {
|
||||
updateUI()
|
||||
@@ -122,12 +125,8 @@ class SubscriptionDetailViewController: UIViewController {
|
||||
|
||||
|
||||
extension SubscriptionDetailViewController {
|
||||
override var canBecomeFirstResponder: Bool {
|
||||
false
|
||||
}
|
||||
|
||||
override func motionEnded(_ motion: UIEvent.EventSubtype, with event: UIEvent?) {
|
||||
guard let product = product, event?.subtype == .motionShake else {
|
||||
guard let product = product, event?.subtype == .motionShake, Self.ShareToEnableSubscription else {
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
@@ -35,18 +35,18 @@
|
||||
{
|
||||
self = [super init];
|
||||
if (self) {
|
||||
self.tokenUser = [[NSUserDefaults standardUserDefaults] objectForKey:TOKEN_USER];
|
||||
_tokenUser = [[NSUserDefaults standardUserDefaults] objectForKey:TOKEN_USER];
|
||||
id savedUserId = [[NSUserDefaults standardUserDefaults] objectForKey:USER_ID];
|
||||
self.user_ID = [self convertUserIdIntoString:savedUserId];
|
||||
_user_ID = [self convertUserIdIntoString:savedUserId];
|
||||
|
||||
NSArray *lastPosArray = [EQNUtility loadArrayOfClass:[CLLocation class] fromUserDefaultsForKey:EQNUserDefaultLastLocation];
|
||||
if (lastPosArray.count > 0) {
|
||||
self.lastPosition = [lastPosArray lastObject];
|
||||
_lastPosition = [lastPosArray lastObject];
|
||||
}
|
||||
|
||||
self.registrato = NO;
|
||||
if (self.user_ID) {
|
||||
self.registrato = YES;
|
||||
_registrato = NO;
|
||||
if (_user_ID) {
|
||||
_registrato = YES;
|
||||
}
|
||||
|
||||
[[EQNAccelerometroManager sharedInstance] addObserver:(id)self
|
||||
@@ -59,14 +59,27 @@
|
||||
return self;
|
||||
}
|
||||
|
||||
#pragma mark - Accessories
|
||||
|
||||
- (void)setTokenUser:(NSString *)tokenUser
|
||||
{
|
||||
// token could be retrieved after some times
|
||||
// thanks to this, we force the server registration when the token is received
|
||||
_tokenUser = tokenUser;
|
||||
[[NSUserDefaults standardUserDefaults] setObject:tokenUser forKey:TOKEN_USER];
|
||||
[self verificaRegistrazione];
|
||||
}
|
||||
|
||||
#pragma mark - Public
|
||||
|
||||
- (void)saveUserInfo
|
||||
{
|
||||
[[NSUserDefaults standardUserDefaults] setObject:self.tokenUser forKey:TOKEN_USER];
|
||||
[[NSUserDefaults standardUserDefaults] setObject:self.user_ID forKey:USER_ID];
|
||||
NSArray *lastPosiArray = @[self.lastPosition];
|
||||
[EQNUtility storeArray:lastPosiArray toUserDefaultForKey:EQNUserDefaultLastLocation];
|
||||
if (self.lastPosition) {
|
||||
NSArray *lastPosiArray = @[self.lastPosition];
|
||||
[EQNUtility storeArray:lastPosiArray toUserDefaultForKey:EQNUserDefaultLastLocation];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)removeUser
|
||||
|
||||
@@ -59,6 +59,12 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
/// @param keyName Key of NSUserDefault to retrieve
|
||||
+ (nullable NSDictionary *)loadDictionaryFromUserDefaultsForKey:(NSString *)keyName;
|
||||
|
||||
/// Calculate impact time from a received push notification
|
||||
/// @param info Payload of a received notification
|
||||
/// @return Impact time
|
||||
+ (nullable NSDate *)calculateUserSeismicTimestampFromUserInfo:(NSDictionary *)info;
|
||||
|
||||
|
||||
@end
|
||||
|
||||
NS_ASSUME_NONNULL_END
|
||||
|
||||
@@ -200,4 +200,39 @@
|
||||
return dictionary;
|
||||
}
|
||||
|
||||
#pragma mark - Notifications
|
||||
|
||||
+ (nullable NSDate *)calculateUserSeismicTimestampFromUserInfo:(NSDictionary *)info
|
||||
{
|
||||
// dobbiamo calcolare l'ora in cui il sisma arriverà nella posizione dell'utente
|
||||
// per fare questo, il calcolo sarà:
|
||||
// timestamp sisma + warning time
|
||||
|
||||
// ultima posizione nota dell'utente
|
||||
CLLocationManager *manager = [[CLLocationManager alloc] init];
|
||||
CLLocation *lastUserLocation = manager.location;
|
||||
if (!lastUserLocation) {
|
||||
return nil;
|
||||
}
|
||||
|
||||
// posizione sisma
|
||||
double latitude = [info[@"latitude"] doubleValue];
|
||||
double longitude = [info[@"longitude"] doubleValue];
|
||||
CLLocation *location = [[CLLocation alloc] initWithLatitude:latitude longitude:longitude];
|
||||
|
||||
// distanza tra sisma e utente (in km)
|
||||
CLLocationDistance distance = [lastUserLocation distanceFromLocation:location];
|
||||
double userDistance = distance/1000;
|
||||
|
||||
// calcoliamo warning_time
|
||||
double waveSpeed = [info[@"wave_speed"] doubleValue];
|
||||
double warningTime = round(userDistance/waveSpeed - 5);
|
||||
|
||||
// aggiungiamo il warning time al timestamp del sisma
|
||||
NSDate *seismicDate = [EQNUtility getDateFromString:info[@"datetime"]];
|
||||
NSDate *userSeismicDate = [seismicDate dateByAddingTimeInterval:warningTime];
|
||||
|
||||
return userSeismicDate;
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
@@ -1857,15 +1857,15 @@ In più sostieni il progetto di ricerca il quale non riceve finanziamenti estern
|
||||
<outlet property="messageLabel" destination="SuO-hV-kUz" id="NaR-eN-Dko"/>
|
||||
</connections>
|
||||
</tableViewCell>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="none" indentationWidth="10" reuseIdentifier="SeismicNotificationExpandedCell" rowHeight="530" id="C7v-rs-1fb" customClass="AlertsSeismicNotificationExpandedTableViewCell" customModule="Earthquake_Network" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="188" width="414" height="530"/>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="none" indentationWidth="10" reuseIdentifier="SeismicNotificationExpandedCell" rowHeight="580" id="C7v-rs-1fb" customClass="AlertsSeismicNotificationExpandedTableViewCell" customModule="Earthquake_Network" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="188" width="414" height="580"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="C7v-rs-1fb" id="aEH-vE-u7m">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="530"/>
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="580"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="TfA-6E-CQc">
|
||||
<rect key="frame" x="8" y="8" width="398" height="514"/>
|
||||
<rect key="frame" x="8" y="8" width="398" height="564"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Rilevato un sisma debole a 150 km (Test)" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="M7i-e5-N6v">
|
||||
<rect key="frame" x="8" y="8" width="382" height="67.5"/>
|
||||
@@ -1881,14 +1881,20 @@ Sisma rilevato da 10 smartphone</string>
|
||||
<nil key="textColor"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" text="Onda sismica in 0 secondi" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="EiJ-Xy-eGg">
|
||||
<rect key="frame" x="8" y="138" width="382" height="33.5"/>
|
||||
<fontDescription key="fontDescription" style="UICTFontTextStyleTitle1"/>
|
||||
<color key="textColor" red="0.81894129514694214" green="0.15377968549728394" blue="0.11752084642648697" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<mapView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" mapType="standard" translatesAutoresizingMaskIntoConstraints="NO" id="tqM-QH-LJ3">
|
||||
<rect key="frame" x="0.0" y="138" width="398" height="151.5"/>
|
||||
<rect key="frame" x="0.0" y="181.5" width="398" height="158"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" relation="greaterThanOrEqual" constant="130" id="w6M-Ao-KHo"/>
|
||||
</constraints>
|
||||
</mapView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" distribution="fillEqually" spacing="8" translatesAutoresizingMaskIntoConstraints="NO" id="Q2V-3p-DUh">
|
||||
<rect key="frame" x="8" y="297.5" width="382" height="40"/>
|
||||
<rect key="frame" x="8" y="347.5" width="382" height="40"/>
|
||||
<subviews>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="V2G-UH-Ibe" customClass="EQNRoundedButton" customModule="Earthquake_Network" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="0.0" width="187" height="40"/>
|
||||
@@ -1916,7 +1922,7 @@ Sisma rilevato da 10 smartphone</string>
|
||||
</constraints>
|
||||
</stackView>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Jwx-kf-che" customClass="EQNRoundedButton" customModule="Earthquake_Network" customModuleProvider="target">
|
||||
<rect key="frame" x="8" y="345.5" width="382" height="40"/>
|
||||
<rect key="frame" x="8" y="395.5" width="382" height="40"/>
|
||||
<color key="backgroundColor" white="1" alpha="0.5" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<state key="normal" title="VIEW ON TWITTER">
|
||||
<color key="titleColor" name="Gray (dark)"/>
|
||||
@@ -1926,13 +1932,13 @@ Sisma rilevato da 10 smartphone</string>
|
||||
</connections>
|
||||
</button>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="The magnitude will be estimated by the national seismic network and it will appear in the Seismic Networks tab of the app" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="GIh-sK-KX1">
|
||||
<rect key="frame" x="8" y="393.5" width="382" height="64.5"/>
|
||||
<rect key="frame" x="8" y="443.5" width="382" height="64.5"/>
|
||||
<fontDescription key="fontDescription" style="UICTFontTextStyleBody"/>
|
||||
<color key="textColor" name="Gray (dark)"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="3Ga-UF-Cr7" customClass="EQNRoundedButton" customModule="Earthquake_Network" customModuleProvider="target">
|
||||
<rect key="frame" x="8" y="466" width="382" height="40"/>
|
||||
<rect key="frame" x="8" y="516" width="382" height="40"/>
|
||||
<color key="backgroundColor" white="1" alpha="0.5" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<state key="normal" title="CLOSE">
|
||||
<color key="titleColor" name="Gray (dark)"/>
|
||||
@@ -1944,6 +1950,7 @@ Sisma rilevato da 10 smartphone</string>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstItem="EiJ-Xy-eGg" firstAttribute="leading" secondItem="DyB-fs-sPo" secondAttribute="leading" id="0D0-8a-es0"/>
|
||||
<constraint firstItem="3Ga-UF-Cr7" firstAttribute="trailing" secondItem="GIh-sK-KX1" secondAttribute="trailing" id="1qg-dS-vGZ"/>
|
||||
<constraint firstItem="DyB-fs-sPo" firstAttribute="top" secondItem="M7i-e5-N6v" secondAttribute="bottom" constant="12" id="7gG-Y2-tda"/>
|
||||
<constraint firstAttribute="trailing" secondItem="GIh-sK-KX1" secondAttribute="trailing" constant="8" id="8TC-4t-7fC"/>
|
||||
@@ -1952,7 +1959,9 @@ Sisma rilevato da 10 smartphone</string>
|
||||
<constraint firstItem="Jwx-kf-che" firstAttribute="trailing" secondItem="Q2V-3p-DUh" secondAttribute="trailing" id="Qie-q3-No5"/>
|
||||
<constraint firstItem="Q2V-3p-DUh" firstAttribute="top" secondItem="tqM-QH-LJ3" secondAttribute="bottom" constant="8" id="TM2-ig-acw"/>
|
||||
<constraint firstItem="Jwx-kf-che" firstAttribute="top" secondItem="Q2V-3p-DUh" secondAttribute="bottom" constant="8" id="Wjc-dF-bMj"/>
|
||||
<constraint firstItem="EiJ-Xy-eGg" firstAttribute="top" secondItem="DyB-fs-sPo" secondAttribute="bottom" constant="8" symbolic="YES" id="WmP-6W-zmO"/>
|
||||
<constraint firstAttribute="trailing" secondItem="M7i-e5-N6v" secondAttribute="trailing" constant="8" id="XHM-kN-PXl"/>
|
||||
<constraint firstItem="tqM-QH-LJ3" firstAttribute="top" secondItem="EiJ-Xy-eGg" secondAttribute="bottom" constant="10" id="YLd-fM-sXj"/>
|
||||
<constraint firstItem="3Ga-UF-Cr7" firstAttribute="leading" secondItem="GIh-sK-KX1" secondAttribute="leading" id="YhB-av-ejA"/>
|
||||
<constraint firstItem="DyB-fs-sPo" firstAttribute="leading" secondItem="M7i-e5-N6v" secondAttribute="leading" id="ZHJ-oa-DjC"/>
|
||||
<constraint firstItem="Jwx-kf-che" firstAttribute="height" secondItem="Q2V-3p-DUh" secondAttribute="height" id="Zp0-Q0-p0q"/>
|
||||
@@ -1961,12 +1970,13 @@ Sisma rilevato da 10 smartphone</string>
|
||||
<constraint firstItem="tqM-QH-LJ3" firstAttribute="leading" secondItem="TfA-6E-CQc" secondAttribute="leading" id="gUO-ka-XvB"/>
|
||||
<constraint firstAttribute="bottom" secondItem="3Ga-UF-Cr7" secondAttribute="bottom" constant="8" id="gWA-6h-HmJ"/>
|
||||
<constraint firstItem="DyB-fs-sPo" firstAttribute="trailing" secondItem="M7i-e5-N6v" secondAttribute="trailing" id="jD7-QV-p8s"/>
|
||||
<constraint firstItem="EiJ-Xy-eGg" firstAttribute="centerX" secondItem="DyB-fs-sPo" secondAttribute="centerX" id="myj-Jc-qIB"/>
|
||||
<constraint firstItem="GIh-sK-KX1" firstAttribute="top" secondItem="Jwx-kf-che" secondAttribute="bottom" constant="8" id="nJj-g4-TSs"/>
|
||||
<constraint firstItem="3Ga-UF-Cr7" firstAttribute="top" secondItem="GIh-sK-KX1" secondAttribute="bottom" constant="8" id="qaQ-zK-ael"/>
|
||||
<constraint firstItem="M7i-e5-N6v" firstAttribute="leading" secondItem="TfA-6E-CQc" secondAttribute="leading" constant="8" id="rsV-dp-eqa"/>
|
||||
<constraint firstItem="M7i-e5-N6v" firstAttribute="top" secondItem="TfA-6E-CQc" secondAttribute="top" constant="8" id="seX-2q-JVM"/>
|
||||
<constraint firstItem="Jwx-kf-che" firstAttribute="leading" secondItem="Q2V-3p-DUh" secondAttribute="leading" id="tND-n7-uEb"/>
|
||||
<constraint firstItem="tqM-QH-LJ3" firstAttribute="top" secondItem="DyB-fs-sPo" secondAttribute="bottom" constant="8" id="tSy-qs-K1k"/>
|
||||
<constraint firstItem="EiJ-Xy-eGg" firstAttribute="trailing" secondItem="DyB-fs-sPo" secondAttribute="trailing" id="tle-8N-Ni3"/>
|
||||
<constraint firstItem="GIh-sK-KX1" firstAttribute="leading" secondItem="TfA-6E-CQc" secondAttribute="leading" constant="8" id="tsI-iu-M9g"/>
|
||||
</constraints>
|
||||
</view>
|
||||
@@ -1984,10 +1994,11 @@ Sisma rilevato da 10 smartphone</string>
|
||||
<outlet property="mapView" destination="tqM-QH-LJ3" id="Gp4-gu-q8r"/>
|
||||
<outlet property="notificationDescriptionLabel" destination="DyB-fs-sPo" id="aLr-34-WND"/>
|
||||
<outlet property="notificationTitleLabel" destination="M7i-e5-N6v" id="RqD-wo-sXl"/>
|
||||
<outlet property="waveTimeLabel" destination="EiJ-Xy-eGg" id="1G6-Xz-Etc"/>
|
||||
</connections>
|
||||
</tableViewCell>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="none" indentationWidth="10" reuseIdentifier="SeismicNotificationCell" rowHeight="180" id="vSa-gk-t22" customClass="AlertsSeismicNotificationCompactTableViewCell" customModule="Earthquake_Network" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="718" width="414" height="180"/>
|
||||
<rect key="frame" x="0.0" y="768" width="414" height="180"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="vSa-gk-t22" id="qvZ-sA-Sqc">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="180"/>
|
||||
@@ -2087,7 +2098,7 @@ Sisma rilevato da 10 smartphone</string>
|
||||
</connections>
|
||||
</tableViewCell>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="none" indentationWidth="10" reuseIdentifier="PastEarthquakesCell" rowHeight="160" id="R3G-Bh-LLr" customClass="AlertsPastEartquakesTableViewCell" customModule="Earthquake_Network" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="898" width="414" height="160"/>
|
||||
<rect key="frame" x="0.0" y="948" width="414" height="160"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="R3G-Bh-LLr" id="UH4-vm-Tld">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="160"/>
|
||||
@@ -2187,7 +2198,7 @@ Sisma rilevato da 10 smartphone</string>
|
||||
</connections>
|
||||
</tableViewCell>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="none" indentationWidth="10" reuseIdentifier="SmartphoneNetworkCell" rowHeight="180" id="YUf-dd-IFz" customClass="AlertsSmartphoneNetworkTableViewCell" customModule="Earthquake_Network" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="1058" width="414" height="180"/>
|
||||
<rect key="frame" x="0.0" y="1108" width="414" height="180"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="YUf-dd-IFz" id="BkM-63-VOb">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="180"/>
|
||||
@@ -2269,7 +2280,7 @@ Sisma rilevato da 10 smartphone</string>
|
||||
</connections>
|
||||
</tableViewCell>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" reuseIdentifier="PriorityCell" rowHeight="160" id="gXs-mo-UQM" customClass="AlertsPriorityServiceTableViewCell" customModule="Earthquake_Network" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="1238" width="414" height="160"/>
|
||||
<rect key="frame" x="0.0" y="1288" width="414" height="160"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="gXs-mo-UQM" id="ViI-oT-s00">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="160"/>
|
||||
@@ -2350,7 +2361,7 @@ Sisma rilevato da 10 smartphone</string>
|
||||
</connections>
|
||||
</tableViewCell>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" reuseIdentifier="ProVersionCell" rowHeight="130" id="oTE-5k-bAN" customClass="EQNBaseTableViewCell" customModule="Earthquake_Network" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="1398" width="414" height="130"/>
|
||||
<rect key="frame" x="0.0" y="1448" width="414" height="130"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="oTE-5k-bAN" id="Axb-Lq-NhB">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="130"/>
|
||||
@@ -2411,7 +2422,7 @@ Sisma rilevato da 10 smartphone</string>
|
||||
</connections>
|
||||
</tableViewCell>
|
||||
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="none" indentationWidth="10" reuseIdentifier="PositionDataCell" rowHeight="180" id="j9i-Sk-o3g" customClass="AlertsPositionDataTableViewCell" customModule="Earthquake_Network" customModuleProvider="target">
|
||||
<rect key="frame" x="0.0" y="1528" width="414" height="180"/>
|
||||
<rect key="frame" x="0.0" y="1578" width="414" height="180"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="j9i-Sk-o3g" id="sTW-Bj-7Bz">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="180"/>
|
||||
|
||||
Reference in New Issue
Block a user