此文档主要是用于在游戏开发商需要接入BaseSDK后使用推送功能时的补充文档。
接入BaseSDK的游戏及应用的iOS客户端开发者。
仅在需要使用firebase远程推送功能时在podfile添加以下库,功能需求需和运营确认。
#firebase远程推送pod 'WPMIDSDKPush/MID_PushFirebase', '1.0.5'
须开启Push Notification权限和后台运行权限。找到应用Target设置中的Signing & Capabilities,点击左上角+添加。如果没有开启推送权限,应用将获取不到DeviceToken;如果没开启后台运行权限,消息到达率将会比较低。
Remote notifications:APNs静默推送权限
用于本地推送,不需要服务端配合。
接口说明:
在使用苹果本地和远程推送前需确保已经调用注册接口。
- (void)registRemoteNotification:(UIApplication *_Nullable)application;
调用方法:
[MIDGameOCSDK.shareInstance registRemoteNotification:application];
接口说明:
本地推送延迟指定时间发送,需先注册上述的苹果推送接口。
/// 当前时间,延后几秒发出/// - Parameters:/// - notificationId: 当前通知的唯一标识符/// - title: 推送标题/// - contxt: 推送内容/// - delyTime: 延后时间- (void)sendLocalNotificationWithId:(NSString *_Nonnull)notificationId title:(NSString *_Nonnull)title context:(NSString *_Nonnull)contxt delyTime:(NSString *_Nonnull)delyTime;
调用方法:
[[MIDGameOCSDK shareInstance] sendLocalNotificationWithId:@"唯一标识符" title:@"此处填写推送标题" context:@"此处填写推送内容" delyTime:@“此处设置需要延迟多少秒”];
接口说明:
本地推送指定日期时间来发出,需先注册苹果推送。
/// 指定日期时间来发出,日期格式为yyyyMMddhhmmss/// - Parameters:/// - notificationId: 当前通知的唯一标识符/// - title: 推送标题/// - contxt: 推送内容/// - date: 指定日期时间来发出,日期时间戳- (void)sendLocalNotificationWithId:(NSString *_Nonnull)notificationId title:(NSString *_Nonnull)title context:(NSString *_Nonnull)contxt date:(long)date;
调用方法:
例1:字符串转时间戳NSString *timeStr = @“20240105121200”;//日期格式为yyyyMMddhhmmss字符串转时间戳NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];// 创建一个时间格式化对象[dateFormatter setDateFormat:@"yyyyMMddhhmmss"]; //设定时间的格式NSDate *tempDate = [dateFormatter dateFromString:timeStr];//将字符串转换为时间对象[[MIDGameOCSDK shareInstance] sendLocalNotificationWithId:@"唯一标识符" title:@"推送测试3" context:@"本地指定日期推送测试" date:(long)[tempDate timeIntervalSince1970]*1000];例2:直接传入时间戳[[MIDGameOCSDK shareInstance] sendLocalNotificationWithId:@"唯一标识符" title:@"此处填写推送标题" context:@"此处填写推送内容" date:(long)[[NSDate date] timeIntervalSince1970]*1000];
接口说明:
用于取消指定当前通知的唯一标识符的推送。
/// 取消指定通知/// - Parameter notificationId: 当前通知的唯一标识符- (void)cancelLocalNotificationWithId:(NSString *_Nonnull)notificationId;
调用方法:
[MIDGameOCSDK.shareInstance cancelLocalNotificationWithId:@“唯一标识符”];
接口说明:
用于取消全部推送。
/// 取消全部通知- (void)cancelAllLocalNotification;
调用方法:
[MIDGameOCSDK.shareInstance cancelAllLocalNotification];
此接口用于设置用户推送标签,需要登录以后调用。
允许设置多个标签,标签设置为增加标签, 相同标签code 多次设置为修改。
比如有一个标签code: userlv name: 用户等级 value:1 首次设置代表为用户等级1级
再次设置 code: userlv name: 用户等级 value:2 为修改用户等级为2级
/*** 本地推送标签设置, 举例设置3个标签*///仅作为结构示例NSMutableDictionary *label1 = [[NSMutableDictionary alloc] init];[label1 setObject:@"对应的code" forKey:@"labelCode"];[label1 setObject:@"对应的name" forKey:@"labelName"];[label1 setObject:@"对应的value" forKey:@"labelValue"];NSMutableDictionary *label2 = [[NSMutableDictionary alloc] init];[label2 setObject:@"对应的code" forKey:@"labelCode"];[label2 setObject:@"对应的name" forKey:@"labelName"];[label2 setObject:@"对应的value" forKey:@"labelValue"];NSMutableDictionary *label3 = [[NSMutableDictionary alloc] init];[label3 setObject:@"对应的code" forKey:@"labelCode"];[label3 setObject:@"对应的name" forKey:@"labelName"];[label3 setObject:@"对应的value" forKey:@"labelValue"];NSArray *arr = [[NSArray alloc] initWithObjects:label1,label2,label3, nil];[MIDGameOCSDK.shareInstance MIDSDKSendUserlabels:arr];
labels 参数说明,
| 参数 | 参数类型 | 参数说明 |
|---|---|---|
| labelCode | NSString | 标签标识 |
| labelName | NSString | 标签名称 |
| labelValue | NSString | 标签内容 |
所有推送相关生命周期接口都需要接入
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{[MIDGameOCSDK.shareInstance MIDSDKApplication:application didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler];}- (void)application:(UIApplication *)application didReceiveRemoteNotification:(nonnull NSDictionary *)userInfo{[MIDGameOCSDK.shareInstance MIDSDKApplication:application didReceiveRemoteNotification:userInfo];}- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken{[[MIDGameOCSDK shareInstance] MIDSDKApplication:application didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];}- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error{[MIDGameOCSDK.shareInstance MIDSDKApplication:application didFailToRegisterForRemoteNotificationsWithError:error];}
