比如如上图的那种推送功能
现在哪些推送平台可以实现这种功能
推送一般分为两种:
推送通知
透传消息
推送通知一般是推送提供商帮你已经实现基本界面交互(包括收到通知后状态栏通知消息提醒, 通知点击行为), 这类是比较常用的. 而透传消息它只负责接收, 而不管前端展示, 这种消息正好能解决题主的需求: 客户端收到透传消息后, 自己编写代码弹出自定义样式的状态栏通知.
请参考各大推送厂商的SDK文档.
iOS在8.0之后就可以自定义推送信息显示按钮, 并且通过代理监听用户对推送消息操作.
1.在UIApplication中有对推送消息进行设置的方法
- (void)registerUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings
2.UIUserNotificationSettings类中可以对消息添加用户行为(如: 按钮)
+ (instancetype)settingsForTypes:(UIUserNotificationType)types
categories:(nullable NSSet<UIUserNotificationCategory *> *)categories;
3.添加UIUserNotificationAction,用于用户操作.
- (void)setActions:(nullable NSArray<UIUserNotificationAction *> *)actions forContext:(UIUserNotificationActionContext)context;
[[UIApplication sharedApplication] registerForRemoteNotifications];
UIMutableUserNotificationAction *actionAccept = [[UIMutableUserNotificationAction alloc] init];
actionAccept.identifier = @"accept";
actionAccept.title=@"√ 允许";
actionAccept.activationMode = UIUserNotificationActivationModeForeground;
actionAccept.destructive = YES;
UIMutableUserNotificationAction * actionReject = [[UIMutableUserNotificationAction alloc] init];
actionReject.identifier = @"reject";
actionReject.title=@"× 拒绝";
actionReject.activationMode = UIUserNotificationActivationModeBackground;
actionReject.authenticationRequired = NO;
actionReject.destructive = NO;
UIMutableUserNotificationCategory *category = [[UIMutableUserNotificationCategory alloc] init];
category.identifier = @"Category";
[category setActions:@[actionReject,actionAccept] forContext:(UIUserNotificationActionContextDefault)];
UIUserNotificationSettings *uns = [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound) categories:[NSSet setWithObjects: category, nil]];
[[UIApplication sharedApplication] registerUserNotificationSettings: uns];
使用自定义消息都可以做到。
题主说的这个是通知的样式,和推送关系不大。虽然推送通常也会带一个简单样式的默认通知,但是一般还是会使用自定义消息然后自己去定制通知的样式。
2 回答1.3k 阅读✓ 已解决
2 回答1k 阅读
2 回答2.6k 阅读
1 回答1.1k 阅读✓ 已解决
1 回答2.7k 阅读
2 回答1.7k 阅读
1 回答2.1k 阅读
@erehmi 说的不错,根据厂商会有所不同。
给你举个原生android例子: