iOS推送

一、使用个推完成推送通知

1、启动个推SDK

[GeTuiSdk startSdkWithAppId:kGtAppId appKey:kGtAppKey appSecret:kGtAppSecret delegate:self];

/** SDK启动成功返回cid */

- (void)GeTuiSdkDidRegisterClient:(NSString *)clientId {

    //启动SKD成功后返回clientId

    self.clientId = clientId;

}


/** SDK遇到错误回调 */

- (void)GeTuiSdkDidOccurError:(NSError *)error {

    //个推错误报告,集成步骤发生的任何错误都在这里通知,如果集成后,无法正常收到消息,查看这里的通知。

    NSLog(@"\n>>>[GexinSdk error]:%@\n\n", [error localizedDescription]);

}


2、注册推送通知

- (void)registerPushNotification {

    if (IS_IOS10_OR_LATER) {

        UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];

        center.delegate = self;

        [center requestAuthorizationWithOptions:(UNAuthorizationOptionSound | UNAuthorizationOptionAlert) completionHandler:^(BOOL granted, NSError * _Nullable error) {

            if (!error) {

                [[UIApplication sharedApplication] registerForRemoteNotifications];

            }

        }];

    } else {

        if ([[UIApplication sharedApplication] respondsToSelector:@selector(registerUserNotificationSettings:)]) {

            UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeSound|UIUserNotificationTypeAlert categories:nil];

            [[UIApplication sharedApplication] registerUserNotificationSettings:settings];

        }  else {

#pragma clang diagnostic push

#pragma clang diagnostic ignored "-Wdeprecated-declarations"

            UIRemoteNotificationType myTypes = UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound;

            [[UIApplication sharedApplication] registerForRemoteNotificationTypes:myTypes];

#pragma clang diagnostic pop

        }

    }

}

//当版本号大于8.0时会进入下面函数,在下面函数中完成注册

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_8_0

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

    [application registerForRemoteNotifications];

}

#endif

//注册完成后回调的函数,在该函数中返回deviceToken

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {

    NSString *token = [[deviceToken description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];

    token = [token stringByReplacingOccurrencesOfString:@" " withString:@""];

    //向个推服务器注册deviceToken

    [GeTuiSdk registerDeviceToken:token];

    //向后台传递启动个推时回调的clientId,该数据只传一次

    [self.registerPushOpt registerPushToServer:self.clientId];


}

3、接收推送

个推的接收推送方法:

/**

 *  SDK通知收到个推推送的透传消息

 *

 *  @param payloadData 推送消息内容

 *  @param taskId      推送消息的任务id

 *  @param msgId       推送消息的messageid

 *  @param offLine     是否是离线消息,YES.是离线消息

 *  @param appId       应用的appId

 */

- (void)GeTuiSdkDidReceivePayloadData:(NSData *)payloadData andTaskId:(NSString *)taskId andMsgId:(NSString *)msgId andOffLine:(BOOL)offLine fromGtAppId:(NSString *)appId {


}

原生的接收推送方法

//点击消息时调用该方法

//后台接收到推送调用该方法

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {


    completionHandler(UIBackgroundFetchResultNewData);

}


//IOS10之后 推送消息接收

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


    completionHandler(UIBackgroundFetchResultNewData);

}


//IOS10之前 推送消息接收

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


}


4、关闭推送通道

关闭应用的推送通道:

[[UIApplication sharedApplication] unregisterForRemoteNotifications];

关闭个推通道

//关闭推送状态

[GeTuiSdk setPushModeForOff:YES];

开启个推通道

//开启推送状态

[GeTuiSdk setPushModeForOff:NO];


5、在该推送中实现的流程

启动个推SDK获得个推的clientId

注册推送获得deviceToken

向个推服务器注册deviceToken

向服务器传递个推的clientId

服务器更具clientId向个推推送消息

个推根据注册的deviceToken把消息推送到推送到APNS

APNS将推送消息推送到设备上(手机或电脑)

设备(手机或电脑)把信息推送到APP




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值