第二步,找一個demo學習一下:我在github上面找的一個demo
https://github.com/Turkcell/PushNotification_iOS_sdk
在代碼中要做以下的事情:
#pragma mark --------遠程通知
- (void)registerAPNSNotification
{
//適配8.0,IF走8.0
if (![[NSUserDefaults standardUserDefaults] boolForKey:kOatosParamsDeviceToken])
{
if ([[UIApplication sharedApplication] respondsToSelector:@selector(registerUserNotificationSettings:)]) {
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge|UIUserNotificationTypeSound|UIUserNotificationTypeAlert categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:settings];
}else {
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound];
}
}
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[self registerAPNSNotification];
//清除所有本地通知
[application cancelAllLocalNotifications];
application.applicationIconBadgeNumber = 0;
}
- (void)applicationWillTerminate:(UIApplication *)application
{
if ([[UIApplication sharedApplication] enabledRemoteNotificationTypes] == UIRemoteNotificationTypeNone && !isLogout) {
[self registerAPNSNotification];
}
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}
//注冊遠程通知成功
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
NSString *token = [NSString stringWithFormat:@%@, [[[deviceToken description] stringByReplacingOccurrencesOfString:@< withString:@] stringByReplacingOccurrencesOfString:@> withString:@]];
DLog(@deviceToken[%@], token);
[[NSUserDefaults standardUserDefaults] setObject:token forKey:kOatosParamsDeviceToken];
}
//注冊遠程通知失敗
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
{
NSString *error_str = [NSString stringWithFormat: @%@, error];
DLog(@獲取deviceToken失敗[%@], error_str);
}