此文档主要是用于在游戏开发商需要接入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];
}