友盟-推送-IOS-可以自定义App在前台接受到消息的弹出框么?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了友盟-推送-IOS-可以自定义App在前台接受到消息的弹出框么?相关的知识,希望对你有一定的参考价值。
参考技术A 1、可以定制标题和OK键的文字标题的字符串为:NSLocalizedString(@"Notification",@"Notification")
OK的字符串为:NSLocalizedString(@"OK", @"OK")
实现@"Notification"和"OK"的多语言(添加至Localizable.strings)即可
如果你对 ios 的多语言不太了解,请自行搜索 iOS 多语言
2、如需其他要求需要关闭系统的弹出框,然后自行实现
注意
此方法会丢失App在前台消息的点击统计,你需要主动使用补发统计接口sendClickReportForRemoteNotification
比如需要两个按钮,自定义弹出按钮的UI等等
请在 didReceiveRemoteNotification 中添加弹出框
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
//关闭友盟对话框
[UMessage setAutoAlert:NO];
//此方法不要删除
[UMessage didReceiveRemoteNotification:userInfo];
// app was already in the foreground
if([UIApplication sharedApplication].applicationState == UIApplicationStateActive)
UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"title"
message:@"message"
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
[UMessage sendClickReportForRemoteNotification:self.userInfo];
安卓使用友盟推送问题总结
最近用了一下友盟的推送,遇到一些问题,做了一下总结.
总结
总结一
如何在未点击推送通知时处理一些操作.友盟文档中只给出了自定义消息和自定义通知栏动作的代码示例.其实在UmengMessageHandler回调中还有一个回调方法dealWithNotificationMessage用于处理这种情况,当然可以通过自定义消息来完成这个功能,手动去创建一个推送通知,但是这里偷个懒.代码如下:
// 友盟消息处理
UmengMessageHandler messageHandler = new UmengMessageHandler()
@Override
public void dealWithCustomMessage(final Context context, final UMessage msg)
// 自定义消息
@Override
public void dealWithNotificationMessage(Context context, UMessage uMessage)
super.dealWithNotificationMessage(context, uMessage);
// 收到消息时的回调方法(不点击通知也会走),自定义消息和通知都会走这个回调,可以在这个回调方法中做一些预处理
;
// 自定义通知栏动作
UmengNotificationClickHandler notificationClickHandler = new UmengNotificationClickHandler()
@Override
public void dealWithCustomAction(Context context, UMessage msg)
;
总结二
如何清除掉推送消息.因为项目中带有用户体系,所有当用户退出登录或者被顶号,需要去清除掉之前收到的通知,为用户隐私做考虑.友盟文档中并没有提到这块,而且大概看了一下友盟封装的Notification(UmengMessageHandler类中),发送通知时的ID是随机数,代码如下:
// 随机数
this.f = (new Random(System.nanoTime())).nextInt();
...
// 发送通知
int var6 = this.f;
// 通知Manager
NotificationManager var5 = (NotificationManager)var1.getSystemService("notification");
var5.notify(var6, var2);
所以想要单个清除的话,就老老实实的完全自定义友盟的服务去处理,记录好notify的id,通过mNotificationManager.cancel(id)去完成需求;如果是之前提到的清除掉所有通知,则可以偷个懒,代码如下:
/**
* 取消通知
*
* @param context
*/
public static void cancelNotify(Context context)
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(ns);
mNotificationManager.cancelAll();
希望对遇到同样问题的童鞋有帮助,当然如果需求很复杂,就使用完全自定义去处理就可以,文章提到的也是比较偷懒的做法.
以上是关于友盟-推送-IOS-可以自定义App在前台接受到消息的弹出框么?的主要内容,如果未能解决你的问题,请参考以下文章