ইন ব্যাকগ্রাউন্ডে রান করার জন্য আপনার ইউআই প্রস্তুতি অ্যাপল বলেছেন:
অ্যাপ স্ন্যাপশটের জন্য আপনার ইউআই প্রস্তুত করুন
আপনার অ্যাপ্লিকেশনটি ব্যাকগ্রাউন্ডে প্রবেশ করার পরে এবং আপনার প্রতিনিধি পদ্ধতিটি ফিরে আসার পরে এক পর্যায়ে, ইউআইকিট আপনার অ্যাপ্লিকেশনটির বর্তমান ব্যবহারকারী ইন্টারফেসের একটি স্ন্যাপশট নেয় takes সিস্টেমটি অ্যাপটি স্যুইচারে ফলাফল চিত্র প্রদর্শন করে। আপনার অ্যাপ্লিকেশনটিকে সম্মুখের দিকে ফিরিয়ে আনার সময় এটি চিত্রটি অস্থায়ীভাবে প্রদর্শন করে।
আপনার অ্যাপ্লিকেশনটির ইউআইতে অবশ্যই কোনও সংবেদনশীল ব্যবহারকারীর তথ্য থাকতে হবে না যেমন পাসওয়ার্ড বা ক্রেডিট কার্ড নম্বর। আপনার ইন্টারফেসে যদি এই জাতীয় তথ্য থাকে তবে পটভূমিতে প্রবেশের সময় এটি আপনার দৃষ্টিভঙ্গি থেকে সরিয়ে দিন। এছাড়াও, সতর্কতা, অস্থায়ী ইন্টারফেস এবং সিস্টেম ভিউ কন্ট্রোলারগুলিকে বরখাস্ত করুন যা আপনার অ্যাপ্লিকেশনটির বিষয়বস্তুকে অস্পষ্ট করে। স্ন্যাপশটটি আপনার অ্যাপ্লিকেশনটির ইন্টারফেসকে উপস্থাপন করে এবং এটি ব্যবহারকারীদের কাছে সনাক্তযোগ্য। আপনার অ্যাপ্লিকেশন যখন অগ্রভাগে ফিরে আসে, আপনি যথাযথভাবে ডেটা এবং দর্শন পুনরুদ্ধার করতে পারেন।
প্রযুক্তিগত প্রশ্নোত্তর দেখুন QA1838: টাস্ক স্যুইচারে উপস্থিত হওয়া থেকে সংবেদনশীল তথ্য রোধ করা
সংবেদনশীল তথ্যকে অস্পষ্ট করা / প্রতিস্থাপনের পাশাপাশি, আপনি আইওএস 7 কে স্ক্রিনের স্ন্যাপশট না নেওয়ার জন্যও বলতে চাইতে পারেন ignoreSnapshotOnNextApplicationLaunch
, যার ডকুমেন্টেশন বলে:
আপনি যদি মনে করেন যে আপনার অ্যাপ্লিকেশনটি পুনরায় চালু হওয়ার পরে স্ন্যাপশটটি আপনার অ্যাপ্লিকেশনটির ইউজার ইন্টারফেসটি সঠিকভাবে প্রতিফলিত করতে পারে না, আপনি ignoreSnapshotOnNextApplicationLaunch
সেই স্ন্যাপশট চিত্রটি নেওয়া থেকে রোধ করতে কল করতে পারেন ।
এটি বলার পরে, এটি প্রদর্শিত হবে যে স্ক্রিনের স্ন্যাপশটটি এখনও নেওয়া হয়েছে এবং আমি একটি বাগ রিপোর্ট দায়ের করেছি। তবে আপনাকে আরও পরীক্ষা করে দেখতে হবে যে এই সেটিংটি ব্যবহার করা সাহায্য করে কিনা।
যদি এটি কোনও এন্টারপ্রাইজ অ্যাপ্লিকেশন হয় তবে আপনি কনফিগারেশন প্রোফাইল রেফারেন্সের সীমাবদ্ধতা পেডলোড বিভাগে allowScreenShot
বর্ণিত যথাযথ সেটিংসটিও দেখতে চাইতে পারেন ।
এখানে একটি বাস্তবায়ন যা আমার যা প্রয়োজন তা অর্জন করে। আপনি আপনার নিজের উপস্থাপন UIImageView
করতে পারেন, বা গোপনীয় তথ্যকে অস্পষ্ট করতে আপনি একটি প্রতিনিধি-প্রোটোকল প্যাটার্ন ব্যবহার করতে পারেন:
#import <Foundation/Foundation.h>
@protocol SecureDelegate <NSObject>
- (void)hide:(id)object;
- (void)show:(id)object;
@end
তারপরে আমি আমার অ্যাপের প্রতিনিধিটিকে তার জন্য একটি সম্পত্তি দিয়েছি:
@property (weak, nonatomic) id<SecureDelegate> secureDelegate;
আমার দর্শন নিয়ামক এটি সেট করে:
- (void)viewDidLoad
{
[super viewDidLoad];
AppDelegate *delegate = [[UIApplication sharedApplication] delegate];
delegate.secureDelegate = self;
}
দৃশ্য নিয়ন্ত্রণকারী স্পষ্টতই সেই প্রোটোকলটি প্রয়োগ করে:
- (void)hide:(id)object
{
self.passwordLabel.alpha = 0.0;
}
- (void)show:(id)object
{
self.passwordLabel.alpha = 1.0;
}
এবং, অবশেষে, আমার অ্যাপের প্রতিনিধি এই প্রোটোকল এবং সম্পত্তি থেকে নিজেকে ব্যবহার করে:
- (void)applicationWillResignActive:(UIApplication *)application
{
[application ignoreSnapshotOnNextApplicationLaunch];
[self.secureDelegate hide:@"applicationWillResignActive:"];
}
- (void)applicationDidBecomeActive:(UIApplication *)application
{
[self.secureDelegate show:@"applicationDidBecomeActive:"];
}
দ্রষ্টব্য, আমি applicationWillResignActive
পরামর্শের পরিবর্তে ব্যবহার করছি applicationDidEnterBackground
, কারণ অন্যরা যেমন নির্দেশ করেছে, অ্যাপটি চলাকালীন হোম বোতামে ডাবল ট্যাপিংয়ের পরে দ্বিতীয়টি বলা হয় না।
আমি আশা করি ডেলিগেট-প্রোটোকল প্যাটার্নের পরিবর্তে আমি এই সমস্তগুলি পরিচালনা করতে বিজ্ঞপ্তিগুলি ব্যবহার করতে পারি, তবে আমার সীমিত পরীক্ষায় বিজ্ঞপ্তিগুলি সময়োচিত পর্যাপ্ত পদ্ধতিতে পরিচালনা করা হয় না, তবে উপরের প্যাটার্নটি ঠিকঠাক কাজ করে।