একটি পুশ বিজ্ঞপ্তি থেকে অ্যাপ্লিকেশন চালু করা বা খোলা হয়েছে কিনা তা সনাক্ত করুন


171

কোনও অ্যাপ্লিকেশনটি পুশ বিজ্ঞপ্তি থেকে চালু করা / খোলা হয়েছিল কিনা তা জানা সম্ভব?

আমার ধারণা লঞ্চিং ইভেন্টটি এখানে ধরা পড়বে:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    if (launchOptions != nil) {
         // Launched from push notification
         NSDictionary *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];

    }
}

যাইহোক, অ্যাপটি ব্যাকগ্রাউন্ডে থাকা অবস্থায় এটি কীভাবে সনাক্ত করতে পারি যে এটি একটি পুশ বিজ্ঞপ্তি থেকে খোলা হয়েছিল?


6
এটি একটি পুরানো, তবে খুব দরকারী পোস্ট। দুর্ভাগ্যক্রমে শীর্ষ উত্তরগুলি প্রকৃতপক্ষে সমস্যার সমাধান করে না (মন্তব্যগুলি ইঙ্গিত করে)। বর্তমান উত্তরটি সম্পূর্ণ না হওয়ায় দয়া করে একটি নতুন উত্তরকে 'গৃহীত' হিসাবে চিহ্নিত করার বিষয়টি বিবেচনা করুন।
মোবাইলওয়েট

1
এই প্রশ্নের 100k + দর্শন রয়েছে তবে নির্বাচিত উত্তরটি ভুল বা সম্পূর্ণ। দর্শনার্থীদের কাছে, আধুনিক সমাধানগুলি অনুসন্ধানের জন্য ভোটের পরিবর্তে অ্যাক্টিভ অনুসারে বাছাই বিবেচনা করুন।
অ্যালবার্ট রেনশওয়া

উত্তর:


187

এই কোডটি দেখুন:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    if ( application.applicationState == UIApplicationStateInactive || application.applicationState == UIApplicationStateBackground  )
    {
         //opened from a push notification when the app was on background
    }
}

একই রকম

-(void)application:(UIApplication *)application didReceiveLocalNotification (UILocalNotification *)notification

19
@ManuelM। এটিতে একটি উত্তম উত্তর এটি কীভাবে সনাক্ত করতে হয় তা কীভাবে সনাক্ত করতে হয় তা পুশ বিজ্ঞপ্তি থেকে পটভূমিতে থাকা কোনও অ্যাপ্লিকেশনটিকে অগ্রভাগে আনা হয়। যখন অ্যাপটি চলছে না তখন আপনার নীচে এম.অথম্যানের উত্তর প্রয়োজন।
ওপেন ইউজারএক্স 0৩

6
আমি অ্যাপ্লিকেশনে কল পাচ্ছি: করেছেন রিসিপ রিমোটনোটিকেশন: অ্যাপ্লিকেশনটি কেবল পটভূমিতে রয়েছে বা আদৌ চলছে না তা নির্বিশেষে বিজ্ঞপ্তিটি টেপ করার পরে এই উত্তরটি আমার প্রয়োজনীয়তার জন্য উপযুক্ত। আইওএস 7 এবং 8
নিউটজ

16
কিছু অন্যান্য নির্দেশিত মতো, এটি "ধাক্কা বিজ্ঞপ্তি থেকে চালু / খোলা" সনাক্ত করে না। বিজ্ঞপ্তিটি পাওয়া গেলে এটি বলা হয়, এটি কখন খোলা হয় না। সুতরাং আপনি যদি বিজি-তে কোনও বিজ্ঞপ্তি পেয়ে থাকেন তবে অ্যাপটি খোলার জন্য অ্যাপ্লিকেশন আইকনটি ট্যাপ করে থাকেন, আপনার এখানে কোডটি এখনও চলতে চলেছে, এবং আপনি এমন কোনও পৃষ্ঠা খুলতে পারেন যা ব্যবহারকারীর খোলার ইচ্ছা নেই।
বাও লেই

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

2
নিশ্চিত হয়ে গেছে যে এটি গুগল ক্লাউড মেসেজিংয়ের সাথে কাজ করে।
কুলারবাইটস

127

দেরীতে কিন্তু সম্ভবত দরকারী

যখন অ্যাপ চলছে না

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

বলা হয় ..

যেখানে আপনাকে পুশ নোটিফিকেশন পরীক্ষা করতে হবে

NSDictionary *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (notification) {
    NSLog(@"app recieved notification from remote%@",notification);
    [self application:application didReceiveRemoteNotification:notification];
} else {
    NSLog(@"app did not recieve notification");
}

2
দ্রষ্টব্য যে উপরের স্নিপেটে বিজ্ঞপ্তিটি (ইউআইওলোকাল নোটিকেশন *) হিসাবে ঘোষণা করা উচিত নয় তবে এটি একটি (এনএসডেটরিয় *)
বিশ্বব্যাপী

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

আপনার উত্তর এবং এই উত্তর উভয় একই জিনিস করছে?
মধু

38

অ্যাপটি চালু হওয়ার পরে আমাদের যে সমস্যাটি ছিল তা সঠিকভাবে ভিউটি আপডেট করার ছিল ating জীবনচক্র পদ্ধতির জটিল ক্রমগুলি এখানে বিভ্রান্তিকর হয়।

জীবনচক্র পদ্ধতি Meth

আইওএস 10 এর জন্য আমাদের পরীক্ষার মাধ্যমে বিভিন্ন ক্ষেত্রে লাইফসাইকেল পদ্ধতির নিম্নলিখিত ক্রমগুলি প্রকাশিত হয়েছিল:

DELEGATE METHODS CALLED WHEN OPENING APP  

Opening app when system killed or user killed  
    didFinishLaunchingWithOptions  
    applicationDidBecomeActive    

Opening app when backgrounded  
    applicationWillEnterForeground  
    applicationDidBecomeActive  

DELEGATE METHODS WHEN OPENING PUSH

Opening push when system killed
    [receiving push causes didFinishLaunchingWithOptions (with options) and didReceiveRemoteNotification:background]
    applicationWillEnterForeground
    didReceiveRemoteNotification:inactive
    applicationDidBecomeActive

Opening push when user killed
    didFinishLaunchingWithOptions (with options)
    didReceiveRemoteNotification:inactive [only completionHandler version]
    applicationDidBecomeActive

Opening push when backgrounded
    [receiving push causes didReceiveRemoteNotification:background]
    applicationWillEnterForeground
    didReceiveRemoteNotification:inactive
    applicationDidBecomeActive

সমস্যাটি

ঠিক আছে, সুতরাং এখন আমাদের প্রয়োজন:

  1. ব্যবহারকারী কোনও ধাক্কা থেকে অ্যাপটি খুলছে কিনা তা নির্ধারণ করুন
  2. পুশ স্টেটের ভিত্তিতে ভিউ আপডেট করুন
  3. রাষ্ট্রটি সাফ করুন যাতে পরবর্তীকালে খোলার ফলে ব্যবহারকারীকে একই অবস্থানে ফিরতে না পারে।

মুশকিলটি হ'ল অ্যাপ্লিকেশনটি আসলে সক্রিয় হয়ে ওঠার পরে ভিউ আপডেট করার দরকার হয়, যা সমস্ত ক্ষেত্রে একই লাইফাইসাইকেল পদ্ধতি।

আমাদের সমাধানের স্কেচ

আমাদের সমাধানের মূল উপাদানগুলি এখানে:

  1. notificationUserInfoAppDelegate এ একটি উদাহরণ ভেরিয়েবল সঞ্চয় করুন।
  2. notificationUserInfo = nilউভয় applicationWillEnterForegroundএবং মধ্যে সেট করুন didFinishLaunchingWithOptions
  3. সেট notificationUserInfo = userInfoমধ্যেdidReceiveRemoteNotification:inactive
  4. applicationDidBecomeActiveসর্বদা থেকে একটি কাস্টম পদ্ধতি কল করুন openViewFromNotificationএবং পাস করুন self.notificationUserInfo। যদি self.notificationUserInfoশূন্য থাকে তবে তাড়াতাড়ি ফিরে আসুন, অন্যথায় পাওয়া বিজ্ঞপ্তিটির ভিত্তিতে ভিউটি খুলুন self.notificationUserInfo

ব্যাখ্যা

কোনও ধাক্কা থেকে খোলার সময় didFinishLaunchingWithOptionsবা applicationWillEnterForegroundসর্বদা তত্ক্ষণাত আগে ডাকা হয় didReceiveRemoteNotification:inactive, তাই আমরা প্রথমে এই পদ্ধতিগুলিতে বিজ্ঞপ্তি ইউজারআইএনফো পুনরায় সেট করি যাতে কোনও বাসি অবস্থা নেই। তারপরে, যদি didReceiveRemoteNotification:inactiveআমরা ডাকা হয় আমরা জানি আমরা একটি ধাক্কা থেকে খুলছি তাই আমরা সেট করে self.notificationUserInfoযা পরে applicationDidBecomeActiveব্যবহারকারীকে ডানদিকের দিকে এগিয়ে দেওয়ার জন্য তুলে নেওয়া হয় ।

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

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


পরিশেষে এমন কিছু যা কাজ করে, ধন্যবাদ! আমি receiveযখন অ্যাপ স্টেটটি সক্রিয় থাকাকালীন বা অ্যাপ্লিকেশনটি পুনরায় চালু হয় তখন পদ্ধতিগুলিতে স্ক্রিনটি "অ্যাপসিসুমিং" তৈরি করতে এবং স্ক্রিনটি খুলতে চেয়েছিলাম । অ্যাপ্লিকেশনটি নিষ্ক্রিয় থাকা অবস্থায় এটি ভিসি পরিবর্তনের ক্ষেত্রে সমস্যা সৃষ্টি করতে পারে। আপনার সমাধানটি দুর্দান্ত দেখাচ্ছে, যতক্ষণ না অ্যাপল আবার জীবনচক্র পরিবর্তন করে।
শেল

আইওএস 9 সম্পর্কে কী, একই পদ্ধতিতে এবং ক্রমে লাইফাইসাইকেল পদ্ধতিগুলি বলা হয়? আমার কাছে ইতিমধ্যে কোনও আইওএস 9 ডিভাইস নেই তাই আমি এটি সঠিকভাবে পরীক্ষা করতে পারি না।
শেল

2
অ্যাপের স্যুইচার বাদে আরও দুটি প্রান্তের মামলা রয়েছে। 1) যখন নোটিফিকেশন সেন্টারটি উপরের দিক থেকে টানা থাকে এবং অ্যাপটি ওভারলাই করে থাকে 2) যখন ওয়াইফাই / বিটি / ইত্যাদি সহ আইওএসের প্যানেলটি নীচ থেকে টানা থাকে এবং অ্যাপটিকে ওভারল করে। তিনটি ক্ষেত্রেই কেবল applicationWillResignActiveডাকা হয় এবং তারপরে applicationDidBecomeActive। সুতরাং applicationWillResignActiveডাকা হওয়ার পরে একটি applicationDidEnterBackgroundবা কল না হওয়া পর্যন্ত প্রাপ্ত বিজ্ঞপ্তিটি সংরক্ষণ করবেন না applicationDidBecomeActive
শেল

এই কেসগুলি @ শেল যুক্ত করার জন্য ধন্যবাদ। এটি সবসময় আরও জটিল হয়ে যায়! আমি iOS9 সম্পর্কে নিশ্চিত নই। আমি বলব যে তারা সম্ভবত একইরকম ধারণা করা নিরাপদ তবে কে জানে।
এরিক কনার

শুধু একটি মাথা আপ. আমি আজ আইওএস 11 বিটা 9 পরীক্ষা করছিলাম এবং দেখেছি যে আপনি যেখানে আপনার অ্যাপ্লিকেশনটি অগ্রভাগে রেখেছেন, ফোনটি লক করুন এবং তারপরে লক স্ক্রিন থেকে একটি পুশ বিজ্ঞপ্তিটি নির্বাচন করুন, এটি ডিগ্রি রিসিভরেমোটনোটিকেশন কল করছে: অ্যাপ্লিকেশন কল করার আগে ব্যাকগ্রাউন্ড উইলএন্টারফোরগ্রাউন্ডের চেয়ে আমরা আইওএস 10 এ যা দেখছি যেখানে এটি অ্যাপ্লিকেশন উইলএন্টারফোরগ্রাউন্ড এবং তারপরে ডায় রিসিপরেমোটনোটিকেশন কল করে: নিষ্ক্রিয় - তাই এটি এখনও একটি প্রান্তের বিষয় coveredাকেনি। আমার মতে এটি আইওএস কোডের একটি বাগ, তবে আইওএস 11 রিলিজটি কতটা কাছাকাছি রয়েছে তা প্রদত্ত, এটি সচেতন হওয়ার মতো বিষয়।
রায়

24

এটি একটি সুপরিচিত পোষ্ট ... তবে এটি এখনও সমস্যার আসল সমাধান অনুপস্থিত (বিভিন্ন মন্তব্যে দেখানো হয়েছে)।

মূল প্রশ্নটি অ্যাপটি কখন চালু করা / একটি পুশ বিজ্ঞপ্তি থেকে খোলা হয়েছিল তা সনাক্তকরণ সম্পর্কিত , যেমন কোনও ব্যবহারকারী বিজ্ঞপ্তিতে ট্যাপ করে। উত্তরের কোনওটিই এই মামলাটি কভার করে না।

কোনও প্রজ্ঞাপন এলে কল প্রবাহে কারণ দেখা যায়, application:didReceiveRemoteNotification...

বিজ্ঞপ্তিটি যখন প্রাপ্ত হয় এবং যখন ব্যবহারকারীটি বিজ্ঞপ্তিটি টেপ করে তখন আবার কল হয় gets এই কারণে, আপনি কেবল UIApplicationStateএটির দ্বারা ব্যবহারকারীটি টেপ করে দেখে বলতে পারবেন না ।

অতিরিক্তভাবে, আপনাকে আর অ্যাপ্লিকেশনটির 'কোল্ড স্টার্ট' পরিস্থিতিটি পরিচালনা করতে হবে না application:didFinishLaunchingWithOptions...যেমন application:didReceiveRemoteNotification...আইওএস 9+ এ চালু করার পরে আবার বলা হবে (সম্ভবত 8 টিও)।

সুতরাং, আপনি কীভাবে বলতে পারবেন যে ব্যবহারকারীদের ইভেন্টগুলির শৃঙ্খলা শুরু হয়েছে? আমার সমাধানটি হল সেই সময়টিকে চিহ্নিত করা যেখানে অ্যাপটি ব্যাকগ্রাউন্ড থেকে শুরু হয় বা কোল্ড শুরু শুরু করে এবং তারপরে সেই সময়টি পরীক্ষা করে application:didReceiveRemoteNotification...। যদি এটি 0.1 এর চেয়ে কম হয়, তবে আপনি নিশ্চিত হয়ে উঠতে পারবেন যে ট্যাপটি সূচনাটি শুরু করেছিল।

সুইফট 2.x

class AppDelegate: UIResponder, UIApplicationDelegate {

  var wakeTime : NSDate = NSDate()        // when did our application wake up most recently?

  func applicationWillEnterForeground(application: UIApplication) {    
    // time stamp the entering of foreground so we can tell how we got here
    wakeTime = NSDate()
  }

  func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {
    // ensure the userInfo dictionary has the data you expect
    if let type = userInfo["type"] as? String where type == "status" {
      // IF the wakeTime is less than 1/10 of a second, then we got here by tapping a notification
      if application.applicationState != UIApplicationState.Background && NSDate().timeIntervalSinceDate(wakeTime) < 0.1 {
        // User Tap on notification Started the App
      }
      else {
        // DO stuff here if you ONLY want it to happen when the push arrives
      }
      completionHandler(.NewData)
    }
    else {
      completionHandler(.NoData)
    }
  }
}

সুইফট 3

class AppDelegate: UIResponder, UIApplicationDelegate {

    var wakeTime : Date = Date()        // when did our application wake up most recently?

    func applicationWillEnterForeground(_ application: UIApplication) {
      // time stamp the entering of foreground so we can tell how we got here
      wakeTime = Date()
    }

  func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {

      // ensure the userInfo dictionary has the data you expect
      if let type = userInfo["type"] as? String, type == "status" {
        // IF the wakeTime is less than 1/10 of a second, then we got here by tapping a notification
        if application.applicationState != UIApplicationState.background && Date().timeIntervalSince(wakeTime) < 0.1 {
          // User Tap on notification Started the App
        }
        else {
          // DO stuff here if you ONLY want it to happen when the push arrives
        }
        completionHandler(.newData)
      }
      else {
        completionHandler(.noData)
      }
    }
}

আমি আইওএস 9+ এ উভয় ক্ষেত্রে (পটভূমির অ্যাপ্লিকেশন, অ্যাপ চলমান নয়) এর জন্য এটি পরীক্ষা করেছি এবং এটি একটি কবজির মতো কাজ করে। ০.০ সেগুলিও বেশ রক্ষণশীল, আসল মান ~ 0.002s তাই 0.01 ঠিক আছে।


1
এটিই কেবলমাত্র কার্যকর সমাধান হিসাবে দেখা যায় যা প্রকৃতপক্ষে বিজ্ঞপ্তিটি ট্যাপ করা এবং অ্যাপ্লিকেশনটিতে স্ট্যাটাস-বারটি খোলার মধ্যে পার্থক্য করে।
liviucmg

4
এটি স্ট্যাকওভারফ্লো এর সমস্ত থেকে একমাত্র কার্যক্ষম সমাধান। কেবলমাত্র আমি যুক্ত করতে চাই, আপনি যখন আইওএস 10 এবং উচ্চতর সমর্থন করেন, আপনি কেবলমাত্র UNNotificationCenterAPI ব্যবহার করতে পারেন , বিশেষত UNNotificationsCenterDelegate পদ্ধতিগুলি। এই API টি কল ফানক userNotificationCenter(UNUserNotificationCenter, didReceive: UNNotificationResponse, withCompletionHandler: @escaping () -> Void) পদ্ধতি কেবল তখনই যখন ব্যবহারকারীরা বিজ্ঞপ্তিতে প্রকৃতপক্ষে ট্যাপ করে থাকে।
ডেনহ্যাডলেস

এটি 3 সুইফ্টের জন্য কীভাবে দেখায়?
জোচেন

কোনও অ্যাপ্লিকেশনটি নিষ্ক্রিয় অবস্থায় থাকাকালীন সমাধানটি কাজ করে না (ব্যবহারকারী নোটিফিকেশন সেন্টারে সোয়াইপ করে বা নিয়ন্ত্রণ কেন্দ্রের সোয়াইপ করে) এবং একটি বিজ্ঞপ্তি গ্রহণ করে। যখন বিজ্ঞপ্তিতে ব্যবহারকারী ট্যাপ করে অ্যাপ্লিকেশন applicationWillEnterForeground কলটি গ্রহণ করে না , ফলস্বরূপ, সমাধানটি ট্যাপটি সনাক্ত করতে ব্যর্থ হয়।
দেবগানস্তা

@DevGansta যখন আপনি যেমন আপনার বর্গ যোগ UNUserNotificationCenter.current().delegateমধ্যে application:didFinishLaunchingWithOptions, অ্যাপ্লিকেশন কল হবে userNotificationCenter(didReceive response)যদি আপনি বর্ণিত আলতো চাপুন পর
ডরিয়ান রায়

22

অ্যাপ্লিকেশনটি বন্ধ হয়ে গেলে, এবং ব্যবহারকারী পুশ বিজ্ঞপ্তিতে ট্যাপ করে

public func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
   if launchOptions?[UIApplicationLaunchOptionsKey.remoteNotification] != nil {
      print("from push")
    }
}

অ্যাপ্লিকেশন যখন পটভূমিতে থাকে এবং ব্যবহারকারী পুশ নোটিফিকেশনটিতে আলতো চাপ দেয়

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

public func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {
  if application.applicationState == .inactive {
    print("from push")
  }
}

আপনার অ্যাপের উপর নির্ভর করে, এটি আপনাকে content-availableভিতরে দিয়ে নিঃশব্দ ধাক্কাও প্রেরণ করতে apsপারে, তাই এটি সম্পর্কেও সচেতন থাকুন :) দেখুন https://stackoverflow.com/a/33778990/1418457


2
কেবল উত্তর যা নোংরা হ্যাক এবং সঠিক মনে হয় না। অ্যাপটি যদি ব্যাকগ্রাউন্ডে থাকে এবং ব্যবহারকারী নিজে এটি খোলেন, তবে কীভাবে এটি চেক করব? এখনও ঠান্ডা ঠাণ্ডা শুরু এবং পটভূমি থেকে ধাক্কা পরীক্ষা করতে সক্ষম হয়ে।
জোচেন

1
@ JochenÖsterreicher হাই, আমি তা এখানে সারসংক্ষেপ, চেক করুন medium.com/@onmyway133/...
onmyway133

19

'চলমান নয়' রাষ্ট্রের জন্য সুইফট ২.০ (স্থানীয় এবং দূরবর্তী বিজ্ঞপ্তি)

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {


// Handle notification
if (launchOptions != nil) {

    // For local Notification
    if let localNotificationInfo = launchOptions?[UIApplicationLaunchOptionsLocalNotificationKey] as? UILocalNotification {

        if let something = localNotificationInfo.userInfo!["yourKey"] as? String {
            self.window!.rootViewController = UINavigationController(rootViewController: YourController(yourMember: something))
        }


    } else

    // For remote Notification
    if let remoteNotification = launchOptions?[UIApplicationLaunchOptionsRemoteNotificationKey] as! [NSObject : AnyObject]? {

        if let something = remoteNotification["yourKey"] as? String {
            self.window!.rootViewController = UINavigationController(rootViewController: YourController(yourMember: something))
        }
    }

}


return true
}

15

ইন application:didReceiveRemoteNotification:চেক আপনি বিজ্ঞপ্তি পেয়েছি কিনা যখন আপনার অ্যাপ্লিকেশন ফোরগ্রাউন্ড বা পটভূমি রয়েছে।

যদি এটি পটভূমিতে পাওয়া যায় তবে বিজ্ঞপ্তি থেকে অ্যাপটি চালু করুন।

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
    if ([UIApplication sharedApplication].applicationState == UIApplicationStateActive) {
        NSLog(@"Notification received by running app");
    } else {
        NSLog(@"App opened from Notification");
    }
}

3
নোট করুন যে "বিজ্ঞপ্তি থেকে খোলা অ্যাপ্লিকেশন" কোনও ভুল পজিটিভ হবে যদি বিজ্ঞপ্তি প্রেরণ করা হয় যখন ব্যবহারকারী আলাদা স্ক্রিনে থাকে (উদাহরণস্বরূপ, যদি তারা স্থিতি বারটি নীচে টান দেয় এবং আপনার অ্যাপ্লিকেশন থেকে একটি বিজ্ঞপ্তি গ্রহণ করে)।
কেভিন কুপার 21

4
@ কেভিন ঠিক এটি আপনাকে বিস্মিত করে তোলে যে আপেল আপাতদৃষ্টিতে
Andreas

আমরা কীভাবে সনাক্ত করতে পারি যদি আমরা সক্রিয় অবস্থায় প্রাপ্ত বিজ্ঞপ্তিতে ট্যাপ করি
মায়াঙ্ক জৈন

13

দ্রুত জন্য:

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {
    PFPush.handlePush(userInfo)

    if application.applicationState == UIApplicationState.Inactive || application.applicationState == UIApplicationState.Background {
        //opened from a push notification when the app was in the background

    }

}

4

হ্যাঁ, আপনি অ্যাপ্লিকেশনটিতে এই পদ্ধতিটি সনাক্ত করতে পারেন :

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
      /* your Code*/
}

স্থানীয় বিজ্ঞপ্তির জন্য:

- (void)application:(UIApplication *)application
didReceiveLocalNotification:(UILocalNotification *)notification
{
         /* your Code*/
}

1
অ্যাপটি চলমান না থাকলে এই পদ্ধতিটি বলা হয় না। এখানে কী জিজ্ঞাসা করা হয়েছে
ফিজিট্জ

আমার সমস্যাটি বিজ্ঞপ্তিটি পরিচালনা করছে না, বরং আপনি যখন ব্যানারটি ক্লিক করেন (অ্যাপটি ব্যাকগ্রাউন্ডে থাকে তখন) এটি খোলার হয়েছিল কিনা তা জানার পরিবর্তে।
jooo

3

যদি কেউ দ্রুত 3 এ উত্তর চান

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any]) {
    switch application.applicationState {
    case .active:
        //app is currently active, can update badges count here
        break
    case .inactive:
        //app is transitioning from background to foreground (user taps notification), do what you need when user taps here
        break
    case .background:
        //app is in background, if content-available key of your notification is set to 1, poll to your backend to retrieve data and update your interface here
        break
    default:
        break
    }
}

তবে অ্যাপ্লিকেশনটি বন্ধ হয়ে গেলে অ্যাপ্লিকেশনটি পুশ নোটিফিকেশনটি ট্যাপ করে খোলা আছে কিনা তা কীভাবে জানবেন
user3804063

1
কেউ যখন ধাক্কা দিয়ে আলতো চাপছেন, অ্যাপটি খোলা থাকবে, এটি বন্ধ করা হয়েছিল বা না হোক তা বিবেচ্য। এবং .অ্যাক্টিভ কেস কল করছে
হামিদ শাহস্বরী

1
অ্যাপটি ধাক্কা দিয়ে
টোকা

স্থানীয় বিজ্ঞপ্তিগুলি সম্পর্কে কীভাবে?
আমির শাবানী

3

জামারিন ব্যবহারকারীদের জন্য এটি পোস্ট করা।

অ্যাপটি একটি পুশ নোটিফিকেশনের মাধ্যমে চালু করা হয়েছে কিনা তা সনাক্ত করার কীটি হ'ল AppDelegate.FinishedLaunching(UIApplication app, NSDictionary options)পদ্ধতি এবং বিকল্পগুলি যে অভিধানটি পাস করেছে।

যদি এটি একটি স্থানীয় প্রজ্ঞাপন এর অপশন অভিধান তাতে এই কী হবে: UIApplication.LaunchOptionsLocalNotificationKey

এটি যদি দূরবর্তী বিজ্ঞপ্তি হয় তবে তা হবে UIApplication.LaunchOptionsRemoteNotificationKey

যখন চাবিকাঠি LaunchOptionsLocalNotificationKey, বস্তুর ধরনের হয় UILocalNotification। তারপরে আপনি বিজ্ঞপ্তিটি দেখতে পারেন এবং এটি নির্দিষ্ট কোন বিজ্ঞপ্তি তা নির্ধারণ করতে পারেন।

প্রো-টিপ: UILocalNotificationএটিতে কোনও সনাক্তকারী নেই, একইভাবে রয়েছে UNNotificationRequest। একটি অনুরোধ সম্বলিত ইউজারআইনফোতে একটি অভিধান কী রাখুন যাতে পরীক্ষার সময় UILocalNotification, আপনার কাছে একটি নির্দিষ্ট অনুরোধ থাকবে যা কিছু যুক্তি ভিত্তিতে ভিত্তি করে পাওয়া যায়।

আমি দেখেছি যে এমনকি iOS এ 10 টির বেশি ডিভাইস যখন ব্যবহার করে অবস্থান বিজ্ঞপ্তিগুলি তৈরি UNUserNotificationCenter'র AddNotificationRequest& UNMutableNotificationContent, যে যখন অ্যাপ্লিকেশানটি (আমি এটা হত্যা) চলছে না, এবং, বিজ্ঞপ্তি কেন্দ্র প্রজ্ঞাপন ট্যাপ করে চালু অভিধান এখনো রয়েছে সেটা UILocalNotificaitonঅবজেক্ট।

এর অর্থ হল যে আমার কোড যা বিজ্ঞপ্তি ভিত্তিক লঞ্চটি পরীক্ষা করে তা আইওএস 8 এবং আইওএস 10+ ডিভাইসগুলিতে কাজ করবে

public override bool FinishedLaunching (UIApplication app, NSDictionary options)
{
    _logger.InfoFormat("FinishedLaunching");

    if(options != null)
    {
        if (options.ContainsKey(UIApplication.LaunchOptionsLocalNotificationKey))
        {
            //was started by tapping a local notification when app wasn't previously running.
            //works if using UNUserNotificationCenter.Current.AddNotificationRequest OR UIApplication.SharedApplication.PresentLocalNotificationNow);

            var localNotification = options[UIApplication.LaunchOptionsLocalNotificationKey] as UILocalNotification;

            //I would recommended a key such as this :
            var requestId = localNotification.UserInfo["RequestId"].ToString();
        }               
    }
    return true;
}

2

সরাসরি ডকুমেন্টেশন থেকে

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo:nil

যদি অ্যাপটি চলমান থাকে এবং কোনও দূরবর্তী বিজ্ঞপ্তি পায় তবে অ্যাপটি বিজ্ঞপ্তিটি প্রক্রিয়া করার জন্য এই পদ্ধতিটি কল করে।

আপনার এই পদ্ধতির প্রয়োগের উপযুক্ত পদক্ষেপ গ্রহণের জন্য বিজ্ঞপ্তিটি ব্যবহার করা উচিত।

এবং একটু পরে

কোনও পুশ বিজ্ঞপ্তি এলে অ্যাপটি চলমান না থাকলে, পদ্ধতিটি অ্যাপ্লিকেশনটি চালু করে এবং লঞ্চ অপশন অভিধানে যথাযথ তথ্য সরবরাহ করে।

অ্যাপটি এই ধাক্কা বিজ্ঞপ্তিটি হ্যান্ডেল করতে এই পদ্ধতিটিকে কল করে না।

পরিবর্তে, আপনার বাস্তবায়ন

application:willFinishLaunchingWithOptions:

অথবা

application:didFinishLaunchingWithOptions:

পদ্ধতিতে পুশ নোটিফিকেশন পেডলোড ডেটা পাওয়া এবং যথাযথভাবে প্রতিক্রিয়া জানানো দরকার।


2

আমি এটিকে আরও নিখুঁতভাবে দেখতে এবং অন্য সমস্ত রাজ্যের বিবেচনা করার জন্য নিজের ব্যবহারের জন্য তৈরি করা একটি রাজ্য চার্ট দিয়ে শুরু করব: https://docs.google.com/spreadsheets/d/e/2PACX-1vSdKOgo_F1TZwGJBAED4C_7cml0bEATqeL3P9UKpBlZ3Zgzozizgzizgz3zgzizb ? gid = 0 & একক = সত্য

এই চার্টটি ব্যবহার করে, আমরা দেখতে পেলাম একটি শক্তিশালী বিজ্ঞপ্তি হ্যান্ডলিং সিস্টেমটি বিকাশ করার জন্য যা আসলে সম্ভব সমস্ত ব্যবহারের ক্ষেত্রে কাজ করে।

সম্পূর্ণ সমাধান ↓

  • দোকানের প্রজ্ঞাপন মধ্যে পে লোড didReceiveRemoteNotification
  • অ্যাপ্লিকেশন উইলএন্টারফোরগ্রাউন্ড এবং ডিফিনিশলঞ্চিং উইথঅপশনগুলিতে সঞ্চিত বিজ্ঞপ্তি সাফ করুন
  • ক্ষেত্রে যেখানে নিয়ন্ত্রণ কেন্দ্র / বিজ্ঞপ্তি কেন্দ্র টানা সাজসরঁজাম, আপনি একটি ফ্ল্যাগ ব্যবহার করতে পারে willResignActiveCalled এবং এটি সেট মিথ্যা প্রথমে সেট এই সত্য মধ্যে applicationWillResignActive পদ্ধতি,
  • ইন didReceiveRemoteNotification পদ্ধতি, বিজ্ঞপ্তি (userInfo) শুধুমাত্র যখন willResignActiveCalled মিথ্যা সংরক্ষণ।
  • রিসেট করুন মিথ্যাতে willResignActiveCalled মধ্যে applicationDidEnterBackground এবং applicationDidBecomeActive পদ্ধতি।

দ্রষ্টব্য: এরিকের উত্তর সম্পর্কে মন্তব্যে অনুরূপ একটি উত্তর প্রস্তাব করা হয়েছে, তবে, রাজ্য পত্রকটি আমার অ্যাপ্লিকেশনটিতে যেমন হয়েছিল তেমন সম্ভাব্য সমস্ত পরিস্থিতি সন্ধান করতে সহায়তা করে।

দয়া করে নীচের সম্পূর্ণ কোডটি সন্ধান করুন এবং যদি কোনও নির্দিষ্ট কেস পরিচালনা না করা হয় তবে নীচে মন্তব্য করুন:

AppDelegate

class AppDelegate: UIResponder, UIApplicationDelegate {
  private var willResignActiveCalled = false

  func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    NotificationUtils.shared.notification = nil
    return true
  }
  func applicationWillResignActive(_ application: UIApplication) {
    willResignActiveCalled = true
  }
  func applicationDidEnterBackground(_ application: UIApplication) {
    willResignActiveCalled = false
  }
  func applicationWillEnterForeground(_ application: UIApplication) {
    NotificationUtils.shared.notification = nil
  }
  func applicationDidBecomeActive(_ application: UIApplication) {
    willResignActiveCalled = false
    NotificationUtils.shared.performActionOnNotification()
  }
  func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
    if !willResignActiveCalled { // Check if app is in inactive by app switcher, control center, or notification center
      NotificationUtils.shared.handleNotification(userInfo: userInfo)
    }
  }
}

বিজ্ঞপ্তি ইউটিস: আপনি এখানে আপনার সমস্ত কোড অ্যাপ্লিকেশনের বিভিন্ন অংশে নেভিগেট করতে, ডাটাবেসগুলি পরিচালনা করতে (কোরেডাটা / রিয়েলম) লিখতে এবং কোনও বিজ্ঞপ্তি পাওয়ার পরে সম্পন্ন হওয়া সমস্ত অন্যান্য জিনিস করতে পারেন।

   class NotificationUtils {
  static let shared = NotificationUtils()
  private init() {}

  var notification : [AnyHashable: Any]?

  func handleNotification(userInfo : [AnyHashable: Any]){
    if UIApplication.shared.applicationState == UIApplicationState.active {
      self.notification = userInfo //Save Payload
      //Show inApp Alert/Banner/Action etc
      // perform immediate action on notification
    }
    else if UIApplication.shared.applicationState == UIApplicationState.inactive{
      self.notification = userInfo
    }
    else if UIApplication.shared.applicationState == UIApplicationState.background{
      //Process notification in background,
      // Update badges, save some data received from notification payload in Databases (CoreData/Realm)
    }
  }

  func performActionOnNotification(){
    // Do all the stuffs like navigating to ViewControllers, updating Badges etc
    defer {
      notification = nil
    }
  }
}

এটি উত্তর হিসাবে ভাল মন্তব্য হিসাবে এটি করা।
ম্যাডি

পরামর্শের জন্য @Maddy ধন্যবাদ, সঙ্গে সব বিস্তারিত উত্তর Updated
চেতন আনন্দ

1
func application(_ application: UIApplication, didReceiveRemoteNotification data: [AnyHashable : Any]) {
    print("Push notification received: \(data)")

    if let info = data["aps"] as? Dictionary<String, AnyObject> {
        let alertMsg = info["alert"] as! String
        print(alertMsg)
        switch application.applicationState {
        case .active:
            print("do stuff in case App is active")
        case .background:
            print("do stuff in case App is in background")
           // navigateToChatDetailViewControler(pushdata: data)
        case .inactive:
            print("do stuff in case App is inactive")
            // navigateToChatDetailViewControler(pushdata: data)
        }
    }
}

1

কেবলমাত্র একটি নির্ভরযোগ্য উপায় রয়েছে এবং এটি কেবল আইওএস 10+ এর জন্য কাজ করে :

ব্যবহার UNUserNotificationCenterবাস্তবায়ন UNUserNotificationCenterDelegateপদ্ধতি:

- (void) userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)(void))completionHandler {

    //Here you can get your original push if you need to
    NSDictionary* pusDict = response.notification.request.content.userInfo;

    if ([response.actionIdentifier isEqualToString: UNNotificationDefaultActionIdentifier]) {
        //User tapped the notification
    } else if ([response.actionIdentifier isEqualToString: UNNotificationDismissActionIdentifier]) {
        //User dismissed the notification 
    } else if ([response.actionIdentifier isEqualToString: MYCustomActionId]) {
        //User chose my custom defined action
    }
    ...
}

0

তুমি ব্যবহার করতে পার:

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo

রিমোট পুশ বিজ্ঞপ্তিগুলি হ্যান্ডেল করতে।

এখানে ডকুমেন্টেশন চেক করুন



0
     // shanegao's code in Swift 2.0
     func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject])
    {
            if ( application.applicationState == UIApplicationState.Inactive || application.applicationState == UIApplicationState.Background ){
                    print("opened from a push notification when the app was on background")
            }else{
                    print("opened from a push notification when the app was on foreground")
            }
    }

তবে যদি অ্যাপটি বন্ধ হয়ে যায় (সমাপ্ত)। Twitter বা ইনস্টাগ্রাম এর মতো এটা একরকম এটি সনাক্ত এবং যদি সময়ও অ্যাপ্লিকেশনটি বন্ধ করা হয় এটা নতুন পোস্ট বা ছবি বা আপনার প্রোফাইল ইত্যাদি .. আপনার পুননির্দেশনা
Tarvo Mäesepp

0

এই প্রশ্নটির সাথে সমস্যাটি হ'ল অ্যাপটি "খোলার" ভাল সংজ্ঞাযুক্ত নয় isn't একটি অ্যাপ্লিকেশন হয় না চালিত অবস্থা থেকে শীতল-চালু হয়, বা এটি একটি নিষ্ক্রিয় অবস্থা থেকে পুনরায় সক্রিয় করা হয় (উদাহরণস্বরূপ অন্য অ্যাপ্লিকেশন থেকে এটিতে ফিরে যাওয়া থেকে)। এই সমস্ত সম্ভাব্য রাষ্ট্রগুলির মধ্যে পার্থক্য করার জন্য আমার সমাধানটি এখানে রয়েছে:

typedef NS_ENUM(NSInteger, MXAppState) {
    MXAppStateActive = 0,
    MXAppStateReactivated = 1,
    MXAppStateLaunched = 2
};

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // ... your custom launch stuff
    [[MXDefaults instance] setDateOfLastLaunch:[NSDate date]];
    // ... more custom launch stuff
}

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
    // Through a lot of trial and error (by showing alerts), I can confirm that on iOS 10
    // this method is only called when the app has been launched from a push notification
    // or when the app is already in the Active state.  When you receive a push
    // and then launch the app from the icon or apps view, this method is _not_ called.
    // So with 99% confidence, it means this method is called in one of the 3 mutually exclusive cases
    //    1) we are active in the foreground, no action was taken by the user
    //    2) we were 'launched' from an inactive state (so we may already be in the main section) by a tap
    //       on a push notification
    //    3) we were truly launched from a not running state by a tap on a push notification
    // Beware that cases (2) and (3) may both show UIApplicationStateInactive and cant be easily distinguished.
    // We check the last launch date to distinguish (2) and (3).

    MXAppState appState = [self mxAppStateFromApplicationState:[application applicationState]];
    //... your app's logic
}

- (MXAppState)mxAppStateFromApplicationState:(UIApplicationState)state {
    if (state == UIApplicationStateActive) {
        return MXAppStateActive;
    } else {
        NSDate* lastLaunchDate = [[MXDefaults instance] dateOfLastLaunch];
        if (lastLaunchDate && [[NSDate date] timeIntervalSinceDate:lastLaunchDate] < 0.5f) {
            return MXAppStateLaunched;
        } else {
            return MXAppStateReactivated;
        }
    }
    return MXAppStateActive;
}

এবং এর MXDefaultsজন্য কেবল সামান্য মোড়ক NSUserDefaults


0

জন্য swift

 func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]){

    ++notificationNumber
    application.applicationIconBadgeNumber =  notificationNumber;

    if let aps = userInfo["aps"] as? NSDictionary {

        var message = aps["alert"]
        println("my messages : \(message)")

    }
}

0

এক্সকোড 10 সুইফট 4.2

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {

    let state : UIApplicationState = application.applicationState
    if (state == .Inactive || state == .Background) {
        // coming from background
    } else {
        // App is running in foreground
    }
}

0

আইওএস 10+ এর জন্য আপনি অ্যাপটির অবস্থা নির্বিশেষে আপনার বিজ্ঞপ্তিটি কখন ক্লিক করা হবে তা জানার জন্য এই পদ্ধতিটি ব্যবহার করতে পারেন।

func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {

    //Notification clicked
    completionHandler()
}

0

M.Othman এর উত্তর অ্যাপ্লিকেশনগুলির থাকে না জন্য সঠিক দৃশ্য প্রতিনিধি জন্য সিন প্রতিনিধি অ্যাপস এই আমার জন্য কাজ আইওএস 13

এখানে কোডটির সাথে সংযোগ স্থাপনের জন্য কোডটি লিখতে হবে

if connectionOptions.notificationResponse == nil { 
//Not opened from push notification
} else {
  //Opened from push notification
}

ফিনিশল্যাঞ্চিং উইথঅপশনগুলি পূর্ববর্তী সংস্করণগুলিকে সমর্থন করার জন্য অ্যাপ প্রতিনিধিদের কোড

let notification = launchOptions?[UIApplication.LaunchOptionsKey.remoteNotification]
        if (notification != nil) {

            //Launched from push notification
        } else {

            //Launch from other source
        }

-1

সুইফ্ট ব্যবহারকারীদের জন্য:

আপনি যদি ধাক্কা বা এমন কিছু থেকে খোলার ক্ষেত্রে কোনও ভিন্ন পৃষ্ঠা চালু করতে চান তবে আপনার এটির didFinishLaunchingWithOptionsমতো চেক করা দরকার :

let directVc: directVC! = directVC(nibName:"directVC", bundle: nil)
let pushVc: pushVC! = pushVC(nibName:"pushVC", bundle: nil)

if let remoteNotification = launchOptions?[UIApplicationLaunchOptionsRemoteNotificationKey] as? NSDictionary {
     self.navigationController = UINavigationController(rootViewController: pushVc!)
} else {
     self.navigationController = UINavigationController(rootViewController: directVc!)
}
self.window!.rootViewController = self.navigationController


1
AppDelegate.h ফাইলে একটি নেভিগেশন কন্ট্রোলার তৈরি করুন। এটি ব্যবহার করছি এবং এটি কাজ করে!
এএএ

-1

সুইফটে:

আমি পুশ বিজ্ঞপ্তিগুলি (পটভূমি আনার সাথে) চালাচ্ছি। যখন আমার অ্যাপ্লিকেশনটি ব্যাকগ্রাউন্ডে রয়েছে এবং আমি একটি ধাক্কা বিজ্ঞপ্তি পেয়েছি, আমি খুঁজে পেয়েছি যে অ্যাপ্লিকেশনটিতে ডিগ্রিপেট রিমোটনোটিকেশন দুটিবার কল করা হবে; যখন বিজ্ঞপ্তিটি প্রাপ্ত হয় তার জন্য আবার যখন ব্যবহারকারী বিজ্ঞপ্তি সতর্কতাতে ক্লিক করে।

বিজ্ঞপ্তি সতর্কতাটি ক্লিক করা হয়েছে কিনা তা সনাক্ত করতে, অ্যাপ্লিকেশনটিতে অ্যাপ্লিকেশন স্টেটের কাঁচা মান == 1 এর অভ্যন্তরেআরসিপ্রাইম রিমোটনোটিকেশন কিনা তা পরীক্ষা করুন।

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject: AnyObject]) {
    // If not from alert click applicationState(1)
    if (application.applicationState.rawValue != 1) {
        // Run your code here
    }
}

আশা করি এটা কাজে লাগবে.


-1

অ্যাপটি যখন শানেগাও হিসাবে পটভূমিতে থাকে আপনি ব্যবহার করতে পারেন

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    if ( application.applicationState == UIApplicationStateInactive || application.applicationState == UIApplicationStateBackground  )
    {
         //opened from a push notification when the app was on background
    }
}

তবে আপনি যদি অ্যাপ্লিকেশনটি চালু করতে চান এবং অ্যাপটি বন্ধ হয়ে যায় এবং আপনি যখন আপনার অ্যাপ্লিকেশনটি ডিবাগ করতে চান আপনি সম্পাদনা স্কিমে যেতে পারেন এবং বাম মেনুতে রান নির্বাচন করুন এবং তারপরে লঞ্চে এক্সিকিউটেবলের জন্য অপেক্ষা করুন নির্বাচন করুন এবং তারপরে আপনি যখন অ্যাপ্লিকেশন লঞ্চ করবেন ধাক্কা বিজ্ঞপ্তি ক্লিক করুন

স্কিম সম্পাদনা করুন> চালান> এক্সিকিউটেবল চালু হওয়ার জন্য অপেক্ষা করুন

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