ios – Is there a known fix for apps that suddenly stop delivering notifications for any obvious reason?

For several years now, I’ve noticed a really strange thing with notifications delivered from third-party apps on iOS – whereby they will just stop without any obvious reason. When checking within Settings/Notifications, nothing whatsoever has changed – all settings are as they should be. The immediately obvious steps (a device reboot and opening the app in question) don’t resolve this – the only way of getting notifications back for the app in question is to remove it completely, and then reinstall it from the App Store. Whilst this isn’t a big issue for apps that I’m only interested in notifications for (news apps are a good example), apps that require configuration are less ideal. Has anybody else noticed anything similar – and is there a known fix?

ios – Is there anyway to check if a camera device is available for the application to use on Android?

This question applies to Android phones, but I may have the same question for ios and UWP in the future. So a solution to my problem regarding the other platforms would be appreciated, but not required.

I am using the camera2 package to try to develop a camera application for Android phones and using Kotlin for it. One of the things I’m trying to do is to have the app find a camera device that is available for use at the current moment so it can initialize it and start doing camera stuff.

I see that the function getCameraIdList will return an array of camera devices currently connected to the device. However, the array will include those that are currently in use by other applications or API clients. Those camera devices in use can’t be used by a different application until it’s released by the original client. I was thinking that maybe I can use a loop to iterate over the string array returned by that function (starting with the camera device on the back of the phone) until the application finds one that is available. I can’t find a way however.

I see that there is a class called AvailabilityCallback that could notify if a certain camera device is available. Although it seems that this callback would be used if the camera device was unavailable before. Also I wouldn’t know if this is the right approach.

With StateCallback, which is a parameter for openCamera, contains a method for what the computer should do if an error occurs; and it would be ERROR_CAMERA_IN_USE in this case. The code below would be something like this:

callback: StateCallback() {
     onClosed(camera: CameraDevice){
         //do stuff
     }
     onDisconnected(camera: CameraDevice){
         //do stuff
     }
     onError(camera: CameraDevice){
         //Try a different camera device when ERROR_CAMERA_IN_USE occurs
     }
     onOpened(camera: CameraDevice){
         //do stuff
     }
}

fun openCamera(cameraId: String, callback, handler: Handler?){
     
}

I don’t know if this is the right approach either.

I also thought about having the application use openCamera more than once if the first camera wasn’t available but I imagine it would be expensive for it to do.

Knowing how to find and use an available camera device using camera2 is what I’m trying to do. Thank you everyone for your help.

ios – Google Chrome: Can my organization access my computer if I am signed in?

I am signed into Google Chrome on my personally-owned Mac with a G Suite/Google Workspace account managed by my organization. I was recently looking around in Google Chrome and found this message under chrome://management:

enter image description here

I am wondering what “Activity on this device may also be managed outside of Chrome” means. I don’t want my organization to be able to access anything on my device that I do outside of my work Chrome profile. So:

  1. Can my organization access files on my device?
  2. Can my organization change settings on my device?
  3. Can my organization lock, erase, or geolocate my device?

I am also signed into the Gmail, Docs, Sheets, Slides, Drive, etc. apps on my iPhone. Does this allow my organization to do any of the above?

Ionic 4, el input FILE no funciona en IOS para cargar imágenes y pdf

Tengo una aplicación con ionic 4, en la que en un módulo necesito poder subir imágenes o archivos pdf para poder generar un base64.

Estoy usando un input file y esto funciona bien en Android, la imagen o el pdf se carga y se genera el base64 que envío en mi solicitud, pero en IOS no funciona, no carga la imagen.

Entonces tengo la entrada en mi componente.

  <input 
    *ngIf="config.file"
    type="file" 
    (change)="getErrors($event)" 
    class="file"
  >

y la función getErrors que es donde obtengo el file tiene esto

getErrors(val)
  {
    if(this.config.file)
    {
      this.config.filePath   = val.path(0).files(0);
      this.config.fileType   = val.path(0).files(0).type;
      this.config.fileExt    = val.path(0).files(0).name.substring(val.path(0).files(0).name.lastIndexOf('.')+1);
      this.config.value      = val.path(0).files(0).name;

      toBase64(val.path(0).files(0))
      .then((resolve) => {
        this.config.fileBase64 = resolve.split("base64,")(1);
      })

    }

    if(this.config('callback'))
    {
      this.Handler.emit();
    }

    controllerErrors(this.config.validations, val);
    serverError(this.config.validations);
  }

Como digo esto funciona perfecto en Android, pero no en IOS y no sé por qué, tengo muy poca experiencia en IOS y no sé si esta tarea está siendo bloqueada por algo específico.

Why does Airwatch SDK iOS Swift display app passcode screen when app sent to background?

Our iOS app using Airwatch SDK 20.9 (Swift) and is working well for authentication.

However, WHILE the app is being deactivated/sent to the background – the Airwatch app passcode screen is being displayed.

When sliding up from the bottom of the iPhone to display all open apps and choose another app, the app UI is immediately changed to the Airwatch app passcode screen.

Why does the Airwatch SDK iOS Swift app passcode screen display immediately when app is sent to background?

Other apps using the SDK (not mine) are not showing the same behavior.

Our SDK implementation has the minimum required event code.

// Initialize the SDK and callback scheme on app start up
  func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: (UIApplication.LaunchOptionsKey : Any)? = nil) -> Bool {
    let controller = AWController.clientInstance()
    controller.callbackScheme = "MyAppScheme"
    controller.delegate = self
    controller.start()
    return true
  }


  // Handle the SSO auth flow via URL schemes
  func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
     return AWController.clientInstance().handleOpenURL(url, fromApplication: sourceApplication)
  }

iPad won’t let me update apps after update to iOS 14

Since updating iPads to iOS 14 I am not able to update apps. After hitting update I am asked for password which I do fill correctly. After about ten seconds the password dialogue appears again, and again, and again.

I do remember on both iPads Apple tried to force me into two factor authentication which I absolutely do not want. I have clicked on Later as there was no other option for opting out.

What can I do to be able to update the apps? Of course apart of setting up two factor authentication?

iphone – Is it possible to see the running timer on the lock screen in iOS 14?

In iOS 13, a running timer was shown on the lock screen, so picking up your iPhone was enough to quickly see the remaining time without needing to unlock it:

enter image description here

In iOS 14.0.1 this feature is gone, so in order to see the remaining time on a timer you need to unlock your iPhone, find the Clock app, and switch to the Timers tab.

Is it possible to see the remaining time on the lock screen in iOS 14?

ios – How to make the user move on to DetailView of next item when they swipe up from one DetailView?

I want to make it so that when a user swipes up, that is picked up and the user moves on to the next DetailView.

DetailViewController.swift is currently



class DetailViewController: UIViewController {
    @IBOutlet var imageView: UIImageView!
    var selectedImage: String?
    
    
  
    //What will print or happen when each gesture happens
    @objc public func handleGesture(gesture: UISwipeGestureRecognizer) -> Void {
        if gesture.direction == UISwipeGestureRecognizer.Direction.right {
            print("Swipe Right")
        }
        else if gesture.direction == UISwipeGestureRecognizer.Direction.left {
            print("Swipe Left")
        }
        else if gesture.direction == UISwipeGestureRecognizer.Direction.up {
//            print("Swipe Up")
      // FOR WHEN USER SWIPES US WHICH I WANT
            
        }
        else if gesture.direction == UISwipeGestureRecognizer.Direction.down {
            print("Swipe Down")
        }
    }

    
    
    override func viewDidLoad() {
        
        super.viewDidLoad()
        
        
      
     
        
        
        //GESTURES
        
        let swipeLeft = UISwipeGestureRecognizer(target: self, action: #selector(handleGesture))
           swipeLeft.direction = .left
           self.view!.addGestureRecognizer(swipeLeft)

           let swipeRight = UISwipeGestureRecognizer(target: self, action: #selector(handleGesture))
           swipeRight.direction = .right
           self.view!.addGestureRecognizer(swipeRight)

           let swipeUp = UISwipeGestureRecognizer(target: self, action: #selector(handleGesture))
           swipeUp.direction = .up
           self.view!.addGestureRecognizer(swipeUp)

           let swipeDown = UISwipeGestureRecognizer(target: self, action: #selector(handleGesture))
           swipeDown.direction = .down
           self.view!.addGestureRecognizer(swipeDown)
        
        
        
        let backgroundImage = UIImageView(frame: UIScreen.main.bounds)
            backgroundImage.image = UIImage(named: "janbg.jpg")
//        backgroundImage.contentMode = UIView.ContentMode.scaleAspectfill
        backgroundImage.contentMode = UIImageView.ContentMode.scaleAspectFill
            self.view.insertSubview(backgroundImage, at: 0)
        
//   title = selectedImage //no need to unwrap since both are optional string. title optional as nil by default. ViewControllers have no title, thus no text in navigation bar
        title = (selectedImage! as NSString).deletingPathExtension
        navigationItem.largeTitleDisplayMode = .never
        // Do any additional setup after loading the view.
        if let imageToLoad = selectedImage {
            imageView.image = UIImage(named: "(Bundle.main.resourcePath!)/Images" + "/" + imageToLoad)
        }
    }
    
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        navigationController?.hidesBarsOnTap = true
        let nav = self.navigationController?.navigationBar
        nav?.titleTextAttributes = (NSAttributedString.Key.foregroundColor: UIColor.white)
        self.navigationController?.isNavigationBarHidden = false
    }
   
    
    
    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        navigationController?.hidesBarsOnTap = false
    }
   

}

My ViewController.swift file is

import Lottie

public class ViewController: UITableViewController {
    var pictures = (String)()
    
    
    public override func viewDidLoad() {
        super.viewDidLoad()
        
        
        // Do any additional setup after loading the view.
        

//        self.navigationItem.title = "Your Title"
//        navigationController?.navigationBar.prefersLargeTitles = true
//        navigationController?.navigationBar.largeTitleTextAttributes = (NSAttributedString.Key.foregroundColor: UIColor.blue)
        
        self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
        self.navigationController?.navigationBar.shadowImage = UIImage()
        self.navigationController?.navigationBar.isTranslucent = true
        self.navigationController?.view.backgroundColor = UIColor.clear
        self.navigationController?.navigationBar.barTintColor = UIColor.clear
        
        
        let label = UILabel()
        label.text = "Sample"
        label.textAlignment = .center
        navigationItem.titleView = label
        label.backgroundColor = UIColor.clear
        

       
        label.textColor = UIColor.red
        label.font = UIFont(name: "ZillaSlab-Bold", size: 30.0)
        label.translatesAutoresizingMaskIntoConstraints = false
        label.superview?.addConstraint(NSLayoutConstraint(item: label, attribute: .centerX, relatedBy: .equal, toItem: label.superview, attribute: .centerX, multiplier: 1, constant: 0))
        label.superview?.addConstraint(NSLayoutConstraint(item: label, attribute: .width, relatedBy: .equal, toItem: label.superview, attribute: .width, multiplier: 1, constant: 0))
        label.superview?.addConstraint(NSLayoutConstraint(item: label, attribute: .centerY, relatedBy: .equal, toItem: label.superview, attribute: .centerY, multiplier: 1, constant: 0))
        label.superview?.addConstraint(NSLayoutConstraint(item: label, attribute: .height, relatedBy: .equal, toItem: label.superview, attribute: .height, multiplier: 1, constant: 0))

        tableView.backgroundView = UIImageView(image: UIImage(named: "lun2.jpeg"))

        let fm = FileManager.default
//        let path = Bundle.main.resourcePath!
        let path = "(Bundle.main.resourcePath!)/Images"
        let items = try! fm.contentsOfDirectory(atPath: path)

        for item in items {
            
                // this is a a picture to load
                pictures.append(item)
              
            }
        
      
        print(pictures)
    }

    // the code below changing a behaviour from parent class - number of rows in section
    public override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return pictures.count
    }
    
//    override func viewWillAppear(_ animated: Bool) {
//        self.navigationController?.isNavigationBarHidden = true
//
    // }

    public override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "Picture", for: indexPath)
//      cell.textLabel?.text = pictures(indexPath.row)
        cell.textLabel?.text = (pictures(indexPath.row) as NSString).deletingPathExtension
        cell.textLabel?.font = UIFont.systemFont(ofSize: 20, weight: UIFont.Weight.heavy)
        cell.textLabel?.font = UIFont(name: "ZillaSlab-Bold", size: 23)
        cell.textLabel?.textAlignment = .center // center aligns text

        cell.textLabel?.textColor = UIColor.black
        let backgroundView = UIView()
        backgroundView.backgroundColor = UIColor.white
        cell.selectedBackgroundView = backgroundView
        return cell
    }
    


    public override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
        self.navigationController?.navigationBar.shadowImage = UIImage()
        self.navigationController?.navigationBar.isTranslucent = true
        self.navigationController?.navigationBar.barTintColor = UIColor.clear
        self.navigationController?.navigationBar.backgroundColor = UIColor.clear
    }

    public override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)

        self.navigationController?.navigationBar.setBackgroundImage(nil, for: .default)
        self.navigationController?.navigationBar.shadowImage = nil
        self.navigationController?.navigationBar.isTranslucent = true
    }
    public override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        if let vc = storyboard?.instantiateViewController(withIdentifier: "Detail") as? DetailViewController {
            vc.selectedImage = pictures(indexPath.row) // selectedImage can be nil or be a string
//           var nextImageIndex = indexPath.row + 1
//            print(type(of: nextImageIndex))
            navigationController?.pushViewController(vc, animated: true)
        }
    }
}

What should I include inside else if gesture.direction == UISwipeGestureRecognizer.Direction.up and how do I make it execute to move to the next DetailViewer which is pictures(indexPath.row + 1) , pictures is the array in the ViewController.swift file ?