আইওএস 7 মাল্টিটাস্কিং সুইচারে স্ক্রিনশটটি নিয়ন্ত্রণ করছে


98

আমি আইওএস in-তে নতুন মাল্টিটাস্কিং সুইচার এবং বিশেষত অ্যাপটি হাইবারনেশনে যাওয়ার পরে ওএসের স্ক্রিনশট সম্পর্কিত কিছু তথ্য সন্ধান করার চেষ্টা করছি।

এখানে চিত্র বর্ণনা লিখুন

এই বৈশিষ্ট্য বা স্ক্রিনশটটি পুরোপুরি বন্ধ করার কোনও উপায় আছে কি? বা আমি সুইচ থেকে অ্যাপ্লিকেশন পুরোপুরি আড়াল করতে পারি? অ্যাপটিকে পটভূমিতে চালানো দরকার, তবে আমরা অ্যাপ্লিকেশন থেকে কোনও স্ক্রিনশট প্রদর্শন করতে চাই না।

স্ক্রিনশটটি সম্ভাব্যরূপে সুরক্ষা-ঝুঁকিপূর্ণ, ব্যাঙ্কিং-অ্যাপগুলির জন্য লাইনটি মনে করুন যেখানে আপনার কার্ড নম্বর বা অ্যাকাউন্টের সারসংক্ষেপ যে কোনও ব্যক্তির জন্য উপলব্ধ থাকবে যারা ডিভাইসের হোম বোতামে ডাবল ক্লিক করে।

কেউ এর মধ্যে কোন অন্তর্দৃষ্টি আছে? ধন্যবাদ


4
আমার বর্তমান সমাধানটি হ'ল অ্যাপটি লোগো দিয়ে ফাঁকা ভিউ লোড করা একবার অ্যাপ্লিকেশন হাইবারনেশনে প্রবেশ করে এবং অ্যাপটি ফিরে আসার পরে এটিকে সরিয়ে ফেলা হয়, তবে সেই সমাধানটি পরিচালনা করা শক্ত এবং এটি একটি মার্জিত সমাধানের চেয়ে হ্যাকের মতো মনে হয়। এছাড়াও, ডিভাইস ইত্যাদির উপর নির্ভর করে এই সমাধানটি সময়ে সময়ে ব্যর্থ হয় So সুতরাং এটি আসলে ব্যবহারযোগ্য নয়।
টমমি

উত্তর:


101

ইন ব্যাকগ্রাউন্ডে রান করার জন্য আপনার ইউআই প্রস্তুতি অ্যাপল বলেছেন:

অ্যাপ স্ন্যাপশটের জন্য আপনার ইউআই প্রস্তুত করুন

আপনার অ্যাপ্লিকেশনটি ব্যাকগ্রাউন্ডে প্রবেশ করার পরে এবং আপনার প্রতিনিধি পদ্ধতিটি ফিরে আসার পরে এক পর্যায়ে, ইউআইকিট আপনার অ্যাপ্লিকেশনটির বর্তমান ব্যবহারকারী ইন্টারফেসের একটি স্ন্যাপশট নেয় takes সিস্টেমটি অ্যাপটি স্যুইচারে ফলাফল চিত্র প্রদর্শন করে। আপনার অ্যাপ্লিকেশনটিকে সম্মুখের দিকে ফিরিয়ে আনার সময় এটি চিত্রটি অস্থায়ীভাবে প্রদর্শন করে।

আপনার অ্যাপ্লিকেশনটির ইউআইতে অবশ্যই কোনও সংবেদনশীল ব্যবহারকারীর তথ্য থাকতে হবে না যেমন পাসওয়ার্ড বা ক্রেডিট কার্ড নম্বর। আপনার ইন্টারফেসে যদি এই জাতীয় তথ্য থাকে তবে পটভূমিতে প্রবেশের সময় এটি আপনার দৃষ্টিভঙ্গি থেকে সরিয়ে দিন। এছাড়াও, সতর্কতা, অস্থায়ী ইন্টারফেস এবং সিস্টেম ভিউ কন্ট্রোলারগুলিকে বরখাস্ত করুন যা আপনার অ্যাপ্লিকেশনটির বিষয়বস্তুকে অস্পষ্ট করে। স্ন্যাপশটটি আপনার অ্যাপ্লিকেশনটির ইন্টারফেসকে উপস্থাপন করে এবং এটি ব্যবহারকারীদের কাছে সনাক্তযোগ্য। আপনার অ্যাপ্লিকেশন যখন অগ্রভাগে ফিরে আসে, আপনি যথাযথভাবে ডেটা এবং দর্শন পুনরুদ্ধার করতে পারেন।

প্রযুক্তিগত প্রশ্নোত্তর দেখুন QA1838: টাস্ক স্যুইচারে উপস্থিত হওয়া থেকে সংবেদনশীল তথ্য রোধ করা

সংবেদনশীল তথ্যকে অস্পষ্ট করা / প্রতিস্থাপনের পাশাপাশি, আপনি আইওএস 7 কে স্ক্রিনের স্ন্যাপশট না নেওয়ার জন্যও বলতে চাইতে পারেন ignoreSnapshotOnNextApplicationLaunch, যার ডকুমেন্টেশন বলে:

আপনি যদি মনে করেন যে আপনার অ্যাপ্লিকেশনটি পুনরায় চালু হওয়ার পরে স্ন্যাপশটটি আপনার অ্যাপ্লিকেশনটির ইউজার ইন্টারফেসটি সঠিকভাবে প্রতিফলিত করতে পারে না, আপনি ignoreSnapshotOnNextApplicationLaunchসেই স্ন্যাপশট চিত্রটি নেওয়া থেকে রোধ করতে কল করতে পারেন ।

এটি বলার পরে, এটি প্রদর্শিত হবে যে স্ক্রিনের স্ন্যাপশটটি এখনও নেওয়া হয়েছে এবং আমি একটি বাগ রিপোর্ট দায়ের করেছি। তবে আপনাকে আরও পরীক্ষা করে দেখতে হবে যে এই সেটিংটি ব্যবহার করা সাহায্য করে কিনা।

যদি এটি কোনও এন্টারপ্রাইজ অ্যাপ্লিকেশন হয় তবে আপনি কনফিগারেশন প্রোফাইল রেফারেন্সের সীমাবদ্ধতা পেডলোড বিভাগে allowScreenShotবর্ণিত যথাযথ সেটিংসটিও দেখতে চাইতে পারেন


এখানে একটি বাস্তবায়ন যা আমার যা প্রয়োজন তা অর্জন করে। আপনি আপনার নিজের উপস্থাপন UIImageViewকরতে পারেন, বা গোপনীয় তথ্যকে অস্পষ্ট করতে আপনি একটি প্রতিনিধি-প্রোটোকল প্যাটার্ন ব্যবহার করতে পারেন:

//  SecureDelegate.h

#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];  // this doesn't appear to work, whether called here or `didFinishLaunchingWithOptions`, but seems prudent to include it

    [self.secureDelegate hide:@"applicationWillResignActive:"];  // you don't need to pass the "object", but it was useful during my testing...
}

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    [self.secureDelegate show:@"applicationDidBecomeActive:"];
}

দ্রষ্টব্য, আমি applicationWillResignActiveপরামর্শের পরিবর্তে ব্যবহার করছি applicationDidEnterBackground, কারণ অন্যরা যেমন নির্দেশ করেছে, অ্যাপটি চলাকালীন হোম বোতামে ডাবল ট্যাপিংয়ের পরে দ্বিতীয়টি বলা হয় না।

আমি আশা করি ডেলিগেট-প্রোটোকল প্যাটার্নের পরিবর্তে আমি এই সমস্তগুলি পরিচালনা করতে বিজ্ঞপ্তিগুলি ব্যবহার করতে পারি, তবে আমার সীমিত পরীক্ষায় বিজ্ঞপ্তিগুলি সময়োচিত পর্যাপ্ত পদ্ধতিতে পরিচালনা করা হয় না, তবে উপরের প্যাটার্নটি ঠিকঠাক কাজ করে।


6
মনে রাখবেন, এখানে উল্লিখিত হিসাবে স্ট্যাকওভারফ্লো / প্রশ্নগুলি / 18937313/… ডিভাইসের মতো সিমুলেটারে সবসময় আচরণ একই রকম হয় না!
মাইকেল ফরেস্ট 21

5
কি এটা এর মূল্য জন্য, ignoreSnapshotOnNextApplicationLaunchপদ্ধতি হিসাবে বর্ণনা যদি এটা রাষ্ট্র পুন সময় প্রার্থনা করা হয় না উপেক্ষা করা হয়, এখানে
চার্লস এ।

4
অ্যাপ্লিকেশনটিতে এটি করার দরকার নেই উইলআরিজাইনএ্যাকটিভ কারণ স্ক্রিনশটটি অ্যাপ্লিকেশনডিন্টারব্যাকগ্রাউন্ড না হওয়া পর্যন্ত নেওয়া হয় না। আপনি যখন হোম বোতামটি ডাবল ট্যাপ করেন, তখন কোনও স্ক্রিন শট নেওয়া হয় না; আপনি যে পর্দাটি দেখছেন তা লাইভ। যাচাই করতে আপনার স্ক্রিনে অ্যানিমেশন যুক্ত করুন, যেমন চক্রের পটভূমির রঙ। তারপরে আপনি যদি অন্য কোনও অ্যাপ বেছে নেন তবে আসল স্ক্রিনশট নেওয়ার আগে আপনার অ্যাপ্লিকেশনডিডনটারব্যাকগ্রাউন্ড কল হবে।
হনুস

4
বিটিডাব্লু, আমাকে একটি অ্যাপল ইঞ্জিনিয়ার জানিয়েছিলেন যে ডকুমেন্টেশন পুনরায় ignoreSnapshotOnNextApplicationLaunchভুল রয়েছে, যা আমরা সবাই পর্যবেক্ষণ করেছি, একটি স্ন্যাপশট আসলে নেওয়া হয়েছে, তবে পরবর্তী প্রবর্তনে আর ব্যবহার করা হবে না।
রব

4
এলোমেলোনাটশটঅনেক্সট অ্যাপ্লিকেশনলঞ্চটি মনে হচ্ছে যা করতে পারে: অ্যাপ্লিকেশন প্রবর্তনের সময় কোনও স্ক্রিনশট প্রদর্শিত হতে বাধা দেয় । এটি মাল্টিটাস্কিং ইউআই স্ক্রিনশটকে প্রভাবিত করে না, বা যদি আপনার অ্যাপ্লিকেশন আরম্ভের পরিবর্তে পুনরায় চালু করা হয়।
গ্লেন মেইনার্ড

32

আমার অ্যাপ্লিকেশনটির জন্য আমি এই সমাধানটি নিয়ে কাজ করেছি:

যেমন টমি বলেছেন: আপনি অ্যাপ্লিকেশনটি উইলরিজাইনএ্যাকটিভ ব্যবহার করতে পারেন। আমি যা করেছি তা ছিল আমার স্প্ল্যাশ চিত্র সহ একটি ইউআইআইমেজভিউ তৈরি করা এবং এটি আমার মূল উইন্ডোতে সাবউভিউ হিসাবে যুক্ত করুন-

(void)applicationWillResignActive:(UIApplication *)application
{
    imageView = [[UIImageView alloc]initWithFrame:[self.window frame]];
    [imageView setImage:[UIImage imageNamed:@"Portrait(768x1024).png"]];
    [self.window addSubview:imageView];
}

আমি অ্যাপ্লিকেশনডিন্টারব্যাকগ্রাউন্ডের পরিবর্তে এই পদ্ধতিটি ব্যবহার করেছি কারণ আপনি হোম বোতামটি ডাবলটিপ করলে অ্যাপ্লিকেশনডইনটারব্যাকগ্রাউন্ডটি ট্রিগার করা হবে না এবং অ্যাপ্লিকেশনউইলসাইনঅ্যাকটিভ হবে। আমি লোকদের বলতে শুনেছি যদিও এটি অন্যান্য ক্ষেত্রেও ট্রিগার হতে পারে, তাই আমি এখনও সমস্যাটি দেখছি কিনা তা পরীক্ষা করে দেখছি, তবে এখনও পর্যন্ত কোনওটিই নয়! ;)

চিত্রদর্শনটি অপসারণ করতে এখানে:

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    if(imageView != nil) {
        [imageView removeFromSuperview];
        imageView = nil;
    }
}

আশাকরি এটা সাহায্য করবে!

সিডিনোট: আমি এটি সিমুলেটর এবং একটি বাস্তব ডিভাইস উভয়ই পরীক্ষা করে দেখেছি: এটি সিমুলেটরটিতে প্রদর্শিত হবে না, তবে এটি একটি বাস্তব ডিভাইসে করে!


4
একটি অপূর্ণতা রয়েছে: ব্যবহারকারী ক্ষেত্রে বিজ্ঞপ্তি ডকটি নীচে টানলে অ্যাপ্লিকেশনউইলসিজাইনএ্যাকটিভকে অন্য ক্ষেত্রে বলা হয়। সুতরাং আপনি নিজের আঙুলটি উপরের থেকে নীচের দিকে স্লাইড করুন এবং সেই চিত্রটি দেখুন, যখন আপনি অ্যাপের সামগ্রী দেখতে পাবেন বলে আশা করছেন।
কিরিল গাজাজকভ

4
অ্যাপ্লিকেশন সম্পর্কিত সংবেদনশীল তথ্য ঝাপসা করা ভাল es ডিজিটালঅ্যাকটিভ এবং চিত্রনির্ধারণ অ্যাপ্লিকেশন-এর উপরে রাখুনডিডএন্টারব্যাকগ্রাউন্ড
কিরিল গাজাজকভ

এই কাজ, কিন্তু একটি ঘূর্ণন বাগ যখন সহ iOS7 জন্য মোতায়েন, xCode6 নির্মিত আছে: stackoverflow.com/questions/26147068/...
অ্যালেক্স স্টোন

আপনি যদি অ্যাপ্লিকেশন উইলরিজাইনএ্যাকটিভটিতে উল্লিখিত কোডটি যদি আমি লিখি তবে আমি আমার অ্যাপ্লিকেশনটিকে পূর্বের স্থিতিতে ফিরিয়ে আনলে আমি কী দেখতে পাব? আমি কি "প্রতিকৃতি (768x1024) .png" চিত্র বা আসল পর্দা দেখতে পাব?
এনএসপ্র্যাটিক

4
@ প্রতীক: আপনি চিত্রটি দেখতে পাবেন, যদি না আপনি এটিকে অ্যাপ্লিকেশনডিবোকোম্যাকটিভ পদ্ধতিতে পুনরায় সরিয়ে না ফেলে (উপরে দেখুন)।
লরা

14

এই দ্রুত এবং সহজ পদ্ধতিটি iOS7 বা পরবর্তী অ্যাপের স্যুইচারে আপনার অ্যাপ্লিকেশনটির আইকনটির উপরে একটি কালো স্ন্যাপশট দেবে।

প্রথমে আপনার অ্যাপ্লিকেশনটির কী উইন্ডোটি নিন (সাধারণত অ্যাপ্লিকেশনটিতে অ্যাপডেলিগেট.এম সেটআপ করুন: ফিনিশলঞ্চিং উইথঅপশনস), এবং আপনার অ্যাপ্লিকেশন ব্যাকগ্রাউন্ডে চলে যাওয়ার সময় এটিকে আড়াল করুন:

- (void)applicationWillResignActive:(UIApplication *)application
{
    if(isIOS7Or8)
    {
        self.window.hidden = YES;
    }
}

তারপরে, আপনার অ্যাপ্লিকেশনটি আবার সক্রিয় হয়ে উঠলে আপনার অ্যাপ্লিকেশনটির কী উইন্ডোটি আন-লুকিয়ে রাখুন:

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    if(isIOS7Or8)
    {
        self.window.hidden = NO;
    }
}

এই মুহুর্তে, অ্যাপের স্যুইচারটি দেখুন এবং যাচাই করুন যে আপনি আপনার অ্যাপ্লিকেশনটির আইকনটির উপরে একটি কালো স্ন্যাপশট দেখছেন। আমি লক্ষ্য করেছি যে আপনি যদি আপনার অ্যাপ্লিকেশনটিকে ব্যাকগ্রাউন্ডে স্থান দেওয়ার পরে অবিলম্বে অ্যাপটি পরিবর্তনকারী চালু করেন, তবে আপনার অ্যাপ্লিকেশনটির একটি স্ন্যাপশট (যেটি আপনি আড়াল করতে চান!) তার পরে ~ 5 সেকেন্ড বিলম্ব হতে পারে can যা এটি একটি সর্ব-কালো স্ন্যাপশটে স্থানান্তর করে। আমি নিশ্চিত না যে দেরিতে কী হচ্ছে; কারও কোনও পরামর্শ থাকলে দয়া করে চিম ইন করুন।

আপনি যদি স্যুইচারে কালো ছাড়া অন্য কোনও রঙ চান, আপনি যে কোনও পটভূমির রঙ চান তা সহ একটি সংক্ষিপ্তসার যুক্ত করে এমন কিছু করতে পারেন:

- (void)applicationWillResignActive:(UIApplication *)application
{
    if(isIOS7Or8)
    {
        UIView *colorView = [[[UIView alloc] initWithFrame:self.window.frame] autorelease];
        colorView.tag = 9999;
        colorView.backgroundColor = [UIColor purpleColor];
        [self.window addSubview:colorView];
        [self.window bringSubviewToFront:colorView];
    }
}

তারপরে, আপনার অ্যাপ্লিকেশনটি আবার সক্রিয় হয়ে উঠলে এই রঙের সাবউভিউটি সরান:

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    if(isIOS7Or8)
    {
        UIView *colorView = [self.window viewWithTag:9999];
        [colorView removeFromSuperview];
    }
}

4

আমি নিম্নলিখিত সমাধানটি ব্যবহার করেছি: যখন অ্যাপ্লিকেশন পদত্যাগ করতে চলেছে তখন আমি অ্যাপ্লিকেশন উইন্ডো স্ন্যাপশটকে একটি ভিউ হিসাবে পেয়েছি এবং এতে অস্পষ্টতা যুক্ত করছি। তারপরে আমি এই ভিউটি অ্যাপ উইন্ডোতে যুক্ত করব

এই কিভাবে করবেন:

  1. অ্যাপ্লিকেশনটিতে প্রয়োগের ঠিক আগে লাইনের যোগ করুন:

    static const int kNVSBlurViewTag = 198490;//or wherever number you like
    
  2. এই পদ্ধতিগুলি যুক্ত করুন:

    - (void)nvs_blurPresentedView
        {
            if ([self.window viewWithTag:kNVSBlurViewTag]){
                return;
            }
            [self.window addSubview:[self p_blurView]];
        }
    
        - (void)nvs_unblurPresentedView
        {
            [[self.window viewWithTag:kNVSBlurViewTag] removeFromSuperview];
        }
    
        #pragma mark - Private
    
        - (UIView *)p_blurView
        {
            UIView *snapshot = [self.window snapshotViewAfterScreenUpdates:NO];
    
            UIView *blurView = nil;
            if ([UIVisualEffectView class]){
                UIVisualEffectView *aView = [[UIVisualEffectView alloc]initWithEffect:[UIBlurEffect effectWithStyle:UIBlurEffectStyleDark]];
                blurView        = aView;
                blurView.frame  = snapshot.bounds;
                [snapshot addSubview:aView];
            }
            else {
                UIToolbar *toolBar  = [[UIToolbar alloc] initWithFrame:snapshot.bounds];
                toolBar.barStyle    = UIBarStyleBlackTranslucent;
                [snapshot addSubview:toolBar];
            }
            snapshot.tag = kNVSBlurViewTag;
            return snapshot;
        }
    
  3. আপনার অ্যাপ্লিকেশন প্রতিনিধিটিকে নীচে পরিণত করুন:

    - (void)applicationWillResignActive:(UIApplication *)application {
        // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
        // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
        //...
        //your code
        //...
    
        [self nvs_blurPresentedView];
    }
    
        - (void)applicationWillEnterForeground:(UIApplication *)application {
        // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
        //...
        //your code
        //...
    
        [self nvs_unblurPresentedView];
    }
    

আমি সুইফট এবং অবজেক্টিভ সি তে উদাহরণ প্রকল্পগুলি তৈরি করেছি । উভয় প্রকল্পই নিম্নলিখিত ক্রিয়াগুলি এতে করে:

অ্যাপ্লিকেশন: didResignActive - স্ন্যাপশটটি তৈরি করা, অস্পষ্ট এবং অ্যাপ্লিকেশন উইন্ডোতে যুক্ত করা হয়েছে

-প্রয়োগ: উইলকোমেকটিভ ব্লার ভিউ উইন্ডো থেকে সরানো হচ্ছে।

ব্যবহারবিধি:

অবজেকটিভ সি

  1. যোগ AppDelegate+NVSBlurAppScreenজ আপনার প্রকল্পের প্রয়োজন এবং .m ফাইল

  2. আপনার -প্লিকেশনউইলরিজাইনএ্যাকটিভ: পদ্ধতিতে নিম্নলিখিত লাইনটি যুক্ত করুন:

    [self nvs_blurPresentedView];
    
  3. আপনার-অ্যাপ্লিকেশনডিডএন্টারব্যাকগ্রাউন্ডে: পদ্ধতিতে নিম্নলিখিত লাইনটি যুক্ত করুন:

    [self nvs_unblurPresentedView];
    

সুইফট

  1. আপনার প্রকল্পে AppDelegateExtention.swift ফাইল যুক্ত করুন

  2. আপনার অ্যাপ্লিকেশনটিতে উইলআরিজাইনএকটিভ ফাংশনটিতে নিম্নলিখিত লাইনটি যুক্ত করুন:

    blurPresentedView()
    
  3. আপনার অ্যাপ্লিকেশনে ডিডবেকোম অ্যাক্টিভ ফাংশনটিতে নিম্নলিখিত লাইনটি যুক্ত করুন:

    unblurPresentedView()
    

2

যদি কেবলমাত্র ফাংশনে ব্যবহার [self.window addSubview:imageView];করা applicationWillResignActiveহয়, এই চিত্রভিউতে ইউআইএলআরলেটভিউ, ইউআইএএকশনশিট বা এমএফমেইলকম্পোজভিউ কনক্রোলারকে কভার করা হবে না ...

সবচেয়ে ভাল সমাধান

- (void)applicationWillResignActive:(UIApplication *)application
{
    UIWindow *mainWindow = [[[UIApplication sharedApplication] windows] lastObject];
    [mainWindow addSubview:imageView];
}

যদি আপনার কোনও ওয়েবভিউতে ফুলস্ক্রিন-মোডে কোনও ভিডিও প্লে হয় তবে খুব ভাল সমাধান!
টমমি

দুর্দান্ত! মাল্টিটাস্কিং সুইচারে যাওয়ার আগে কীপ্যাড খোলা থাকলেও এটি কাজ করে! ধন্যবাদ
প্রভু.সুমসুন্দরম

0

"সমাধান" আমার নিজের সমাধান সরবরাহ করা, যদিও এই সমাধানটি খুব অবিশ্বাস্য। কখনও কখনও আমি স্ক্রিনশট হিসাবে একটি কালো স্ক্রিন, কখনও কখনও XIB এবং কখনও কখনও অ্যাপ্লিকেশন থেকে একটি স্ক্রিনশট পেতে। ডিভাইসের উপর নির্ভর করে এবং / অথবা যদি আমি এটি সিমুলেটারে চালাই।

অনুগ্রহ করে নোট করুন আমি এই সমাধানের জন্য কোনও কোড সরবরাহ করতে পারি না কারণ এটি এতে অ্যাপ্লিকেশন-সংক্রান্ত প্রচুর বিবরণ। তবে এটি আমার সমাধানের মূল কথাটি ব্যাখ্যা করে।

AppDelegate.m এ অ্যাপ্লিকেশনভিলিজাইনএকটিভের অধীনে আমি যদি আমি iOS7 চালাচ্ছি কিনা তা পরীক্ষা করে দেখি, যদি আমি এমন একটি নতুন ভিউ লোড করি যা মাঝখানে অ্যাপ-লোগোতে ফাঁকা থাকে। একবার অ্যাপ্লিকেশনডিকোম্যাক্টিভকে আমার পুরানো ভিউগুলি পুনরায় চালু করতে বলা হয়, যা পুনরায় সেট করা হবে - তবে এটি যে ধরণের অ্যাপ্লিকেশনটি বিকাশ করছি তার জন্য কাজ করে।


4
আপনি যদি ক্যামেরা অ্যাপ্লিকেশনটি দেখেন - ব্যাকগ্রাউন্ডে যাওয়ার সময় এটি চিত্রটিকে একটি অস্পষ্ট রূপান্তরিত করে (আপনি আইকনটি হ্রাস করার সাথে সাথে রূপান্তরটি দেখতে পারেন)
পিটেশ

@ পতেশ হ্যাঁ, এটি একটি দুর্দান্ত বাস্তবায়ন, তবে তারা কীভাবে এটি করেন তা প্রশ্ন। আমি একটি প্রাইভেট এপিআই ভয় করি।
রব

@ টমমি আপনি বলেছেন "ডিভাইসের উপর নির্ভর করে এবং / অথবা আমি যদি সিমুলেটারে এটি চালাই"। আমার জন্য, এটি ডিভাইসে কাজ করছে বলে মনে হচ্ছে (যদিও আমি সম্পূর্ণ পরীক্ষা-নিরীক্ষা করিনি), তবে সিমুলেটরটি নয়। আপনি কি আবিষ্কার করছেন এটি ডিভাইসে কাজ করে না?
রব

0

মাল্টিটাস্কিং আরম্ভ করতে হোম বোতামটি ডাবল ক্লিক কনফিগার করতে অ্যাক্টিভেটর ব্যবহার করতে পারেন এবং হোম বোতামের ডিফল্ট ডাবল ক্লিক এবং মাল্টিটাস্কিং উইন্ডোটি চালু করতে অক্ষম করতে পারেন। এই পদ্ধতিটি স্ক্রিনশটগুলি অ্যাপ্লিকেশনের ডিফল্ট চিত্রটিতে পরিবর্তন করতে ব্যবহার করা যেতে পারে। এটি ডিফল্ট পাসকোড সুরক্ষা বৈশিষ্ট্যযুক্ত অ্যাপ্লিকেশনগুলিতে প্রযোজ্য।


-2

Xamarin.iOS

Https://stackoverflow.com/a/20040270/7561 থেকে অভিযোজিত

কেবল একটি রঙ দেখানোর পরিবর্তে আমি আমার লঞ্চের স্ক্রিনটি দেখাতে চেয়েছিলাম।

 public override void DidEnterBackground(UIApplication application)
 {
    //to add the background image in place of 'active' image
    var backgroundImage = new UIImageView();
    backgroundImage.Tag = 1234;
    backgroundImage.Image = UIImage.FromBundle("Background");
    backgroundImage.Frame = this.window.Frame;
    this.window.AddSubview(backgroundImage);
    this.window.BringSubviewToFront(backgroundImage);
}

public override void WillEnterForeground(UIApplication application)
{
    //remove 'background' image
    var backgroundView = this.window.ViewWithTag(1234);
    if(null != backgroundView)
        backgroundView.RemoveFromSuperview();
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.