আমি কীভাবে স্থানীয় বিজ্ঞপ্তিগুলি সেটআপ করতে পারি যাতে আমি সেট করার সময় আমার অ্যাপ্লিকেশনটি একটি অনুকূলিত বার্তা সহ একটি বিজ্ঞপ্তি / সতর্কতা উত্পন্ন করে?
আমি কীভাবে স্থানীয় বিজ্ঞপ্তিগুলি সেটআপ করতে পারি যাতে আমি সেট করার সময় আমার অ্যাপ্লিকেশনটি একটি অনুকূলিত বার্তা সহ একটি বিজ্ঞপ্তি / সতর্কতা উত্পন্ন করে?
উত্তর:
স্থানীয় প্রকল্পের জন্য নমুনা কোড যা এখানে আমার প্রকল্পের জন্য কাজ করেছে।
উদ্দেশ্য গ:
এই কোডটি AppDelegate
ফাইলটিতে ব্লক করে :
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[launchOptions valueForKey:UIApplicationLaunchOptionsLocalNotificationKey];
// Override point for customization after application launch.
return YES;
}
// This code block is invoked when application is in foreground (active-mode)
-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
UIAlertView *notificationAlert = [[UIAlertView alloc] initWithTitle:@"Notification" message:@"This local notification"
delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil];
[notificationAlert show];
// NSLog(@"didReceiveLocalNotification");
}
এই কোডটি কোনওটির .m ফাইলে ব্লক করে ViewController
:
-(IBAction)startLocalNotification { // Bind this method to UIButton action
NSLog(@"startLocalNotification");
UILocalNotification *notification = [[UILocalNotification alloc] init];
notification.fireDate = [NSDate dateWithTimeIntervalSinceNow:7];
notification.alertBody = @"This is local notification!";
notification.timeZone = [NSTimeZone defaultTimeZone];
notification.soundName = UILocalNotificationDefaultSoundName;
notification.applicationIconBadgeNumber = 10;
[[UIApplication sharedApplication] scheduleLocalNotification:notification];
}
উপরের কোডটি 7 সেকেন্ডের সময়ের ব্যবধানের পরে একটি এলার্টভিউ প্রদর্শন করে যখন বোতামটি টিপে দেয় যা আবদ্ধ হয় startLocalNotification
যদি অ্যাপ্লিকেশন ব্যাকগ্রাউন্ডে থাকে তবে এটি BadgeNumber
10 হিসাবে এবং ডিফল্ট বিজ্ঞপ্তির শব্দ সহ প্রদর্শিত হয়।
এই কোডটি আইওএস x.x এবং এর নিচে তবে আইওএস ৮ এর জন্য দুর্দান্ত কাজ করে যা কনসোলে নিম্নলিখিত ত্রুটিটি প্রম্পট করবে :
সতর্কতা সহ স্থানীয় বিজ্ঞপ্তি নির্ধারণের চেষ্টা করা হচ্ছে তবে সতর্কতা প্রদর্শনের জন্য ব্যবহারকারীর কাছ থেকে অনুমতি পাননি
এর অর্থ স্থানীয় বিজ্ঞপ্তির জন্য আপনার নিবন্ধক প্রয়োজন। এটি ব্যবহার করে অর্জন করা যেতে পারে:
if ([UIApplication instancesRespondToSelector:@selector(registerUserNotificationSettings:)]){
[application registerUserNotificationSettings [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]];
}
স্থানীয় বিজ্ঞপ্তির জন্য আপনি ব্লগটি উল্লেখ করতে পারেন ।
সুইফট:
আপনার AppDelegate.swift
ফাইলটি দেখতে এমন হওয়া উচিত:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: UIUserNotificationType.Sound | UIUserNotificationType.Badge | UIUserNotificationType.Alert, categories: nil))
return true
}
যে সুইফট ফাইলটিতে (বলুন ViewController.swift
) আপনি স্থানীয় বিজ্ঞপ্তি তৈরি করতে চান তাতে নীচের কোড থাকা উচিত:
//MARK: - Button functions
func buttonIsPressed(sender: UIButton) {
println("buttonIsPressed function called \(UIButton.description())")
var localNotification = UILocalNotification()
localNotification.fireDate = NSDate(timeIntervalSinceNow: 3)
localNotification.alertBody = "This is local notification from Swift 2.0"
localNotification.timeZone = NSTimeZone.localTimeZone()
localNotification.repeatInterval = NSCalendarUnit.CalendarUnitMinute
localNotification.userInfo = ["Important":"Data"];
localNotification.soundName = UILocalNotificationDefaultSoundName
localNotification.applicationIconBadgeNumber = 5
localNotification.category = "Message"
UIApplication.sharedApplication().scheduleLocalNotification(localNotification)
}
//MARK: - viewDidLoad
class ViewController: UIViewController {
var objButton : UIButton!
. . .
override func viewDidLoad() {
super.viewDidLoad()
. . .
objButton = UIButton.buttonWithType(.Custom) as? UIButton
objButton.frame = CGRectMake(30, 100, 150, 40)
objButton.setTitle("Click Me", forState: .Normal)
objButton.setTitle("Button pressed", forState: .Highlighted)
objButton.addTarget(self, action: "buttonIsPressed:", forControlEvents: .TouchDown)
. . .
}
. . .
}
আইওএস 9 এবং নীচে স্থানীয় বিজ্ঞপ্তি দিয়ে আপনি যেভাবে কাজ করতে চান তা আইওএস 10 এ সম্পূর্ণ আলাদা।
অ্যাপল রিলিজ নোট থেকে নীচে স্ক্রিন দখল এটি চিত্রিত করে।
আপনি ব্যবহারকারী নোটিকেশন জন্য অ্যাপল রেফারেন্স ডকুমেন্ট উল্লেখ করতে পারেন ।
স্থানীয় বিজ্ঞপ্তির জন্য নীচে কোড রয়েছে:
উদ্দেশ্য গ:
ইন App-delegate.h
ফাইলটি ব্যবহার@import UserNotifications;
অ্যাপ-প্রতিনিধিদের UNUserNotificationCenterDelegate
প্রোটোকলের সাথে সামঞ্জস্য করা উচিত
ইন didFinishLaunchingOptions
কোড নিচে ব্যবহার:
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
[center requestAuthorizationWithOptions:(UNAuthorizationOptionBadge | UNAuthorizationOptionSound | UNAuthorizationOptionAlert)
completionHandler:^(BOOL granted, NSError * _Nullable error) {
if (!error) {
NSLog(@"request authorization succeeded!");
[self showAlert];
}
}];
-(void)showAlert {
UIAlertController *objAlertController = [UIAlertController alertControllerWithTitle:@"Alert" message:@"show an alert!" preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"OK"
style:UIAlertActionStyleCancel handler:^(UIAlertAction *action) {
NSLog(@"Ok clicked!");
}];
[objAlertController addAction:cancelAction];
[[[[[UIApplication sharedApplication] windows] objectAtIndex:0] rootViewController] presentViewController:objAlertController animated:YES completion:^{
}];
}
এখন যে কোনও ভিউ কন্ট্রোলারে এবং আইবিএક્શનের নীচে কোড ব্যবহার করে একটি বোতাম তৈরি করুন:
UNMutableNotificationContent *objNotificationContent = [[UNMutableNotificationContent alloc] init];
objNotificationContent.title = [NSString localizedUserNotificationStringForKey:@“Notification!” arguments:nil];
objNotificationContent.body = [NSString localizedUserNotificationStringForKey:@“This is local notification message!“arguments:nil];
objNotificationContent.sound = [UNNotificationSound defaultSound];
// 4. update application icon badge number
objNotificationContent.badge = @([[UIApplication sharedApplication] applicationIconBadgeNumber] + 1);
// Deliver the notification in five seconds.
UNTimeIntervalNotificationTrigger *trigger = [UNTimeIntervalNotificationTrigger triggerWithTimeInterval:10.f repeats:NO];
UNNotificationRequest *request = [UNNotificationRequest requestWithIdentifier:@“ten” content:objNotificationContent trigger:trigger];
// 3. schedule localNotification
UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
[center addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error) {
if (!error) {
NSLog(@“Local Notification succeeded“);
} else {
NSLog(@“Local Notification failed“);
}
}];
সুইফট 3:
AppDelegate.swift
ফাইলটি ব্যবহারimport UserNotifications
UNUserNotificationCenterDelegate
প্রোটোকলের সাথে সামঞ্জস্য করা উচিতইন didFinishLaunchingWithOptions
কোড নিচে ব্যবহার
// Override point for customization after application launch.
let center = UNUserNotificationCenter.current()
center.requestAuthorization(options: [.alert, .sound]) { (granted, error) in
// Enable or disable features based on authorization.
if error != nil {
print("Request authorization failed!")
} else {
print("Request authorization succeeded!")
self.showAlert()
}
}
func showAlert() {
let objAlert = UIAlertController(title: "Alert", message: "Request authorization succeeded", preferredStyle: UIAlertControllerStyle.alert)
objAlert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: nil))
//self.presentViewController(objAlert, animated: true, completion: nil)
UIApplication.shared().keyWindow?.rootViewController?.present(objAlert, animated: true, completion: nil)
}
এখন যে কোনও ভিউ কন্ট্রোলারে এবং আইবিএક્શનের নীচে কোড ব্যবহার করে একটি বোতাম তৈরি করুন:
let content = UNMutableNotificationContent()
content.title = NSString.localizedUserNotificationString(forKey: "Hello!", arguments: nil)
content.body = NSString.localizedUserNotificationString(forKey: "Hello_message_body", arguments: nil)
content.sound = UNNotificationSound.default()
content.categoryIdentifier = "notify-test"
let trigger = UNTimeIntervalNotificationTrigger.init(timeInterval: 5, repeats: false)
let request = UNNotificationRequest.init(identifier: "notify-test", content: content, trigger: trigger)
let center = UNUserNotificationCenter.current()
center.add(request)
অ্যাপডিলেগেট.এম ফাইলটিতে স্থানীয় বিজ্ঞপ্তি পেতে অ্যাপ্লিকেশনডিডন্টারব্যাকগ্রাউন্ডে ফোলিং কোডটি লিখুন
- (void)applicationDidEnterBackground:(UIApplication *)application
{
UILocalNotification *notification = [[UILocalNotification alloc]init];
notification.repeatInterval = NSDayCalendarUnit;
[notification setAlertBody:@"Hello world"];
[notification setFireDate:[NSDate dateWithTimeIntervalSinceNow:1]];
[notification setTimeZone:[NSTimeZone defaultTimeZone]];
[application setScheduledLocalNotifications:[NSArray arrayWithObject:notification]];
}
স্থানীয় বিজ্ঞপ্তি তৈরি করা বেশ সহজ। এই পদক্ষেপগুলি অনুসরণ করুন।
ভিউডিডলড () ফাংশনটিতে ব্যবহারকারীদের অনুমতি চেয়ে নিন যাতে আপনার অ্যাপ্লিকেশন বিজ্ঞপ্তি প্রদর্শন করতে চায়। এটির জন্য আমরা নিম্নলিখিত কোডটি ব্যবহার করতে পারি।
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge], completionHandler: {didAllow, error in
})
তারপরে আপনি একটি বোতাম তৈরি করতে পারেন এবং তারপরে ক্রিয়া ফাংশনে আপনি একটি বিজ্ঞপ্তি প্রদর্শনের জন্য নিম্নলিখিত কোডটি লিখতে পারেন।
//creating the notification content
let content = UNMutableNotificationContent()
//adding title, subtitle, body and badge
content.title = "Hey this is Simplified iOS"
content.subtitle = "iOS Development is fun"
content.body = "We are learning about iOS Local Notification"
content.badge = 1
//getting the notification trigger
//it will be called after 5 seconds
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false)
//getting the notification request
let request = UNNotificationRequest(identifier: "SimplifiedIOSNotification", content: content, trigger: trigger)
//adding the notification to notification center
UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)
বিজ্ঞপ্তি প্রদর্শিত হবে, বিজ্ঞপ্তি বোতামটি আলতো চাপার পরে কেবল হোম বোতামে ক্লিক করুন। অ্যাপ্লিকেশনটি অগ্রভাগে থাকা অবস্থায় বিজ্ঞপ্তিটি প্রদর্শিত হয় না। তবে আপনি যদি আইফোন এক্স ব্যবহার করে থাকেন তবে অ্যাপটি অগ্রভাগে থাকা অবস্থায়ও আপনি বিজ্ঞপ্তি প্রদর্শন করতে পারেন। এর জন্য আপনাকে কেবল ইউএন ইউজারনোটফিকেশন সেন্টারডেলিগেট নামে একটি প্রতিনিধি যুক্ত করতে হবে
আরও তথ্যের জন্য এই ব্লগ পোস্ট দেখুন: আইওএস স্থানীয় বিজ্ঞপ্তি টিউটোরিয়াল
সুইফট 5 এর সাথে আপডেট হয়েছে আমরা সাধারণত তিন ধরণের স্থানীয় বিজ্ঞপ্তি ব্যবহার করি
যেখানে আপনি সাধারণ পাঠ্য বিজ্ঞপ্তি বা ক্রিয়া বোতাম এবং সংযুক্তি সহ পাঠাতে পারেন।
আপনার অ্যাপ্লিকেশনে ইউজারনোটফিকেশন প্যাকেজ ব্যবহার করে, নীচের উদাহরণটি বিজ্ঞপ্তির অনুমোদনের জন্য অনুরোধ করুন, ব্যবহারকারী ক্রিয়া অনুযায়ী নিজেই বিজ্ঞপ্তি প্রেরণ করুন এবং প্রেরণ করুন এবং বিভিন্ন ধরণের স্থানীয় বিজ্ঞপ্তি পরীক্ষার তালিকাভুক্ত দেখুন নিয়ামক ব্যবহার করুন।
AppDelegate
import UIKit
import UserNotifications
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate {
let notificationCenter = UNUserNotificationCenter.current()
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
//Confirm Delegete and request for permission
notificationCenter.delegate = self
let options: UNAuthorizationOptions = [.alert, .sound, .badge]
notificationCenter.requestAuthorization(options: options) {
(didAllow, error) in
if !didAllow {
print("User has declined notifications")
}
}
return true
}
func applicationWillResignActive(_ application: UIApplication) {
}
func applicationDidEnterBackground(_ application: UIApplication) {
}
func applicationWillEnterForeground(_ application: UIApplication) {
}
func applicationWillTerminate(_ application: UIApplication) {
}
func applicationDidBecomeActive(_ application: UIApplication) {
UIApplication.shared.applicationIconBadgeNumber = 0
}
//MARK: Local Notification Methods Starts here
//Prepare New Notificaion with deatils and trigger
func scheduleNotification(notificationType: String) {
//Compose New Notificaion
let content = UNMutableNotificationContent()
let categoryIdentifire = "Delete Notification Type"
content.sound = UNNotificationSound.default
content.body = "This is example how to send " + notificationType
content.badge = 1
content.categoryIdentifier = categoryIdentifire
//Add attachment for Notification with more content
if (notificationType == "Local Notification with Content")
{
let imageName = "Apple"
guard let imageURL = Bundle.main.url(forResource: imageName, withExtension: "png") else { return }
let attachment = try! UNNotificationAttachment(identifier: imageName, url: imageURL, options: .none)
content.attachments = [attachment]
}
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 5, repeats: false)
let identifier = "Local Notification"
let request = UNNotificationRequest(identifier: identifier, content: content, trigger: trigger)
notificationCenter.add(request) { (error) in
if let error = error {
print("Error \(error.localizedDescription)")
}
}
//Add Action button the Notification
if (notificationType == "Local Notification with Action")
{
let snoozeAction = UNNotificationAction(identifier: "Snooze", title: "Snooze", options: [])
let deleteAction = UNNotificationAction(identifier: "DeleteAction", title: "Delete", options: [.destructive])
let category = UNNotificationCategory(identifier: categoryIdentifire,
actions: [snoozeAction, deleteAction],
intentIdentifiers: [],
options: [])
notificationCenter.setNotificationCategories([category])
}
}
//Handle Notification Center Delegate methods
func userNotificationCenter(_ center: UNUserNotificationCenter,
willPresent notification: UNNotification,
withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
completionHandler([.alert, .sound])
}
func userNotificationCenter(_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: @escaping () -> Void) {
if response.notification.request.identifier == "Local Notification" {
print("Handling notifications with the Local Notification Identifier")
}
completionHandler()
}
}
এবং ভিউকন্ট্রোলার
import UIKit
class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
var appDelegate = UIApplication.shared.delegate as? AppDelegate
let notifications = ["Simple Local Notification",
"Local Notification with Action",
"Local Notification with Content",]
override func viewDidLoad() {
super.viewDidLoad()
}
// MARK: - Table view data source
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return notifications.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
cell.textLabel?.text = notifications[indexPath.row]
return cell
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let notificationType = notifications[indexPath.row]
let alert = UIAlertController(title: "",
message: "After 5 seconds " + notificationType + " will appear",
preferredStyle: .alert)
let okAction = UIAlertAction(title: "Okay, I will wait", style: .default) { (action) in
self.appDelegate?.scheduleNotification(notificationType: notificationType)
}
alert.addAction(okAction)
present(alert, animated: true, completion: nil)
}
}
- (void)applicationDidEnterBackground:(UIApplication *)application
{
UILocalNotification *notification = [[UILocalNotification alloc]init];
notification.repeatInterval = NSDayCalendarUnit;
[notification setAlertBody:@"Hello world"];
[notification setFireDate:[NSDate dateWithTimeIntervalSinceNow:1]];
[notification setTimeZone:[NSTimeZone defaultTimeZone]];
[application setScheduledLocalNotifications:[NSArray arrayWithObject:notification]];
}
এটি কাজ করা হয়েছে, তবে আইওএস ৮.০ এবং-[UIApplication registerUserNotificationSettings:]
তারপরে আপনার অ্যাপ্লিকেশনটিকে ইউআইএলোকালনোটিকেশনগুলি নির্ধারণ এবং উপস্থাপন করতে সক্ষম হওয়ার আগে ব্যবহারকারীর বিজ্ঞপ্তিগুলির জন্য নিবন্ধন করতে হবে, এটি ভুলে যাবেন না।
আইওএস 8 ব্যবহারকারী এবং ততোধিক ব্যবহারকারী, এটি কার্যকর করতে অ্যাপ প্রতিনিধিতে এটি অন্তর্ভুক্ত করুন।
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
if ([UIApplication instancesRespondToSelector:@selector(registerUserNotificationSettings:)])
{
[application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]];
}
return YES;
}
এবং তারপরে কোডের এই লাইনগুলি যুক্ত করা সহায়তা করবে,
- (void)applicationDidEnterBackground:(UIApplication *)application
{
UILocalNotification *notification = [[UILocalNotification alloc]init];
notification.repeatInterval = NSDayCalendarUnit;
[notification setAlertBody:@"Hello world"];
[notification setFireDate:[NSDate dateWithTimeIntervalSinceNow:1]];
[notification setTimeZone:[NSTimeZone defaultTimeZone]];
[application setScheduledLocalNotifications:[NSArray arrayWithObject:notification]];
}
-(void)kundanselect
{
NSMutableArray *allControllers = [[NSMutableArray alloc] initWithArray:self.navigationController.viewControllers];
NSArray *allControllersCopy = [allControllers copy];
if ([[allControllersCopy lastObject] isKindOfClass: [kundanViewController class]])
{
[[NSNotificationCenter defaultCenter]postNotificationName:@"kundanViewControllerHide"object:nil userInfo:nil];
}
else
{
[[NSUserDefaults standardUserDefaults] setInteger:4 forKey:@"selected"];
[self performSegueWithIdentifier:@"kundansegue" sender:self];
}
}
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(ApparelsViewControllerHide) name:@"ApparelsViewControllerHide" object:nil];
আমি ধরে নিচ্ছি যে আপনি অনুমোদনের জন্য অনুরোধ করেছেন এবং বিজ্ঞপ্তির জন্য আপনার অ্যাপ্লিকেশনটি নিবন্ধভুক্ত করেছেন।
স্থানীয় বিজ্ঞপ্তিগুলি তৈরি করার কোড এখানে code
@available(iOS 10.0, *)
func send_Noti()
{
//Create content for your notification
let content = UNMutableNotificationContent()
content.title = "Test"
content.body = "This is to test triggering of notification"
//Use it to define trigger condition
var date = DateComponents()
date.calendar = Calendar.current
date.weekday = 5 //5 means Friday
date.hour = 14 //Hour of the day
date.minute = 10 //Minute at which it should be sent
let trigger = UNCalendarNotificationTrigger(dateMatching: date, repeats: true)
let uuid = UUID().uuidString
let req = UNNotificationRequest(identifier: uuid, content: content, trigger: trigger)
let notificationCenter = UNUserNotificationCenter.current()
notificationCenter.add(req) { (error) in
print(error)
}
}