友盟-推送-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在前台接受到消息的弹出框么?的主要内容,如果未能解决你的问题,请参考以下文章

使用极光/友盟推送,APP进程杀死后为啥收不到推送

远程(离线)推送自定义推送声音,友盟极光

自定义iOS 中推送消息 提示框

使用极光/友盟推送,APP进程杀死后为啥收不到推送

Android友盟推送集成

Flutter实现原生推送-友盟推送iOS版