iOS自定义推送消息提示框

2020-01-18 15:40:50刘景俊

上面pushView需要一个模型 实现代码如下 


// push 推送的model

推送过来的数据如下:
/**
 content = dsfdsnfds;
 id = 5077;
 mid = 1270339;
 url = "3?_from=push";
 urlType = 3;
 
 **/
#import <Foundation/Foundation.h>

@interface STPushModel : STBaseModel<NSCoding> //STBaseModel 是一个继承自NSObject的类 我主要是在这个类中实现了字典转模型的功能 你可以直接修改为NSObject

/***id**/
@property (copy,nonatomic) NSString* recordId;
/***标题**/
@property (copy, nonatomic) NSString *title;
/***url**/
@property (copy, nonatomic) NSString *url;
/***url 类型**/
@property (copy, nonatomic) NSString* urlType;
/***图标的高度**/
@property (assign,nonatomic) NSString * mid;
/***推送内容**/
@property (copy, nonatomic) NSString* content;

@end 

因为涉及到好几个页面需要使用同样的推送消息数据 进行判断而处理相应的业务 所有我对此模型做了归档处理


#import "STPushModel.h"

@implementation STPushModel


/**
 * 保存对象到文件中
 *
 * @param aCoder <#aCoder description#>
 */
-(void)encodeWithCoder:(NSCoder *)aCoder
{
 [aCoder encodeObject:self.recordId forKey:@"recordId"];
 [aCoder encodeObject:self.title forKey:@"title"];
 [aCoder encodeObject:self.url forKey:@"url"];
 [aCoder encodeObject:self.urlType forKey:@"urlType"];
 [aCoder encodeObject:self.mid forKey:@"mid"];
 [aCoder encodeObject:self.content forKey:@"content"];
}


/**
 * 从文件中读取对象
 *
 * @param aDecoder <#aDecoder description#>
 *
 * @return <#return value description#>
 */
-(id)initWithCoder:(NSCoder *)aDecoder
{
 //注意:在构造方法中需要先初始化父类的方法
 if (self=[super init]) {
  self.recordId=[aDecoder decodeObjectForKey:@"recordId"];
  self.title=[aDecoder decodeObjectForKey:@"title"];
  self.url=[aDecoder decodeObjectForKey:@"url"];
  self.urlType=[aDecoder decodeObjectForKey:@"urlType"];
  self.mid=[aDecoder decodeObjectForKey:@"mid"];
  self.content= [aDecoder decodeObjectForKey:@"content"];
 }
 return self;
}
@end 

做好了上面的准备工作之后  接下来我们就需要 APPdelegate里面注册远程推送通知  并且监听推送消息 

这里以个推为例子:

第一步在下面的方法中 实现个推的注册方法 


- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

 // 注册个推推送服务
 [[GeTuiApilmpl sharedInstance] geTuiRegister];


} 

GeTuiApilmpl 是一个单例类 专门用于注册个推的推送方法 实现代码如下:


#import <Foundation/Foundation.h>
#import "GeTuiSdk.h"
@interface GeTuiApilmpl : NSObject <GeTuiSdkDelegate>

+ (GeTuiApilmpl *) sharedInstance;

- (void) geTuiRegister;

@end