首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当应用程序在后台时,在不调用DidReceiveRemoteNotification的情况下显示NotificationHub的Xamarin iOS通知

在Xamarin iOS开发中,可以使用NotificationHub来实现推送通知功能。NotificationHub是Azure提供的一项云服务,用于发送和管理推送通知。它可以与Xamarin.iOS应用程序集成,实现在应用程序后台时显示通知的功能。

具体实现步骤如下:

  1. 配置Azure Notification Hub:首先,在Azure门户上创建一个Notification Hub实例,并获取连接字符串和Hub名称。
  2. 集成Notification Hub SDK:在Xamarin.iOS项目中,使用NuGet包管理器安装Azure Notification Hubs SDK。可以通过在Visual Studio中右键点击项目,选择“管理NuGet程序包”来搜索并安装。
  3. 注册设备:在应用程序启动时,可以使用NotificationHub SDK提供的Register方法来注册设备。这将为设备生成一个唯一的标识符,用于将推送通知发送到该设备。
  4. 处理推送通知:在AppDelegate.cs文件中,可以重写DidReceiveRemoteNotification方法来处理接收到的推送通知。在这个方法中,可以获取通知的内容,并根据需要执行相应的操作,例如显示通知、更新UI等。

下面是一个示例代码:

代码语言:txt
复制
using Foundation;
using UIKit;
using Microsoft.Azure.NotificationHubs;

namespace YourAppNamespace
{
    [Register("AppDelegate")]
    public class AppDelegate : UIApplicationDelegate
    {
        public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
        {
            // 注册设备
            RegisterForRemoteNotifications();

            return true;
        }

        public override void RegisteredForRemoteNotifications(UIApplication application, NSData deviceToken)
        {
            // 获取设备标识符
            var hub = new SBNotificationHub("<connection string>", "<hub name>");
            hub.RegisterNativeAsync(deviceToken, null, error =>
            {
                if (error != null)
                {
                    // 注册失败
                }
                else
                {
                    // 注册成功
                }
            });
        }

        public override void DidReceiveRemoteNotification(UIApplication application, NSDictionary userInfo, Action<UIBackgroundFetchResult> completionHandler)
        {
            // 处理推送通知
            // 在这里可以获取通知的内容,并根据需要执行相应的操作
            // 例如显示通知、更新UI等
        }

        private void RegisterForRemoteNotifications()
        {
            if (UIDevice.CurrentDevice.CheckSystemVersion(10, 0))
            {
                UNUserNotificationCenter.Current.RequestAuthorization(UNAuthorizationOptions.Alert | UNAuthorizationOptions.Sound | UNAuthorizationOptions.Badge, (granted, error) =>
                {
                    if (granted)
                    {
                        InvokeOnMainThread(UIApplication.SharedApplication.RegisterForRemoteNotifications);
                    }
                });
            }
            else if (UIDevice.CurrentDevice.CheckSystemVersion(8, 0))
            {
                var settings = UIUserNotificationSettings.GetSettingsForTypes(UIUserNotificationType.Alert | UIUserNotificationType.Sound | UIUserNotificationType.Badge, null);
                UIApplication.SharedApplication.RegisterUserNotificationSettings(settings);
                UIApplication.SharedApplication.RegisterForRemoteNotifications();
            }
        }
    }
}

在上述代码中,需要将<connection string><hub name>替换为实际的Azure Notification Hub连接字符串和Hub名称。

推荐的腾讯云相关产品:腾讯云移动推送(https://cloud.tencent.com/product/tpns)

腾讯云移动推送是腾讯云提供的一项移动推送服务,可以帮助开发者实现移动应用的推送通知功能。它提供了丰富的功能和灵活的接口,支持多种推送方式和推送场景,适用于各种规模的应用。

希望以上信息对您有所帮助!

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

推送-推送原理性说明

设备处于非联网状态时候,APNs服务器会保留Provider所推送最后一条通知设备转换为连网状态,APNs则把其保留最后一条通知推送给我们设备;如果设备长时间处于非联网状态下,那么APNs...推送通知本身是 iOS 系统行为,所以 App 没有运行(没有在前台也没有在后台时候:仍然能够推送及接收(通知中心通知、顶部横幅、刷新 App 右上角小圆点即 badge [以下简称角标] 等都会由系统来控制和展示...但是收到推送,是无法 App 代码中获取到通知内容。因为沙盒机制,此时 App 任何代码都不可能被执行。...处于后台:可通过didReceiveRemoteNotification:fetchCompletionHandler:获取通知内容 // 获取情况中与普通推送唯一不同点,此时 iOS 系统允许开发者...处于后台:可通过 didReceiveRemoteNotification:fetchCompletionHandler: 获取通知内容 //获取情况中与普通推送唯一不同点,此时 iOS 系统允许开发者

3.7K20

iOS远程消息推送

远程推送是需要网络,服务端通过苹果消息推送服务器APNS实现推送,无论APP处于前台、后台或者被kill情况下仍能收到消息通知,如新闻推送、聊天消息接收等。 本文要讲的是后者远程消息推送。...(2)App处于后台,且开启了 Remote Notification,如果系统收到推送消息,当用户点击推送消息,会执行application:(UIApplication *)applicationdidReceiveRemoteNotification...(3)App没有运行(APP退出)情况下,系统收到推送消息,用户点击推送消息,启动App。...aps 中可以包含以下字段中一个或多个: Alert:其内容可以为字符串或者字典,如果是字符串,那么将会在通知显示这条内容。 badge:其值为数字,表示通知到达设备,应用角标变为多少。...(2)消息内容 消息简介:客户端收到消息推送有两种形式,客户端后台运行或退出一般推送显示通知栏,客户端前台运行一般弹出弹框或不显示,简介内容注意字数过多溢出情况。

4.4K20

项目中友盟推送适配iOS10

(声明:当前项目中用是友盟推送) 对于客户端来说,推送有三种情况:1.程序在前台运行  2.程序在后台运行   3.程序不在运行 先看下本人在iOS10之前推送代码: 程序在运行(前台、后台接收到通知...如果是在后台运行在点击推送消息后就会直接进行页面的跳转,如果是在前台运行需要用户进行跳转选择,示意图: ? 程序不在运行时接收到通知: ?...由于我用了跳转选择所以即使不适配iOS10也没关系,因为如果在iOS10环境下运行就不会再走didReceiveRemoteNotification这个方法了。...适配iOS10是必然,下面是适配iOS10代码: ? ? 疑问:iOS10之后didReceiveRemoteNotification方法,为什么alertView控件还能显示出来?...解答:alertView是通过走iOS10新增方法显示出来

90210

ios入门之消息推送

前言 去年苹果大会上,苹果带来iOS 10 系统中将之前繁杂推送通知统一成UserNotifications.framework 来集中管理和使用通知功能,还增加一些实用功能——撤回单条通知、...更新已展示通知、中途修改通知内容、通知显示多媒体资源、自定义UI等功能。...那么ios10之前,ios消息推送是怎么分类呢?...对于app被杀死情况,要先启动app,启动完毕会调用AppDelegate方法。 需要特别注意是:iOS8.0以后本地通知有了一些变化,如果要使用本地通知,需要得到用户许可。...// 接受到远程退职时会执行该方法(进入前台或者应用程序在前台) - (void)application:(UIApplication *)application didReceiveRemoteNotification

1.8K60

iOS 点击推送消息跳转指定界面 —总结篇app 在后台app被杀死

1.png 这个是转成本地推送方法,当然对于里面数据转换你要根据你们业务需求和后台返回情况做转化,因为你之后点击本地推送时候还是要根据你转本地推送所传值进行对应跳转 - (void)...通知内容类 UNMutableNotificationContent * content = [UNMutableNotificationContent new]; //设置通知请求发送...app图标上显示数字 content.badge = @2; //设置通知内容 content.body = payData[@"content"]; //默认通知提示音...= @"这里是副标题"; //设置通知标题 content.title = payData[@"title"]; //设置从通知激活applaunchImage图片...1.前台收到消息时候做相应处理比如转本地推送,弹窗提醒等 2.后台点击消息时候做处理(因为后台时候推送消息过来之后,展示苹果已经帮我做好了,直接处理点击挑战就行了,当然如果是本地推送那是我们自己做处理

8.2K71

推送-远程通知推送教程

iOS 9上,远程推送可以做到: 显示短文本 播放通知提示音 设置APP图标的角标 不打开APP情况下,允许用户与APP交互 允许APP在后台静默唤醒来执行任务 这份远程推送通知教程会告诉你远程推送工作原理并让你了解它一些特性...编绎运行即可查看当前最新播客节目: 1463988997846298.jpg 这个App存在问题是有新播客节目可以获取不能通知到用户。并且也不能显示任何最新消息。...如果你应用当前正运行在前台,推送通知将不会被显示。但是 application(_:didReceiveRemoteNotification:) 会被立即调用。...如果你应用正在运行,或者被挂起在后台,并且用户通过点击通知使应用进入前台 application(_:didReceiveRemoteNotification:) 方法会被调用。...第一种情况下,WenderCast将到创建一个新section,并直接打开以显示到这个新建section。

3.8K30

UIViewController生命周期

合创建一些附加view和控件 3、ViewWillAppear 视图加载完成,并即将显示屏幕上,会调用viewWillAppear方法,在这个方法里,可以改变当前屏幕方向或状态栏风格等。...挂起,程序还是停留在内存中系统内存低,系统就把挂起程序清除掉,为前台程序提供更多内存。...生命周期: application didFinishLaunchingWithOptions:当应用程序启动执行,应用程序启动入口,只应用程序启动执行一次。...applicationDidEnterBackground:应用程序已进入后台程序时,要执行委托调用。...applicationWillEnterForeground:应用程序将要进入前台(被激活),要执行委托调用,刚好与applicationWillResignActive 方法相对应。

1.8K10

iOS 点击通知打开对应页面

通知被点击调用方法 设备接到apns发来通知,应用处理通知有以下几种情况: 1)....应用还没有加载 这时如果点击通知显示按钮,会调用didFinishLaunchingWithOptions,不会调用didReceiveRemoteNotification方法。...3).应用在后台 (1)此时如果收到通知,点击显示按钮,会调用didReceiveRemoteNotification方法。...方法中进行判断是否通过点击通知进入app,设置全局变量,需要跳转页面根据全局变量进行跳转 2) 应用在前台或后台 在所有可跳转页面添加消息观察者 override func viewWillAppear...只应用程序启动执行一次。application参数用来获取应用程序状态、变量等,值得注意是字典参数:(NSDictionary *)launchOptions,该参数存储程序启动原因。

2.4K20

iOS开发--本地通知与远程通知

设置音效,(提醒作用) 2.设置横幅, 3.设置弹窗, 4.锁屏下也可以呈现, 5.App图标的数字 (即新内容数量) 至于显示横幅或者弹窗,取决于用户设置 iOS手机设置中:通知中心-...:3.0]; // 2.2.设置通知内容 localNote.alertBody = @"干吗?"....设置alertTitle localNote.alertTitle = @"你有一条新通知"; // 2.7.设置有通知音效 localNote.soundName = @...,如果用户打开通知,可以让用户进入一些特定界面 /* 应用程序进入前台,或者在前台时候都会执行该方法 */ - (void)application:(UIApplication *)application...didReceiveLocalNotification:(UILocalNotification *)notification { // 必须要监听--应用程序后台时候进行跳转

3.1K20

iOS Push技术

“在线Push”; 2)本地Push:这种就是最常见iOS系统通知(作用相当于传统PC端提示窗口,iOS10以后全部整合到UserNotifications.framework框架了),涉及任何网络数据...,仅仅是让APP拥有一个统一系统通知方式而已,比如:闹钟定时提醒等; 3)离线/远程Push:这就是iOS程序员最熟悉APNs这一套东西了,它使得APP处于后台或者被kill情况下仍能收到网络通知...这里以iOS Qzone为例,APP在前台,自己发说说被点赞了,收到在线push如下: 3.2 离线/远程push 离线push:APP离线(kill掉进程、切到后台、锁屏)...,我们可以看到这里设置为66: 4.3 处理本地push ( iOS10以前) 1)App没有启动情况下处理本地push 这种情况下点击通知,会启动App,而在App...差别就是,如果app在前台是收到离线(远程)push,那么就会调用: 相对,如果在后台或者杀进程情况下,点击收到离线push,那么就会调用,如果没有实现: 则会调用

1.7K30

iOS开发——推送跳转到指定页面

推送通知到达,点击推送通知跳转到指定界面,是很多应用都会碰到一个需求,而要实现这个功能,解决方法也很多,若是去谷歌搜索,有一个万能跳转文章可能会进入您眼帘,但是我实际去看了这个项目的源码之后...之前几篇文章,我也研究iOS开发组件化架构模式,也有的应用在走组件化道路上使用了URL来跳转界面完成解耦,实现推送,我们也能沿用这个思路,用URL实现界面的跳转。...来说一说这个基本使用方式,首先你得跟后台约定推送参数,比如我在跟后台约定里,参数名就是url,那么我拿到推送userInfo,就需要把url解析出来。...#pragma mark - 推送地址 static NSString *ARTICLES_URL = @"lix://cms/articles/:id"; //资讯详情 定义好url情况下,我们需要先用...[MGJRouter openURL:url]; 到这里,推送之后页面跳转也就差不多完成了,只要再注意badge数值处理,前台推送通知处理等情况就可以了。

1.9K20

iOS Push详述,了解一下?

------- 离线push:APP离线(kill掉进程、切到后台、锁屏),收到消息提醒,称为离线push。...这里最简单以大家常用手机QQ为例,APP在后台、锁屏或者被kiil了进程,收到了消息: [2.png] 离线push 1、静默push 静默push用场景较少,这里只做简要介绍。...本地push实现 一、 iOS10以前本地push弹出方式 -------------------- 试验过iOS10以前本地push方法iOS10+系统也能使用,不过可能有些参数生效。...push 这种情况下点击通知,会启动App,而在App中,开发人员可以通过实现AppDelegate中方法:- (BOOL)application:(UIApplication)application...差别就是,如果app在前台是收到离线(远程)push,那么就会调用 [21.png] 相对,如果在后台或者杀进程情况下,点击收到离线push,那么就会调用,如果没有实现 [22.png] 则会调用

4.4K60

了解iOS消息推送一文就够:史上最全iOS Push技术详解

,仅仅是让APP拥有一个统一系统通知方式而已,比如:闹钟定时提醒等; 3)离线/远程Push:这就是iOS程序员最熟悉APNs这一套东西了,它使得APP处于后台或者被kill情况下仍能收到网络通知...3.2 离线/远程push 离线push:APP离线(kill掉进程、切到后台、锁屏),收到消息提醒,称为离线push。...这里最简单以大家常用手机QQ为例,APP在后台、锁屏或者被kiil了进程,收到了消息: ?...4.3 处理本地push ( iOS10以前) 1)App没有启动情况下处理本地push 这种情况下点击通知,会启动App,而在App中,开发人员可以通过实现AppDelegate中方法:- (...相对,如果在后台或者杀进程情况下,点击收到离线push,那么就会调用,如果没有实现: ? 则会调用: ? 若实现了前者,就只调用前者。

19.7K30

iOS 远程推送概念相关准备工作代码实现:(前提:确保bundleID和网站配置一样)AppDelegate中全部代码

适当时候,公司根据token号再通知苹果服务器进行消息推送 ?...远程推送和本地推送一样,都需要在两个地方做代码处理: 接受到通知调用代理方法中(前台和后台) 启动 didFinishLaunchingWithOptions方法中(退出状态),用 launchOptions...[UIApplicationLaunchOptionsRemoteNotificationKey]获取远程通知对象 (1)前台和后台推送回调这个代理方法(退出设置didFinishLaunchingWithOptions...; (2)前台、后台和退出推送都会调用这个代理方法(iOS 7之后可用) - (void)application:(UIApplication *)application didReceiveRemoteNotification...} #pragma mark 接收到远程推送消息时调用此方法(后台和前台可用) - (void)application:(UIApplication *)application didReceiveRemoteNotification

1.8K100

iOS 推送手机消息背后技术

开发者通过调用iOS系统方法就可以发起本地消息推送,例如我们最常见闹钟应用,App能够根据本地存储闹钟信息直接发起本地通知,因此即使没有网络也能收到闹钟提醒。...等参数字典类型;badge参数使用整形设置App图标右上角显示数字,badge设置为0角标不会显示;sound参数用于设置推送声音,传该参数或者传递空字符串则推送不会发出提示音,设置为default...方法中通过completionHandler函数调用让推送消息直接在前台显示,用户点击前台显示推送消息,didReceiveNotificationResponse回调方法也会被执行。...前两个回调方法都能够用于App远程消息推送处理,同时使用时只有远程静默推送方法会被调用payload包含参数content-available=1,该推送就是静默推送,静默推送不会显示任何推送消息...,App在后台挂起,静默推送回调方法会被执行,开发者有30s时间内在该回调方法中处理一些业务逻辑,并在处理完成后调用fetchCompletionHandler。

3.8K103

Xamarin 学习笔记 - 配置环境(Windows & iOS)

你可以一个Portable工程里面通过XAML加上C#或者使用Xamarin.Android或Xamarin.iOS构建表单,在这种情况下,我们需要用到特定本地环境,比如说通过C#代码操纵iOSStoryboard...默认情况下安装IDE,其中一些已经安装,如果你希望添加更多仿真器,找到Preference->Downloads->Components并选中你希望安装仿真器。...https://blog.xamarin.com/building-xamarin-forms-apps-net-standard/ 而且你可以包含Azure移动应用程序,作为后台支持工程。...Xamarin Live Player Visual Studio有一个强大窗体预览工具,它应该在运行时显示视图,正如每个人都在抱怨那样,它压根工作。...一旦发布并使用了应用程序,开发人员就想知道发生了什么并且发生崩溃易于维护,你可以从应用程序字段中获取崩溃报告中实时堆栈跟踪。

6.1K20
领券