আইওএস 10 - ক্যামেরা এবং লাইব্রেরির জন্য অনুমতিটির জন্য অনুরোধ করুন - তথ্য.পল্লিস্ট


89

আমি একটি অ্যাপ্লিকেশনটিতে একটি WKWebView বাস্তবায়িত করেছি। দেখানো ওয়েব পৃষ্ঠায় একটি ফাইল ইনপুট রয়েছে যেখানে এটি ফটোগুলি থেকে কোনও চিত্র আমদানি করে। আমি যখনই এই ইনপুটটিতে টিপব এবং "ফটো তোলা" বা "ফটো লাইব্রেরি" নির্বাচন করুন হঠাৎ অ্যাপটি ক্র্যাশ হয়ে যায় যা আমার বিশ্বাস, কারণ অ্যাপটি কোনও ফটো তোলা বা পাঠাগার থেকে আমদানির অনুমতি অনুপস্থিত missing

যখন ব্যবহারকারী উল্লিখিত পদ্ধতিগুলির মধ্যে একটি (ফটো বা ফটো লাইব্রেরি তোলা) নির্বাচন করেন তখন আমি কীভাবে অনুমতিের অনুরোধটি চাপব?

আমি WKWebView সাথে সুইফট 3.0 ব্যবহার করি।


4
@ কিরিটমোডি হাই, অনেক ধন্যবাদ আপনি কি দয়া করে উত্তর হিসাবে পোস্ট করতে পারেন যাতে আমি এটি গ্রহণ করতে পারি।
আলমারি

4
ওকি .. আমি করব ...
কিরীট মোদী

এফওয়াইআই: এই আইওএস 10 + প্রয়োজনীয়তার জন্য ইউআইআইমেজপিকার কনট্রোলার ডক্সটি কখনই আপডেট করা হয়নি (আমি লেগ্যাসি অবজেক্টিভ-সি
ডকসিসহ

উত্তর:


106

আপনাকে তথ্য.পল্লিস্টে নীচের অনুমতিটি যুক্ত করতে হবে। আরও রেফারেন্স

ক্যামেরা:

Key       :  Privacy - Camera Usage Description   
Value     :  $(PRODUCT_NAME) camera use

ছবি:

Key       :  Privacy - Photo Library Usage Description    
Value     :  $(PRODUCT_NAME) photo use

আমি এখনও আইওএস-এ বিশেষত এর মাতৃভাষাগুলি, অবজেক্টিভ-সি এবং সুইফটে নতুন new এটি আমার দিনটি বাঁচিয়েছে .. ধন্যবাদ অনেক
আলমারি

হাই, আমি আইফোন 7 ব্যবহারকারীদের ফটো লাইব্রেরির অনুমতি সেট করা থেকে আসলেই সমস্যায় পড়ছি। আইফোন users ব্যবহারকারীরা যখন তাদের ফোনে আমার অ্যাপ্লিকেশন সেটিংসে যান, ফটো লাইব্রেরি বিকল্পটি অনুপস্থিত। আমার চাবি: উপরে আমার ইনফরমেশন.পুলিস্টে উল্লিখিত মান। অদ্ভুত অংশটি আইওএস 10 ব্যবহারকারী সমস্ত ডিভাইসগুলি আইফোন 7 ব্যবহারকারীদের বাদে এই বিকল্পটি দেখতে সক্ষম। আইফোন 6 চলমান আইওএস 10 উদাহরণস্বরূপ এই বিকল্পটি দেখতে পারে। আমি কি অন্য কিছু মিস করছি?
দেবকাইল

4
আপনার এই মানগুলিতে PRODUCT_NAME অন্তর্ভুক্ত করা উচিত নয়, কারণ এটি ইতিমধ্যে অ্যাপল বার্তায় অন্তর্ভুক্ত রয়েছে। উদাহরণস্বরূপ "অ্যাপের নাম" আপনার ফটোগুলি অ্যাক্সেস করতে চান
হ্যারিস

124

আপনি প্রোগ্রামগতভাবে অ্যাক্সেসের জন্যও অনুরোধ করতে পারেন, যা আমি পছন্দ করি কারণ বেশিরভাগ ক্ষেত্রে আপনি অ্যাক্সেস নিয়েছেন কিনা তা আপনার জানা দরকার।

সুইফট 4 আপডেট:

    //Camera
    AVCaptureDevice.requestAccess(for: AVMediaType.video) { response in
        if response {
            //access granted
        } else {

        }
    }

    //Photos
    let photos = PHPhotoLibrary.authorizationStatus()
    if photos == .notDetermined {
        PHPhotoLibrary.requestAuthorization({status in
            if status == .authorized{
                ...
            } else {}
        })
    }

আপনি কোডটি ভাগ করেন না তাই এটি আপনার পক্ষে কার্যকর হবে কিনা তা আমি নিশ্চিত হতে পারি না, তবে সাধারণ বক্তারা এটিকে সেরা অনুশীলন হিসাবে ব্যবহার করেন।


4
ধন্যবাদ, এই উত্তরটি আমার পক্ষে কাজ করেছে! যে লোকেরা সুইফট 4 ব্যবহার করছেন তাদের মুষ্টির রেখাটি এই রূপে পরিবর্তন করা উচিত: "এভিক্যাপচারডেভাইস.রেকোস্টএ্যাক্সেস (এর জন্য: অ্যাভিমিডিয়াটাইপ.ভিডিও)" প্রতিক্রিয়া "।
কেভিন

4
এই উত্তরের জন্য ধন্যবাদ। এটি পুরোপুরি কাজ করে। আমি যদিও এটি সম্পর্কে একটি জিনিস ভাবছিলাম। আপনি যখন অনুরোধটি চালনা করেন অনুমোদনটি এটি কোনও ধরণের শ্রোতা তৈরি করে যা কোডটি চালানোর আগে অনুমতি সেট না হওয়া পর্যন্ত অপেক্ষা করে? প্রথমে আমি যদিও এই কোড এক্সিকিউশনটি পিএইচপি ফটো লাইবারি.অর্টিফিকেশন স্ট্যাটাসে কেবল থেমে গেছে তবে চারপাশে মুদ্রণ বিবৃতি ছেড়ে দেওয়ার পরে মনে হচ্ছে এটি চলতে থাকে ??
জর্জ কেন্ড্রোস

4
সুইফট 3 : AVCaptureDevice.requestAccess(forMediaType: AVMediaTypeVideo) { response in। করতে ভুলবেন না import AVFoundation
আইউরি

4
উত্তর করার জন্য ধন্যবাদ. এটি না করে আমার অ্যাপ্লিকেশনটি প্রত্যাখ্যান করা হয়েছিল, কারণ অ্যাপ্লিকেশন অনুমতি ছাড়াই ফটো লাইব্রেরিতে অ্যাক্সেস করতে পারে।
মাকালেলে

44

তথ্য.পুলিস্ট

সীমাবদ্ধ ফটো

<key>PHPhotoLibraryPreventAutomaticLimitedAccessAlert</key>
<true/>

ক্যামেরা

<key>NSCameraUsageDescription</key>
<string>$(PRODUCT_NAME) camera description.</string>

ফটো

<key>NSPhotoLibraryUsageDescription</key>
<string>$(PRODUCT_NAME)photos description.</string>

ফটো সংরক্ষণ করুন

<key>NSPhotoLibraryAddUsageDescription</key>
<string>$(PRODUCT_NAME) photos add description.</string>

অবস্থান

<key> NSLocationWhenInUseUsageDescription</key>
<string>$(PRODUCT_NAME) location description.</string>

অ্যাপল সংগীত

<key>NSAppleMusicUsageDescription</key>
<string>$(PRODUCT_NAME) My description about why I need this capability</string>

পঞ্জিকা

<key>NSCalendarsUsageDescription</key>
<string>$(PRODUCT_NAME) My description about why I need this capability</string>

সিরি

<key>NSSiriUsageDescription</key>
<string>$(PRODUCT_NAME) My description about why I need this capability</string>

28

উপরে উল্লিখিত প্লাস্ট সেটিংস এবং উপযুক্ত অ্যাক্সেসর (AVCaptureDevice বা PHPhotoLibrary) ব্যবহার করুন, তবে তাদের সতর্ক করুন এবং আপনার যদি সত্যিই এটির প্রয়োজন হয় তবে সেটিংসে প্রেরণ করুন:

সুইফট 4.0 এবং 4.1

func proceedWithCameraAccess(identifier: String){
    // handler in .requestAccess is needed to process user's answer to our request
    AVCaptureDevice.requestAccess(for: .video) { success in
      if success { // if request is granted (success is true)
        DispatchQueue.main.async {
          self.performSegue(withIdentifier: identifier, sender: nil)
        }
      } else { // if request is denied (success is false)
        // Create Alert
        let alert = UIAlertController(title: "Camera", message: "Camera access is absolutely necessary to use this app", preferredStyle: .alert)

        // Add "OK" Button to alert, pressing it will bring you to the settings app
        alert.addAction(UIAlertAction(title: "OK", style: .default, handler: { action in
          UIApplication.shared.open(URL(string: UIApplicationOpenSettingsURLString)!)
        }))
        // Show the alert with animation
        self.present(alert, animated: true)
      }
    }
  }

21

ফাইল: তথ্য.প্লেস্ট

জন্য ক্যামেরা :

<key>NSCameraUsageDescription</key>
<string>You can take photos to document your job.</string>

জন্য ফটো লাইব্রেরীতে , আপনি এটির অ্যাপটি ব্যবহারকারীর ফটো লাইব্রেরিতে ব্রাউজ করতে অনুমতি দিতে চান হবে।

<key>NSPhotoLibraryUsageDescription</key>
<string>You can select photos to attach to reports.</string>

15

সুইফট 5 হ'ল অনুমতিটি যুক্ত করার সবচেয়ে সহজ উপায়টি এটি অগ্রগতিজনিতভাবে না করেই হ'ল আপনার তথ্য.প্লেস্ট ফাইলটি খুলুন এবং তথ্য সম্পত্তি তালিকার পাশের + নির্বাচন করুন। গোপনীয়তা বিকল্পগুলিতে ড্রপ ডাউন তালিকার মাধ্যমে স্ক্রোল করুন এবং ক্যামেরা অ্যাক্সেসের জন্য গোপনীয়তা ক্যামেরা ব্যবহারের বিবরণ বা ফটো লাইব্রেরিতে অ্যাক্সেসের জন্য গোপনীয়তা ফটো লাইব্রেরি ব্যবহারের বর্ণনা নির্বাচন করুন। আপনার বাছাই করার পরে ডানদিকে স্ট্রিং মানটি পূরণ করুন, সতর্কতা পপ আপের জন্য অনুমতি চাইলে আপনি আপনার ব্যবহারকারীর কাছে প্রদর্শিত পাঠ্যটি অন্তর্ভুক্ত করতে পারেন।ক্যামেরা / ফটো গ্রন্থাগারের অনুমতি


11

ফটো অ্যাপ্লিকেশনটির জন্য অনুমতি চাইতে আপনাকে এই কোডটি যুক্ত করতে হবে (সুইফট 3) :

PHPhotoLibrary.requestAuthorization({ 
       (newStatus) in 
         if newStatus ==  PHAuthorizationStatus.authorized { 
          /* do stuff here */ 
    } 
})

<key>NSPhotoLibraryUsageDescription</key> <string>You can select photos to attach to reports.</string>info.plist
marcomoreira92

বোকা, আমার কোন সমস্যা নেই আমি এই কোডটি একটি বোতামে যুক্ত করেছি এবং আমি আমার
আইফোনটি

5

আমি একটি এক্সটেনশন লিখেছিলাম যা সমস্ত সম্ভাব্য কেস আমলে নেয়:

  • যদি অ্যাক্সেসের অনুমতি দেওয়া হয়, তবে কোডটি onAccessHasBeenGrantedচালানো হবে।
  • অ্যাক্সেস যদি নির্ধারিত না হয় তবে requestAuthorization(_:)ডাকা হবে।
  • যদি ব্যবহারকারী আপনার অ্যাপ্লিকেশন ফটো লাইব্রেরি অ্যাক্সেস অস্বীকার করে, তবে ব্যবহারকারীকে সেটিংসে যেতে এবং অ্যাক্সেসের অনুমতি দেওয়ার জন্য একটি উইন্ডো দেখানো হবে। এই উইন্ডোতে, "বাতিল" এবং "সেটিংস" বোতামগুলি তার কাছে উপলব্ধ থাকবে। যখন সে "সেটিংস" বোতাম টিপবে তখন আপনার অ্যাপ্লিকেশন সেটিংসটি খুলবে।

ব্যবহারের উদাহরণ:

PHPhotoLibrary.execute(controller: self, onAccessHasBeenGranted: {
    // access granted... 
})

এক্সটেনশন কোড:

import Photos
import UIKit

public extension PHPhotoLibrary {

   static func execute(controller: UIViewController,
                       onAccessHasBeenGranted: @escaping () -> Void,
                       onAccessHasBeenDenied: (() -> Void)? = nil) {

      let onDeniedOrRestricted = onAccessHasBeenDenied ?? {
         let alert = UIAlertController(
            title: "We were unable to load your album groups. Sorry!",
            message: "You can enable access in Privacy Settings",
            preferredStyle: .alert)
         alert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil))
         alert.addAction(UIAlertAction(title: "Settings", style: .default, handler: { _ in
            if let settingsURL = URL(string: UIApplication.openSettingsURLString) {
               UIApplication.shared.open(settingsURL)
            }
         }))
         controller.present(alert, animated: true)
      }

      let status = PHPhotoLibrary.authorizationStatus()
      switch status {
      case .notDetermined:
         onNotDetermined(onDeniedOrRestricted, onAccessHasBeenGranted)
      case .denied, .restricted:
         onDeniedOrRestricted()
      case .authorized:
         onAccessHasBeenGranted()
      @unknown default:
         fatalError("PHPhotoLibrary::execute - \"Unknown case\"")
      }
   }

}

private func onNotDetermined(_ onDeniedOrRestricted: @escaping (()->Void), _ onAuthorized: @escaping (()->Void)) {
   PHPhotoLibrary.requestAuthorization({ status in
      switch status {
      case .notDetermined:
         onNotDetermined(onDeniedOrRestricted, onAuthorized)
      case .denied, .restricted:
         onDeniedOrRestricted()
      case .authorized:
         onAuthorized()
      @unknown default:
         fatalError("PHPhotoLibrary::execute - \"Unknown case\"")
      }
   })
}

0

সুইফট 5 , আইওএস 13 এ ক্যামেরা সেশনটি কার্যকর করার দুর্দান্ত উপায়

https://github.com/egzonpllana/ ক্যামেরাসেশন

ক্যামেরা সেশন হ'ল একটি আইওএস অ্যাপ্লিকেশন যা অ্যাভিক্যাপচারসেশন বাস্তবায়নের সহজতম উপায়টি করার চেষ্টা করে।

অ্যাপের মাধ্যমে আপনি এই ক্যামেরা সেশনটি বাস্তবায়িত দেখতে পাবেন:

  • নেটিভ ক্যামেরা একটি ছবি নিতে বা একটি ভিডিও রেকর্ড করতে।
  • ফটো এবং ভিডিও আমদানির নেটিভ উপায়।
  • লাইব্রেরি থেকে এক বা একাধিক সম্পদ নির্বাচন করার বিকল্প সহ ফটো এবং ভিডিওগুলির মতো সম্পদ নির্বাচন করার কাস্টম পদ্ধতি way
  • বোতাম এবং রেকর্ড করার জন্য বিকল্প সহ একটি ফটো (গুলি) বা ভিডিও নিতে কাস্টম ক্যামেরা।
  • পৃথক ক্যামেরা অনুমতি অনুরোধ।

মশাল এবং ঘোরানো ক্যামেরা বিকল্পগুলির মতো কাস্টম ক্যামেরা বৈশিষ্ট্যগুলি ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.