অগ্রভাগ আইওএস এ থাকা অবস্থায় পুশ বিজ্ঞপ্তি পান


189

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

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

কল করা হচ্ছে কিন্তু বিজ্ঞপ্তিটি বিজ্ঞপ্তি স্ক্রিনে প্রদর্শিত হবে না।

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


35
অ্যাপল বলেছেন : আপনার অ্যাপ্লিকেশনটি অগ্রভাগে চলাকালীন আপনি যদি স্থানীয় বা দূরবর্তী বিজ্ঞপ্তিগুলি পান তবে আপনি অ্যাপ্লিকেশন-নির্দিষ্ট উপায়ে আপনার ব্যবহারকারীদের কাছে তথ্যটি প্রেরণের জন্য দায়বদ্ধ।
লরি লেহমিজোকি

2
কিছু আপ-টু-ডেট (oct "16) আপেল লিঙ্কগুলি: এখানে , সেখানে এবং সেখানে
আজমেউক

1
আইওএস 9.3 এবং এর চেয়ে কম জন্য পুশ নোটিফিকেশনের অগ্রভাগ সমর্থন নয়?
অনুরাগ শর্মা

লৌরি লেহমিজোকির লিঙ্ক? অফিসিয়াল ওয়েবসাইটে আমি এটি খুঁজে
পাইনি

1
আয়নিক ক্ষেত্রেও আমি একই সমস্যার মুখোমুখি ...
সাইয়েদ মোহাম্মদ আলী

উত্তর:


204

অ্যাপগ্রাউন্ডে থাকা অবস্থায় ব্যানার বার্তা প্রদর্শনের জন্য, নিম্নলিখিত পদ্ধতিটি ব্যবহার করুন use

আইওএস 10, সুইফট 3/4 :

// This method will be called when app received push notifications in foreground
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) 
{
    completionHandler([.alert, .badge, .sound])
}

আইওএস 10, সুইফট 2.3 :

@available(iOS 10.0, *)
func userNotificationCenter(center: UNUserNotificationCenter, willPresentNotification notification: UNNotification, withCompletionHandler completionHandler: (UNNotificationPresentationOptions) -> Void)
{
    //Handle the notification
    completionHandler(
       [UNNotificationPresentationOptions.Alert,
        UNNotificationPresentationOptions.Sound,
        UNNotificationPresentationOptions.Badge])
}

বিজ্ঞপ্তি কেন্দ্রের প্রতিনিধি হিসাবে আপনাকে অবশ্যই আপনার অ্যাপের প্রতিনিধিটিকে নিবন্ধভুক্ত করতে হবে:

import UserNotifications

// snip!

class AppDelegate : UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate

// snip!

   func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

      // set the delegate in didFinishLaunchingWithOptions
      UNUserNotificationCenter.current().delegate = self
      ...
   }

এই পদ্ধতিটি কখন বলা হয়?
উমা মাধবী

দয়া করে আমাকে গাইড করুন যখন আমার অ্যাপের পটভূমি বা অগ্রভাগের সময় উপরে থেকে বিজ্ঞপ্তি প্রদর্শন করছি। 2 সপ্তাহের পরে আমি পুশ বিজ্ঞপ্তিগুলি নিয়ে কাজ করছি I
উমা মাধবী

@ উমামাধবী আপনি কি পুশ বিজ্ঞপ্তিগুলি পেতে পারেন?
চেঙ্গসাম

21
অ্যাপের প্রতিনিধি হিসাবে বিজ্ঞপ্তি কেন্দ্রের প্রতিনিধি সেট করতে ভুলবেন না: UNUserNotificationsCenter.current().delegate = selfআবেদনে ফিনিশ লঞ্চিং উইথঅপশনস
অচিন্ত্য অশোক

2
যারা এখনও লড়াই করছেন, তাদের ইউএন ইউজার নোটিকেশনকেন্দ্র কেন্দ্রের পূর্বে ইউএন ব্যবহারকারী নোটিকেশনসেন্টার 'এর' সাথে নেই
রাজ

58

নীচের কোডটি আপনার জন্য কাজ করবে:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo  {
    application.applicationIconBadgeNumber = 0;             
    //self.textView.text = [userInfo description];
    // We can determine whether an application is launched as a result of the user tapping the action
    // button or whether the notification was delivered to the already-running application by examining
    // the application state.

    if (application.applicationState == UIApplicationStateActive) {                
        // Nothing to do if applicationState is Inactive, the iOS already displayed an alert view.                
        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Did receive a Remote Notification" message:[NSString stringWithFormat:@"Your App name received this notification while it was running:\n%@",[[userInfo objectForKey:@"aps"] objectForKey:@"alert"]]delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
        [alertView show];          
    }    
}

এইটা কাজ করে. এটি কী করে সে সম্পর্কে আরও কিছু তথ্য; অ্যাপ্লিকেশনটি অগ্রভাগে থাকা অবস্থায়, একটি নেটিভ ইউআই সতর্কতা বাক্সটি এর মধ্যে বিজ্ঞপ্তি পাঠ্যের সাথে উপস্থিত হয় (এটি titleকিছুটা বড় বড় সাহসী পাঠ্য এবং এর messageঅধীনে ছোট পাঠ্য dism খারিজ করার জন্য 'ঠিক আছে' বোতামটি নীচে রয়েছে)। অপশন অ্যাপ্লিকেশন আইকন ব্যাজ নম্বরে সেট করা হচ্ছে হ'ল স্প্রিংবোর্ডে অ্যাপ্লিকেশন আইকনের উপরে প্রদর্শিত নম্বরটি লুকানো (উদাহরণস্বরূপ কোনও মেল অ্যাপে অপঠিত বার্তাগুলির স্বাক্ষরকরণ)। এই উদাহরণে, আমি জানি না যে সেই বিকল্পটি এমনকি প্রয়োজন কিনা।
জ্বিন

এটি কি UNnotifications এবং UILocalNotifications উভয়ের জন্য কাজ করে?
ব্যবহারকারী 6631314

38

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

গিটহাবের লিঙ্ক: এজিপিউশনোট

ব্যবহারটি মূলত অন-লাইনারে:

[AGPushNoteView showWithNotificationMessage:@"John Doe sent you a message!"];

এবং এটি iOS7 এ দেখে মনে হচ্ছে (iOS6 এর একটি iOS6 চেহারা এবং অনুভূতি রয়েছে ...)

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


1
: এখন সুইফট মধ্যে reimagined github.com/charliewilliams/CWNotificationBanner (আমার দ্বারা)
buildsucceeded

ভাল , এটি দরকারী হবে।
夜 之 星辰

36

উদ্দেশ্য গ

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

জন্য iOS 10আমাদের willPresentNotificationশো নোটিফিকেশন ব্যানার জন্য সমন্বিত পদ্ধতি প্রয়োজন foreground

অগ্রভাগ মোডে অ্যাপ্লিকেশন (সক্রিয়)

- (void)userNotificationCenter:(UNUserNotificationCenter* )center willPresentNotification:(UNNotification* )notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler {
    NSLog( @“Here handle push notification in foreground" ); 
    //For notification Banner - when app in foreground

    completionHandler(UNNotificationPresentationOptionAlert);

    // Print Notification info
    NSLog(@"Userinfo %@",notification.request.content.userInfo);
}

1
কেবল কোডটি অনুলিপি করুন এবং UNUserNotificationsCenterDelegate প্রোটোকল ব্যবহার করতে ভুলবেন না।
নিক কোভ

আমি যদি এই বিজ্ঞপ্তির পরিবর্তে সতর্কতা দেখাতে চাই?
মিহির ওজা

@ মিহিরোজা আপনি কি ইউআইএলআরল্টকন্ট্রোলার চান?
অশ্বিনী চৌগালে

আমি জানি তবে অ্যাপ সক্রিয় থাকাকালীন আমি বিজ্ঞপ্তি পপআপ চাই না। আমি আমার অ্যাপে কেবল সতর্কতা চাই।
মিহির ওজা

24

যদি অগ্রভাগে অ্যাপ্লিকেশনটি চলমান থাকে তবে আইওএস কোনও বিজ্ঞপ্তি ব্যানার / সতর্কতা প্রদর্শন করবে না। এটা নকশা দ্বারা। তবে আমরা UILocalNotificationনিম্নলিখিত হিসাবে ব্যবহার করে এটি অর্জন করতে পারি

  • দূরবর্তী
    বিজ্ঞপ্তি পাওয়ার জন্য অ্যাপ্লিকেশনটি সক্রিয় অবস্থায় রয়েছে কিনা তা পরীক্ষা করুন । যদি সক্রিয় অবস্থায় থাকে তবে একটি ইউআইএলোকালনোটিকেশন।

    if (application.applicationState == UIApplicationStateActive ) {
    
        UILocalNotification *localNotification = [[UILocalNotification alloc] init];
        localNotification.userInfo = userInfo;
        localNotification.soundName = UILocalNotificationDefaultSoundName;
        localNotification.alertBody = message;
        localNotification.fireDate = [NSDate date];
        [[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
    }

স্যুইফ্ট:

if application.applicationState == .active {
    var localNotification = UILocalNotification()
    localNotification.userInfo = userInfo
    localNotification.soundName = UILocalNotificationDefaultSoundName
    localNotification.alertBody = message
    localNotification.fireDate = Date()
    UIApplication.shared.scheduleLocalNotification(localNotification)
}

86
আমি মনে করি না এটি সাহায্য করবে। স্থানীয় এবং দূরবর্তী বিজ্ঞপ্তিগুলির সাথে একই আচরণ করা হয় এবং ফলস্বরূপ যখন এই স্থানীয় বিজ্ঞপ্তিটি বন্ধ হয়ে যায় এবং অ্যাপ্লিকেশনটি চলমান থাকে তবে ব্যাজ / ব্যানার বা শব্দটি প্রদর্শিত / প্লে করা হবে না।
আরপিএম

3
এটি আইওএস বিজ্ঞপ্তি কেন্দ্রে একটি এন্ট্রি ছাড়বে
অ্যাব'ইনটিও

3
তবে একটি ধাক্কা বিজ্ঞপ্তি এলে আমি কোনও স্থানীয় বিজ্ঞপ্তি চালু করব না। পরিবর্তে @ রিক 7777 উল্লিখিত: আমি একটি সতর্কতা বা কিছু টোস্টার দেখানো এর মতোই অনুরূপ আচরণ শুরু করব। আমার ধারণা অপারেটিং সিস্টেম আমাকে পরিচালনা করতে বলছে এমন কিছু জন্য আমাকে আবার অপারেটিং সিস্টেমের মধ্য দিয়ে যেতে হবে না।
ফ্যাবিও অলিভিরা

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

18
এটি আসলে কাজ করে না। ইউআইওলোকলনোটিকেশন ডক্স থেকে:If the app is foremost and visible when the system delivers the notification, the app delegate’s application:didReceiveLocalNotification: is called to process the notification. Use the information in the provided UILocalNotification object to decide what action to take. The system does not display any alerts, badge the app’s icon, or play any sounds when the app is already frontmost.
ক্রিস মোর্স

15

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


1
তবে আইওএস মেল অ্যাপ্লিকেশনটিতে তারা এটি করেছে, আপনি নতুন নোটিফিকেশন ব্যানার / সতর্কতা পাবেন মেইল ​​অ্যাপ্লিকেশনটিতে
পূর্বের মুহূর্তে

3
@ আব'নিতিও আমি নিশ্চিতভাবে জানি না, তবে আইওএসে সমস্ত অ্যাপ্লিকেশন সমানভাবে তৈরি হয় না। আমি মনে করি স্টক মেল অ্যাপটি এমন এক ধরণের প্রাইভেট এপিআই ব্যবহার করছে যা পাবলিক এসডিকে উপলভ্য নয়। অথবা হতে পারে নোটিফিকেশন কোড অ্যাপলের মেল অ্যাপ্লিকেশন আইডি দিয়ে ব্যতিক্রম করছে।
ড্যানিয়েল মার্টন

1
কি?? আমি প্রায় বীভৎস রাগ আক্রমণ করতে চলেছি।
জোশ

@ ড্যানিয়েলমার্টন আপনি কি আমাকে বলতে পারবেন যে আমি কীভাবে আইওএস 8.0-এ পূর্বের রাজ্যে একটি বিজ্ঞপ্তি পাব
দিলীপ তিওয়ারি

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

12

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

আপনার অ্যাপ্লিকেশনটি অগ্রভাগে থাকা অবস্থায় পুশ নোটিফিকেশন দেখাতে -

পদক্ষেপ 1: অ্যাপডেলিগেট ক্লাসে প্রতিনিধি UNUserNotificationsCenterDelegate যুক্ত করুন।

class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate {

পদক্ষেপ 2: UNUserNotificationsCenter প্রতিনিধি সেট করুন

let notificationCenter = UNUserNotificationCenter.current()
notificationCenter.delegate = self

পদক্ষেপ 3: এই পদক্ষেপটি আপনার অ্যাপ্লিকেশনটির সম্মুখভাগে থাকা অবস্থায়ও আপনার অ্যাপ্লিকেশনটিকে পুশ বিজ্ঞপ্তি দেখানোর অনুমতি দেবে

func userNotificationCenter(_ center: UNUserNotificationCenter,
                                willPresent notification: UNNotification,
                                withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
        completionHandler([.alert, .sound])

    }

পদক্ষেপ 4: এই পদক্ষেপটি .চ্ছিক । আপনার অ্যাপটি অগ্রভাগে রয়েছে কিনা এবং তা যদি অগ্রভাগে হয় তা পরীক্ষা করুন তবে স্থানীয় পুশনোটিকেশনটি দেখান।

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

        let state : UIApplicationState = application.applicationState
        if (state == .inactive || state == .background) {
            // go to screen relevant to Notification content
            print("background")
        } else {
            // App is in UIApplicationStateActive (running in foreground)
            print("foreground")
            showLocalNotification()
        }
    }

স্থানীয় বিজ্ঞপ্তি ফাংশন -

fileprivate func showLocalNotification() {

        //creating the notification content
        let content = UNMutableNotificationContent()

        //adding title, subtitle, body and badge
        content.title = "App Update"
        //content.subtitle = "local notification"
        content.body = "New version of app update is available."
        //content.badge = 1
        content.sound = UNNotificationSound.default()

        //getting the notification trigger
        //it will be called after 5 seconds
        let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 1, repeats: false)

        //getting the notification request
        let request = UNNotificationRequest(identifier: "SimplifiedIOSNotification", content: content, trigger: trigger)

        //adding the notification to notification center
        notificationCenter.add(request, withCompletionHandler: nil)
    }

1
এটি কোনও থ্রেডের সমস্ত উত্তর পড়ার প্রয়োজনীয়তার একটি দুর্দান্ত উদাহরণ। পূর্ববর্তী থ্রেডগুলিতে প্রতিনিধিটির চেয়ে পদ্ধতিটি উল্লেখ করা হয় এবং শেষ পর্যন্ত এটি আপনাকে তৈরি করতে হবে এমন তিনটি পদক্ষেপ। আপনাকে প্রশান্ত একটি সম্পূর্ণ উত্তরের জন্য ধন্যবাদ!
ব্যবহারকারী 3069232

এটি আপনাকে সাহায্য করেছে তা জেনে রাখা ভাল। শুভ কোডিং
প্রশান্ত গায়কওয়াদ

10

অ্যাপলের ডকুমেন্টেশন অনুসারে , অ্যাপ্লিকেশন চলাকালীন হ্যাঁ আপনি বিজ্ঞপ্তি প্রদর্শন করতে পারেনএখানে চিত্র বর্ণনা লিখুন


অ্যাপের প্রতিনিধি বা একটি নির্দিষ্ট ক্লাসে আমি কোথায় সেই ফাংশনটি লিখতে পারি ??
আইওএস বিকাশকারী

আমি যদি এই লেখায় মেথড লিখতে চাই তবে কি লোড হয়েছে ??
আইওএস বিকাশকারী

আপনি যে কোনও জায়গায় লিখতে পারেন তবে শর্তটি এটি UNUserNotificationCenterDelegateপ্রোটোকলের সাথে সঙ্গতিপূর্ণ হওয়া উচিত
স্পেটাল

আপনি লিখতে পারবেন নাviewDidLoad
স্পেটাল

1
আমি আপনাকে extension AppDelegate: UNUserNotificationCenterDelegate
অ্যাপডেলিগেট

9

আপনি নিজের বিজ্ঞপ্তি তৈরি করতে পারেন যা ব্যানার সতর্কতার অনুকরণ করে।

একটি উপায় হ'ল একটি কাস্টম ইউভিউউ তৈরি করা যা ব্যানারটির মতো লাগে এবং প্রাণবন্ত করতে পারে এবং ছোঁয়ায় সাড়া দিতে পারে। এটি মনে রেখে আপনি আরও কার্যকারিতা সহ আরও ভাল ব্যানার তৈরি করতে পারেন।

অথবা আপনি এমন একটি এপিআই সন্ধান করতে পারেন যা এটি আপনার জন্য করে এবং এগুলি আপনার প্রকল্পে পডফায়াল হিসাবে যুক্ত করতে পারে।

এখানে আমি ব্যবহার করেছি এমন একটি দম্পতি রয়েছে:

https://github.com/terryworona/TWMessageBarManager

https://github.com/toursprung/TSMessages


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

1
TWMessageBarManagerএটি সিঙ্গলটন ডিজাইনের প্যাটার্নটি ব্যবহার করার কারণে এপ্রেজিলেটের মাধ্যমে সহজেই অনুরোধ করা যেতে পারে এবং ব্যবহার করা যেতে পারে। লিঙ্কগুলির জন্য ধন্যবাদ।
জয় মায়ু

8

সক্রিয় অবস্থায় অ্যাপ্লিকেশন (পূর্বাভাস বা খোলা) থাকা অবস্থায় পুশ বিজ্ঞপ্তি পাওয়ার কোড এখানে। UNUserNotificationsCenter ডকুমেন্টেশন

@available(iOS 10.0, *)
func userNotificationCenter(center: UNUserNotificationCenter, willPresentNotification notification: UNNotification, withCompletionHandler completionHandler: (UNNotificationPresentationOptions) -> Void)
{
     completionHandler([UNNotificationPresentationOptions.Alert,UNNotificationPresentationOptions.Sound,UNNotificationPresentationOptions.Badge])
}

আপনার যদি নোটিফিকেশন ব্যবহারের কোড ব্যবহারকারীর প্রবেশের প্রয়োজন হয়: notification.request.content.userInfo


এই ফাংশনটি কোথায় লিখতে হবে? বা নিয়ামক শ্রেণিতে দেখুন?
আইওএস বিকাশকারী

যদি আমি কোনও ফাংশনে নেস্টেড ফাংশন হিসাবে এটি কল করতে পারি তবে এটি কি>> ??
আইওএস বিকাশকারী

1
এটি অ্যাপডেলিগেট ক্লাসে রাখুন। আপনি এই ফাংশন কল করতে হবে না।
মিলন জয়ওয়ার্দনে

4

প্রতিনিধি পদ্ধতিতে সেই সমাপ্তি হ্যান্ডলার লাইন যুক্ত করা আমার জন্য একই সমস্যার সমাধান করেছে:

//Called when a notification is delivered to a foreground app.
@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {

completionHandler([.alert, .badge, .sound])
} 

3

পুশনোটিকেশন অভিধান পার্স করার জন্য দ্রুত 5 এর জন্য For

    func application(_ application: UIApplication, didReceiveRemoteNotification data: [AnyHashable : Any]) {
            if application.applicationState == .active {
                if let aps1 = data["aps"] as? NSDictionary {
                    if let dict = aps1["alert"] as? NSDictionary {
                        if let strTitle = dict["title"] as? String , let strBody = dict["body"] as? String {
                            if let topVC = UIApplication.getTopViewController() {
                                //Apply your own logic as per requirement
                                print("strTitle ::\(strTitle) , strBody :: \(strBody)")
                            }
                        }
                    }
                }
            }
        }

শীর্ষস্থানীয় ViewController আনার জন্য আমরা শীর্ষ ব্যাঙ্কার প্রদর্শন করি

extension UIApplication {

    class func getTopViewController(base: UIViewController? = UIApplication.shared.keyWindow?.rootViewController) -> UIViewController? {

        if let nav = base as? UINavigationController {
            return getTopViewController(base: nav.visibleViewController)

        } else if let tab = base as? UITabBarController, let selected = tab.selectedViewController {
            return getTopViewController(base: selected)

        } else if let presented = base?.presentedViewController {
            return getTopViewController(base: presented)
        }
        return base
    }
}

guardবিবৃতি আপনার বন্ধু :-) হয়
নিকোলাস Miari

2

আপনার অ্যাপের প্রতিনিধিতে বেলো কোড ব্যবহার করুন

import UIKit
import UserNotifications
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate {
 var currentToken: String?
 var window: UIWindow?
 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        application.registerForRemoteNotifications()
        let center = UNUserNotificationCenter.current()
        center.requestAuthorization(options: [.alert, .sound, .badge]) { (granted, error) in

            // Enable or disable features based on authorization.
            if granted == true
            {
                print("Allow")
                UIApplication.shared.registerForRemoteNotifications()
            }
            else
            {
                print("Don't Allow")
            }
        }
        UNUserNotificationCenter.current().delegate = self

        return true
    }
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data){
        let tokenParts = deviceToken.map { data -> String in
            return String(format: "%02.2hhx", data)
        }
        let token = tokenParts.joined()
        currentToken = token  //get device token to delegate variable

    }
 public class var shared: AppDelegate {
        return UIApplication.shared.delegate as! AppDelegate
    }
 func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
         completionHandler([.alert, .badge, .sound])
    }
}

0

উপরে উল্লিখিত হিসাবে, আপনি UserNotification.frameworkএটি অর্জন করতে ব্যবহার করা উচিত । তবে আমার উদ্দেশ্যগুলির জন্য আমাকে এটিকে যাইহোক অ্যাপে প্রদর্শন করতে হবে এবং iOS 11স্টাইলটি দেখতে চাইছিল , তাই আমি একটি ছোট সহায়ক ভিউ তৈরি করেছি, সম্ভবত কারওর জন্য দরকারী।

গিটহাব আইওএস 11 পুশ নোটিফিকেশন ভিউ


0

এই জন্য সবচেয়ে ভালো উপায় যোগ হয় UNUserNotificationCenterDelegateমধ্যে AppDelegateব্যবহার করে extension AppDelegate: UNUserNotificationCenterDelegate অ্যাপ্লিকেশান এক্সটেনশন বলে যখন না ব্যবহার বিজ্ঞপ্তি পেতে পাবে

এবং এই পদ্ধতিটি বাস্তবায়ন করুন

func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
        completionHandler(.alert)
    }

এই পদ্ধতিটি কেবলমাত্র ডেলিগেটের কাছে কল করা হবে যদি আবেদনটি অগ্রভাগে থাকে

সুতরাং চূড়ান্ত বাস্তবায়ন:

extension AppDelegate: UNUserNotificationCenterDelegate {
    func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
        completionHandler(.alert)
    }
}

এবং এটিকে কল করতে আপনাকে অবশ্যই didFinishLaunchingWithOptionsএই লাইনটি যুক্ত করে অ্যাপডেলিগেটে প্রতিনিধি সেট করতে হবে

UNUserNotificationCenter.current().delegate = self

আপনি পরিবর্তন করতে পারেন

completionHandler(.alert) 

সঙ্গে

completionHandler([.alert, .badge, .sound]))

0

সুইফট 5 এর জন্য

1) অ্যাপলিজেটের সাথে প্রতিনিধিটির সাথে নিশ্চিত করুন UNUserNotificationCenterDelegate

2) UNUserNotificationCenter.current().delegate = selfইনdidFinishLaunch

3) নীচে পদ্ধতিটি প্রয়োগ করুন AppDelegate

func userNotificationCenter(_ center: UNUserNotificationCenter,
                                willPresent notification: UNNotification,
                                withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
     print("Push notification received in foreground.")
     completionHandler([.alert, .sound, .badge])
}

এটাই!


-2

@ ড্যানিয়েল মার্টিন যেমন বলেছিলেন আইওএস কোনও বিজ্ঞপ্তি ব্যানার / সতর্কতা প্রদর্শন করবে না। এটা নকশা দ্বারা। তবে যদি সত্যিই এটি করতে হয় তবে একটি উপায় আছে। আমি একসাথে এটি অর্জন করেছি।

1. পার্স ফ্রেম ওয়ার্ক থেকে পার্স ফ্রেম কাজ ডাউনলোড করুন

2.Import #import <Parse/Parse.h>

3. আপনার করণীয় রিসিভরেট নোটিকেশন পদ্ধতিতে নিম্নলিখিত কোড যুক্ত করুন

 - (void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    [PFPush handlePush:userInfo];
}

PFPush দূরবর্তী বিজ্ঞপ্তিটি কীভাবে পরিচালনা করবেন সে বিষয়ে যত্ন নেবে। অ্যাপ যদি অগ্রভাগে থাকে তবে এটি সতর্কতা দেখায় অন্যথায় এটি শীর্ষে বিজ্ঞপ্তিটি দেখায়।


সতর্কতা? আপনি একটি সতর্কতা ভিউ মানে?
আইফোনড্রয়েড

1
সতর্কতা বোতামের ক্রিয়াগুলির জন্য কীভাবে কল ফিরে পাওয়া যায়
চার্লি

-2

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

তবে তবুও আপনি যদি সেই ক্ষেত্রে বিজ্ঞপ্তি দেখাতে চান তবে আপনাকে নিজের বিজ্ঞপ্তি পেয়েছে এমনটি ব্যবহারকারীকে দেখানোর জন্য আপনার কাস্টম সতর্কতা ভিউ বা টোস্টের মতো কাস্টম ভিউ বা অন্য কিছু তৈরি করতে হবে।

আপনার অ্যাপে যদি এ জাতীয় বৈশিষ্ট্য থাকে তবে আপনি শীর্ষে একটি ব্যাজও প্রদর্শন করতে পারেন।

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