রেজিস্টারফরমেটনোটিকেশন টাইপস: আইওএস 8.0 এবং তারপরে সমর্থিত নয়


209

আইওএস 8.x এর অধীনে পুশ বিজ্ঞপ্তিগুলির জন্য নিবন্ধনের চেষ্টা করার সময়:

application.registerForRemoteNotificationTypes(UIRemoteNotificationType.Alert | UIRemoteNotificationType.Badge | UIRemoteNotificationType.Sound)

আমি নিম্নলিখিত ত্রুটি পেয়েছি:

registerForRemoteNotificationTypes: is not supported in iOS 8.0 and later.

কোন ধারণা এটি করার নতুন উপায় কি? আমি iOS 7.x এ এই সুইফট অ্যাপটি চালাইলে এটি কার্যকর হয়।

সম্পাদনা

আইওএস x.x এ আমি যখন শর্তযুক্ত কোডটি পাই আমি অন্তর্ভুক্ত করি (সিস্টেম ভার্সন শর্তসাপেক্ষে বা #if_IPHONE_OS_VERSION_MAX_ALLOWED> = 80000)

dyld: Symbol not found: _OBJC_CLASS_$_UIUserNotificationSettings

1
ইউআইএ অ্যাপ্লিকেশনটির ডকুমেন্টেশনটি দেখুন, আমি মনে করি আপনার রেজিস্টারউজার নোটিকেশনসেটিংস এবং রেজিস্ট্রেশনরেমোটনোটিকেশন ব্যবহার করার কথা।
স্কাইটি

3
ধন্যবাদ, আমি সোমবার এটি পরীক্ষা করব
ওয়াজটেক তুরোইজিক

@ স্কাইটি: এই পদ্ধতিটি কেবল আইওএস 8+
ব্যবহারকারী 102008

যে কেউ এখনও জানে কেন এখনও অ্যাপ্লিকেশন স্টোরটিতে থাকা একটি অ্যাপ্লিকেশনটির সাথে কাজ করে, তবে আমি যদি স্থানীয়ভাবে এটি পরীক্ষার চেষ্টা করি না?

1
এটি কোন এক্সকোড সংস্করণ দিয়ে বাইনারি নির্মিত হয়েছিল তা নির্ভর করে? পর পর দু'বার মন্তব্যে ক্ষমাশীল, আমার উপরের মন্তব্যটি সম্পাদনা করার জন্য আমার অনেক দেরি হয়েছিল।

উত্তর:


145

যেমনটি আপনি বর্ণনা করেছেন, আপনাকে আইওএসের বিভিন্ন সংস্করণের উপর ভিত্তি করে একটি আলাদা পদ্ধতি ব্যবহার করতে হবে। যদি আপনার দলটি এক্সকোড 5 (যা কোনও আইওএস 8 নির্বাচক সম্পর্কে জানে না) এবং এক্সকোড 6 উভয়ই ব্যবহার করে থাকে, তবে আপনাকে নিম্নলিখিত হিসাবে শর্তযুক্ত সংকলন ব্যবহার করতে হবে:

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000
if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) {
    // use registerUserNotificationSettings
} else {
    // use registerForRemoteNotificationTypes:
}
#else
// use registerForRemoteNotificationTypes:
#endif

আপনি যদি কেবল এক্সকোড 6 ব্যবহার করেন তবে আপনি কেবল এটি দিয়ে আটকে থাকতে পারেন:

if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) {
    // use registerUserNotificationSettings
} else {
    // use registerForRemoteNotificationTypes:
}

এখানে কারণটি হ'ল আপনি যেভাবে বিজ্ঞপ্তির অনুমতি পাবেন আইওএস ৮-এ পরিবর্তিত হয়েছে এ UserNotificationএটি ব্যবহারকারীকে দেখানো বার্তা, তা দূরবর্তী থেকে হোক বা স্থানীয় থেকে। একটি দেখাতে আপনার অনুমতি নেওয়া দরকার। এটি ডাব্লুডাব্লুডিসি 2014 ভিডিওতে বর্ণিত হয়েছে "আইওএস বিজ্ঞপ্তিতে নতুন কী আছে"


11
@ ম্যাট - আইওএস 8 এ পুশ পাঠানোর অনুমতি পাওয়ার জন্য অ্যাপল কেন পূর্ববর্তী এপিআই ভেঙে দিয়েছে সে সম্পর্কে আপনার কোনও উল্লেখ রয়েছে? আমি আমার কোডেও একই কাজ করেছি তবে আমার সংস্থার অন্যদের কাছে এটি ব্যাখ্যা করার জন্য আমার কিছু অফিসিয়াল ডক শেয়ার করা দরকার।
ক্রিস সুব্রামনিয়ান

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

2
আপনি __IPHONE_OS_VERSION_MAX_ALLOWEDএটি পরীক্ষা করার জন্য ব্যবহার করতে পারবেন না কারণ এটি একটি সংকলন-সময় চেক।
রব কেনিগার

5
একটি সংকলন-সময় চেক আপনি এক্সকোড 5 এর ক্ষেত্রে যা প্রয়োজন তা হল
ম্যাট ---

1
@ ওহেরা registerUserNotificationSettings:এখানে ডকুমেন্টেড আছে
ম্যাট ---

334

আইওএস <10 এর জন্য

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
    //-- Set Notification
    if ([application respondsToSelector:@selector(isRegisteredForRemoteNotifications)]) 
    {
           // iOS 8 Notifications
           [application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];

           [application registerForRemoteNotifications];
    }
    else
    {
          // iOS < 8 Notifications
          [application registerForRemoteNotificationTypes:
                     (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)];
    }

     //--- your custom code
     return YES;
}

আইওএস 10 এর জন্য

https://stackoverflow.com/a/39383027/3560390


কীভাবে রেজিস্ট্রার থেকে রেজিট্রোমোটনোটিকেশনগুলি ইউজার নোটিকেশনসটিটিংয়ের কলব্যাক থেকে কল করা যায়, আপনি যদি সত্যিই নিশ্চিত করতে চান যে আপনি সতর্কতা দেখাতে ব্যবহারকারীর অনুমতি পাওয়ার আগে আপনার প্রথম বিজ্ঞপ্তি প্রেরণ করছেন না?
মোহাম্মদ হাফেজ

5
চেক করার পরিবর্তে systemVersion, আপনার চেক করা উচিত[[UIApplication sharedApplication] respondsToSelector:@selector(isRegisteredForRemoteNotifications)]
অ্যান্ডি

1
[[UIApplication sharedApplication] registerForRemoteNotifications];কোনও সেটিং -> বিজ্ঞপ্তি -> <আমার অ্যাপ্লিকেশন> - এ "বিজ্ঞপ্তিগুলিকে মঞ্জুরি দিন" অক্ষম করলে application:didRegisterForRemoteNotificationsWithDeviceToken:বা হয় না application:didFailToRegisterForRemoteNotificationsWithError:
প্রোটোকল

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

7
আইএমও তাদের পিছনে সামঞ্জস্যতা ভাঙা উচিত নয়। আগের কোডটির বিপরীতে উভয় সংস্করণকে সমর্থন করার জন্য আপনার কোডটি কতটা কুশ্রী হতে হবে তা দেখুন। স্বতঃস্ফূর্তভাবে নতুনগুলির ক্ষেত্রে আপনার পুরানো এপিআইগুলি পুনরায় বাস্তবায়ন করা একটি কঠিন কৌশল এবং এর ফলে খুব কম বিরক্ত বিকাশকারীদের ফলাফল। অ্যাপলের মনোভাবের অর্থ এটি আইওএস অ্যাপ্লিকেশনগুলিকে সমর্থন করার জন্য একটি ব্যথা, যেখানে 2 বছরের কম সময়ের জন্য একই স্তরের কার্যকারিতা বজায় রাখার প্রচেষ্টা অপ্রয়োজনীয় নয়।
robbie_c

23

@ প্রশথের উত্তরে বিল্ডিং। আপনি সুইফটে এটি কীভাবে করেন :

if application.respondsToSelector("isRegisteredForRemoteNotifications")
{
    // iOS 8 Notifications
    application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: (.Badge | .Sound | .Alert), categories: nil));
    application.registerForRemoteNotifications()
}
else
{
    // iOS < 8 Notifications
    application.registerForRemoteNotificationTypes(.Badge | .Sound | .Alert)
}

14

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

এখানে ইউআইএপ্লিকেশনের একটি বিভাগ রয়েছে যা আপনার পক্ষে একটি পরিষ্কার ইন্টারফেসের পিছনে এই যুক্তিটিকে আড়াল করবে যা এক্সকোড 5 এবং এক্সকোড 6 উভয় ক্ষেত্রেই কাজ করবে।

শিরোলেখ:

//Call these from your application code for both iOS 7 and 8
//put this in the public header
@interface UIApplication (RemoteNotifications)

- (BOOL)pushNotificationsEnabled;
- (void)registerForPushNotifications;

@end

বাস্তবায়ন:

//these declarations are to quiet the compiler when using 7.x SDK
//put this interface in the implementation file of this category, so they are
//not visible to any other code.
@interface NSObject (IOS8)

- (BOOL)isRegisteredForRemoteNotifications;
- (void)registerForRemoteNotifications;

+ (id)settingsForTypes:(NSUInteger)types categories:(NSSet*)categories;
- (void)registerUserNotificationSettings:(id)settings;

@end

@implementation UIApplication (RemoteNotifications)

- (BOOL)pushNotificationsEnabled
{
    if ([self respondsToSelector:@selector(isRegisteredForRemoteNotifications)])
    {
        return [self isRegisteredForRemoteNotifications];
    }
    else
    {
        return ([self enabledRemoteNotificationTypes] & UIRemoteNotificationTypeAlert);
    }
}

- (void)registerForPushNotifications
{
    if ([self respondsToSelector:@selector(registerForRemoteNotifications)])
    {
        [self registerForRemoteNotifications];

        Class uiUserNotificationSettings = NSClassFromString(@"UIUserNotificationSettings");

        //If you want to add other capabilities than just banner alerts, you'll need to grab their declarations from the iOS 8 SDK and define them in the same way.
        NSUInteger UIUserNotificationTypeAlert   = 1 << 2;

        id settings = [uiUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert categories:[NSSet set]];            
        [self registerUserNotificationSettings:settings];

    }
    else
    {
        [self registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert];
    }
}

@end

5
আমি কেবল বিশ্বাস করতে পারি না কেন অ্যাপল এই জিনিসগুলি তৈরি করে না এবং বিকাশকারীদের যখনই অ্যাপল কোনও পদ্ধতির অবমূল্যায়ন করে তখন এ জাতীয় জিনিস তৈরি করতে হবে। আইওএসের প্রতিটি নতুন সংস্করণ এটি একই। কোডটি পুনরায় লেখালেখি করা দুঃখজনক কারণ কেবল অ্যাপল পুরানো পদ্ধতিগুলি হ্রাস করে।
iVela

2
আমি মনে করি এটি তাই অন্যান্য অপারেটিং সিস্টেমগুলির মতো পুরানো স্ক্যাবগুলির উপরে কেবলমাত্র বানডাইড যুক্ত করার পরিবর্তে সময়ের সাথে আরও ভাল হয়ে যায়।
পল ব্রুনিউ 17

আমার পরীক্ষাগুলি থেকে (এটি পুরো দিনটি নিয়েছিল), যদি আমি Settingsবিজ্ঞপ্তিগুলি অক্ষম করে এবং অক্ষম করি তবে isRegisteredForRemoteNotificationsএখনও ফিরে আসেYES
আইলিয়ান ওনোফ্রেই

একটি সঠিক সমাধান যোগ করার জন্য থাম্বস আপ: ইন্ডিয়ারেশনের আরও একটি স্তর!
বার্কাস

6

আমি মনে করি এটি পিছনের দিকে সামঞ্জস্য রাখার সবচেয়ে ভাল উপায় যদি আমরা এই পদ্ধতির সাথে চলে যাই তবে এটি আমার ক্ষেত্রে কাজ করছে এবং আশা করি আপনার পক্ষে কাজ করবে। এছাড়াও বুঝতে খুব সহজ।

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)
{
    [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];
    [[UIApplication sharedApplication] registerForRemoteNotifications];
}
else
{
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:
         (UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert)];
}

এখানেif ([UIApplication instancesRespondToSelector:@selector(registerForRemoteNotifications)]) প্রদর্শিত হিসাবে ভাল ব্যবহার
Iulian Onofrei

5

সুইফ্ট-প্রবণতার জন্য:

if let registration: AnyObject = NSClassFromString("UIUserNotificationSettings") { // iOS 8+
    let notificationTypes: UIUserNotificationType = (.Alert | .Badge | .Sound)
    let notificationSettings: UIUserNotificationSettings = UIUserNotificationSettings(forTypes: notificationTypes, categories: nil)

    application.registerUserNotificationSettings(notificationSettings)
} else { // iOS 7
    application.registerForRemoteNotificationTypes(.Alert | .Badge | .Sound)
}

3
সুইফট ২.০ তে আমি যেমন বুঝতে পেরেছি তে আপনাকে সেটগুলিতে বিকল্প সরবরাহ করা উচিত [.এলার্ট,। ব্যাজ,। শব্দ] কারণ (.আরল্ট |। ব্যাজ |। শব্দ) আমার পক্ষে কাজ করে নি।
অপান

3

"ক্যাটাগরিগুলি" এনএসএসেট ভেরিয়েবলটি কী সেট করা উচিত তা আমি বুঝতে পারি না, তাই যদি কেউ আমাকে পূরণ করতে পারে তবে আমি এই পোস্টটিকে আনন্দের সাথে সম্পাদনা করব। নিম্নলিখিতগুলি তবে পুশ বিজ্ঞপ্তি ডায়ালগটি নিয়ে আসে।

[[UIApplication sharedApplication] registerForRemoteNotifications];
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert) categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:settings];

সম্পাদনা: এই কোডটি দিয়ে আমার ফোনে পাঠানোর জন্য আমি একটি ধাক্কা বিজ্ঞপ্তি পেয়েছি, সুতরাং আমি নিশ্চিত নই যে বিভাগগুলির পরামিতি প্রয়োজনীয় necessary


হ্যাঁ এটি iOS8 এ কাজ করে তবে আমি কীভাবে এটিকে iOS7 এর সাথে পিছনে সামঞ্জস্য করব? iOS7 এ এটি ক্রাশ হবে। কোনও আইওএস সংস্করণ চেক করা কার্যকর হয় না কারণ আইওএস 7 নতুন চিহ্নগুলি স্বীকৃতি দেয় না।
ওয়াজটেক তুরোভিজ

2
categoriesআইওএসে বিজ্ঞপ্তি ক্রিয়াকলাপ সেট আপ করতে ব্যবহার করা হয় 8. আপনি আরও বিবরণের জন্য ডাব্লুডাব্লুডিসি 2014 ভিডিও "আইওএস বিজ্ঞপ্তিতে নতুন কী" দেখতে পারেন
ম্যাট ---

3

সুতরাং দেখা যাচ্ছে যে যেহেতু অ্যানোবজেক্টটি আইডির আধ্যাত্মিক উত্তরসূরি, আপনি যে কোনও বার্তা যেকোনওবজেক্টে কল করতে পারেন। এটি আইডিতে একটি বার্তা প্রেরণের সমতুল্য। যথেষ্ট ঠিক পরিষ্কার. তবে এখন আমরা ধারণাটিতে যুক্ত করেছি যে সমস্ত পদ্ধতি যেকোনওবজেক্টে alচ্ছিক , এবং আমাদের এমন কিছু আছে যা আমরা কাজ করতে পারি।

উপরের দিক থেকে প্রদত্ত, আমি আশাবাদী যে আমি কেবলমাত্র ইউআইএপ্লিকেশন.শ্রেড অ্যাপ্লিকেশন () অনিওবজেক্টে ফেলে দিতে পারি, তারপরে পদ্ধতি স্বাক্ষরের সমান একটি ভেরিয়েবল তৈরি করতে পারি, thatচ্ছিক পদ্ধতিতে সেই ভেরিয়েবলটি সেট করতে পারি, তারপরে ভেরিয়েবলটি পরীক্ষা করতে পারি। এটি কাজ করে বলে মনে হচ্ছে না। আমার ধারণাটি হ'ল আইওএস 8.0 এসডিকে বিপরীতে সংকলিত হওয়ার সময়, সংকলকটি জানে যে কোথায় সেই পদ্ধতিটি হওয়া উচিত বলে মনে হয় , তাই এটি মেমরির অনুসন্ধানে এটিকে সর্বোত্তম করে তোলে। আমি ভেরিয়েবলটি পরীক্ষা করার চেষ্টা না করা অবধি সবকিছু ঠিকঠাক কাজ করে, যার কোন স্থানে আমি একটি EXC_BAD_ACCESS পাই।

তবে, একই ডাব্লুডব্লিউডিসির আলোচনায় যেখানে আমি সমস্ত পদ্ধতির mচ্ছিক সম্পর্কে রত্ন খুঁজে পেয়েছি, তারা একটি optionচ্ছিক পদ্ধতিতে কল করতে Oচ্ছিক চেইন ব্যবহার করে - এবং এটি কার্যকর বলে মনে হচ্ছে। খোঁড়া অংশটি হ'ল আপনাকে আসলে পদ্ধতিটি কল করার চেষ্টা করতে হবে যাতে এটি বিদ্যমান কিনা তা জানার জন্য, যা বিজ্ঞপ্তিগুলির জন্য নিবন্ধকরণের ক্ষেত্রে একটি সমস্যা কারণ আপনি তৈরি করার আগে এই পদ্ধতিটি বিদ্যমান কিনা তা নির্ধারণ করার চেষ্টা করছেন UIUserNotificationsSettings অবজেক্ট। দেখে মনে হচ্ছে যে পদ্ধতিটি শূন্যের সাথে ডাকলেও ঠিক আছে, সুতরাং যে সমাধানটি আমার পক্ষে কাজ করছে বলে মনে হচ্ছে তা হ'ল:

var ao: AnyObject = UIApplication.sharedApplication()
if let x:Void = ao.registerUserNotificationSettings?(nil) {
    // It's iOS 8
    var types = UIUserNotificationType.Badge | UIUserNotificationType.Sound | UIUserNotificationType.Alert
    var settings = UIUserNotificationSettings(forTypes: types, categories: nil)
    UIApplication.sharedApplication().registerUserNotificationSettings(settings)
} else {
    // It's older
    var types = UIRemoteNotificationType.Badge | UIRemoteNotificationType.Sound | UIRemoteNotificationType.Alert
    UIApplication.sharedApplication().registerForRemoteNotificationTypes(types)
}

এ সম্পর্কিত অনেকগুলি অনুসন্ধানের পরে, মূল তথ্যটি এই ডাব্লুডাব্লুডিসি আলাপ থেকে এসেছে https://developer.apple.com/videos/wwdc/2014/#407 থেকে ঠিক "প্রোটোকলগুলিতে ptionচ্ছিক পদ্ধতিগুলি" বিভাগের মধ্যবর্তী অংশে

এক্সকোড 6.1 বিটাতে উপরের কোডটি আর কাজ করে না, নীচের কোডটি কাজ করে:

   if UIApplication.sharedApplication().respondsToSelector("registerUserNotificationSettings:") {
        // It's iOS 8
        var types = UIUserNotificationType.Badge | UIUserNotificationType.Sound | UIUserNotificationType.Alert
       var settings = UIUserNotificationSettings(forTypes: types, categories: nil)
       UIApplication.sharedApplication().registerUserNotificationSettings(settings)
    } else {
        // It's older
        var types = UIRemoteNotificationType.Badge | UIRemoteNotificationType.Sound | UIRemoteNotificationType.Alert
        UIApplication.sharedApplication().registerForRemoteNotificationTypes(types)
    }

3

আপনি যদি আইওএস 7 আইওএস 8 এ সমর্থন যুক্ত করতে চান তবে আপনি এই কোডটি আপনার প্রকল্পে প্রয়োগ করতে পারেন।

-(void) Subscribe {
    NSLog(@"Registering for push notifications...");

    if ([[UIApplication sharedApplication] respondsToSelector:@selector(registerUserNotificationSettings:)]) {
        UIUserNotificationSettings* notificationSettings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil];
        [[UIApplication sharedApplication] registerUserNotificationSettings:notificationSettings];
        [[UIApplication sharedApplication] registerForRemoteNotifications];
    } else {
        [[UIApplication sharedApplication] registerForRemoteNotificationTypes: (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
    }
}

-(void)application:(UIApplication *)application 
    didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings {

    if (notificationSettings.types) {
        NSLog(@"user allowed notifications");
        [[UIApplication sharedApplication] registerForRemoteNotifications];
    } else {
        NSLog(@"user did not allow notifications");
        UIAlertView *alert =[[UIAlertView alloc] 
            initWithTitle:@"Please turn on Notification"
            message:@"Go to Settings > Notifications > App.\n Switch on Sound, Badge & Alert"
            delegate:self
            cancelButtonTitle:@"Ok"
            otherButtonTitles: nil];
        [alert show];
        // show alert here
    }
}

2

এক্সকোড .1.১ বিটার পরে নীচের কোডটি কাজ করে, টম এস কোডে সামান্য সম্পাদনা যা .1.১ বিটা (পূর্ববর্তী বিটাতে কাজ করেছে) দিয়ে কাজ বন্ধ করে দিয়েছে:

   if UIApplication.sharedApplication().respondsToSelector("registerUserNotificationSettings:") {
        // It's iOS 8
        var types = UIUserNotificationType.Badge | UIUserNotificationType.Sound | UIUserNotificationType.Alert
       var settings = UIUserNotificationSettings(forTypes: types, categories: nil)
       UIApplication.sharedApplication().registerUserNotificationSettings(settings)
    } else {
        // It's older
        var types = UIRemoteNotificationType.Badge | UIRemoteNotificationType.Sound | UIRemoteNotificationType.Alert
        UIApplication.sharedApplication().registerForRemoteNotificationTypes(types)
    }

2

আপনি এটি ব্যবহার করতে পারেন

if ([application respondsToSelector:@selector(isRegisteredForRemoteNotifications)]) 
    {
        // for iOS 8
        [application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];

        [application registerForRemoteNotifications];
    }
    else
    {
        // for iOS < 8
        [application registerForRemoteNotificationTypes:
         (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)];
    }

    // RESET THE BADGE COUNT 
    application.applicationIconBadgeNumber = 0;

2

সুইফট ২.০

// Checking if app is running iOS 8
    if application.respondsToSelector("isRegisteredForRemoteNotifications") {

        print("registerApplicationForPushNotifications - iOS 8")

        application.registerUserNotificationSettings(UIUserNotificationSettings(forTypes: [.Alert, .Badge, .Sound], categories: nil));
        application.registerForRemoteNotifications()

    } else {
        // Register for Push Notifications before iOS 8
        print("registerApplicationForPushNotifications - <iOS 8")
        application.registerForRemoteNotificationTypes([UIRemoteNotificationType.Alert, UIRemoteNotificationType.Badge, UIRemoteNotificationType.Sound])

    }

1

আপনার সমস্ত প্রয়োজন যদি আইওএস 8 কোড হয় তবে এটি করা উচিত।

 - (BOOL)application:(UIApplication *)application       didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
{
       [application registerUserNotificationSettings: [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound  | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge)  categories:nil]];

       [application registerForRemoteNotifications];
}

 return YES;
}

0

এটি পরিষ্কার কাজটি আমি করছি এবং এটি দুর্দান্ত কাজ করে

if (floor(NSFoundationVersionNumber) < NSFoundationVersionNumber_iOS_8_0)
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge|
     UIRemoteNotificationTypeAlert| UIRemoteNotificationTypeSound];
     else {
         [application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]]; 
         [application registerForRemoteNotifications];
     }

0

আইওএস 8 এবং উপরের জন্য

UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeBadge|UIUserNotificationTypeSound|UIUserNotificationTypeAlert) categories:nil];
[application registerUserNotificationSettings:settings];
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.