ios10 如何让app到后台后还一直联网。

aoyusky 2017-02-09 07:04:56
网上看了很多voip的,location的,放音乐的。
voip: 好像ios10就不行了。
放音乐 :审核不能通过。

有没有审核能通过的方法,最好有source,谢谢了。
...全文
2453 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
unsubscribe user 2020-08-12
  • 打赏
  • 举报
回复
楼主你好,我在ios13中设置后台模式Audio,Air Play 。用AudioServicesPlaySystemSound(id)播放音频,按home时音频就停止了。你知道原因吗?
XMelo 2017-05-30
  • 打赏
  • 举报
回复
    //    #import <AVFoundation/AVFoundation.h>

    NSError *setCategoryErr = nil;
    NSError *activationErr  = nil;
    [[AVAudioSession sharedInstance]
     setCategory: AVAudioSessionCategoryPlayback
     error: &setCategoryErr];
    [[AVAudioSession sharedInstance]
     setActive: YES
     error: &activationErr];
不过审核这块不确定
weijiewen_39 2017-05-27
  • 打赏
  • 举报
回复
最近在做VPN研究 Network Extension中,不知道这玩意能不能帮到你
lhwhu 2017-05-24
  • 打赏
  • 举报
回复
楼主最后怎么解决的?审核过了没有?
sailip 2017-02-10
  • 打赏
  • 举报
回复
使用后台定位的方式,写个runLoop就可以了。
scribbler 2017-02-10
  • 打赏
  • 举报
回复
具体可以参考一下链接 http://www.jianshu.com/p/59c421beb59e
scribbler 2017-02-10
  • 打赏
  • 举报
回复
iOS 应用程序,按下Home键时,APP从活动状态转入后台,绝大部分app通常在几秒内就从后台变成了挂起。 在内存吃紧的时候,iPhone会首先关闭那些挂起的app。 对一些特殊APP可以把自己声明为需要在后台运行,就能不限时地运行了。 iOS7以后提供的后台接口模式 1、Background Audio,这是后台的音频,这个很早之前便有,也是iOS设备中用得最多的后台应用,调用这个接口可以实现后台的音乐播放。 2、Location Services,这是后台的定位,系统会拥有统一页面进行管理。 3、VoIP,后台语音服务,类似Skype通话应用需要调用,可进行后台的语音通话。 4、Newsstand,报刊杂志后台自动下载更新,其能够自动实时更新。 5、Background Task Completion,这个接口早在iOS 4时候便拥有,其可以供任意类型的APP使用,不过在旧系统中,这个接口的后台限制运行时间仅为10分钟,意味着当应用退至后台,其后台运行仅能持续10分钟便会转至休眠状态。iOS 7中对这个接口作出了改变,原来的为连续10分钟,即不论你这10分钟内用户是否关闭屏幕进入休眠状态,应用仍然会在后台等待10分钟完结后推出,而新的改进为假如遇到关闭屏幕休眠的情况,这后台运行的10分钟便会跟随一同休眠,剩余的后台时间将会留待用户再一次唤醒设备才计算。这样后台运行的时间仍然为10分钟,但并不连续,这样做的优点为省电。 6、 Remote Notification 7、Background Transfer Service,后台上传下载。iOS最接近传统多任务的后台接口,可供任意类型的app调用,无时间限制。应用场景包括后台上传和下载数据,这使得游戏后台更新数据包,后台上传视频等等都成为可能,但是正如其名字,它只能用于处理上传下载这种传输类的任务,类似后台剪切板监控这种它就无能为力了。
100多个Android的实用开源小应用,包含Android -- 引导页面的实现 Android APP引导页大全 Android Push it单机版事件管理APP Android RecycleView+任意头尾布局+拖拽换位+拖拽删除demo Android sql练习合集 Android 仿12306 Android 优秀计步器 Android 体重计算源码 Android 使用Gallery_tabhost实现标签效果图源码 Android 例子源码根据CPU使用时间计算程序电量使用 Android 医院介绍电子书籍源码 android 图片涂鸦 Android 基于局域网的P2P聊天系统 Android 天气预报 Android 实时浏览各种文章APP Android 开发辅助工具 Android 手机新闻客户端源码 Android 手机点餐下单项目源码 Android 新闻客户端 Android 日历控件源码 Android 日记系统源码(数据库的基本操作) Android 极简强大VR本地播放器 Android 用handler机制联网获取图片 Android 百宝箱 Android 简单的翻译软件 Android 精美仿开眼视频跨平台App Android 自定义数字密码输入键盘 Android 趣味答题应用 Android 音乐播放器 Android--AA记账助手 Android--Hide-Music-Player Android-3D卡片效果 android个人中心页面效果源码 Android仿微博、微信、qq 点击缩略图TransferImage Android例子源码IOS风格的uitableview列表 Android例子源码IOS风格的圆角分组设置页面 Android例子源码不断保持后台唤醒的例子源码 Android例子源码九宫格密码输入例子 Android例子源码仿QQ的头像选择弹出的对话框 Android例子源码仿多看阅读的左右平移翻页效果小例子 Android例子源码可以通过网络请求内容的自定义列表选择Dialog Android例子源码图片旋转缩放加盖水印透明倾斜扭曲处理 Android例子源码实现Windows8风格的Dialog Android例子源码强大的listview效果集合项目 Android例子源码模仿IOS音乐的可拖动导航栏功能 Android例子源码模仿安卓微信、云播雷达扫描动画效果 Android例子源码类似58同城的通过滑屏控制引导页 Android例子源码计步器圆形UI设计 Android例子源码适合新手学习的listview使用源码 android及时通讯源码 android可伸缩日历效果源码 Android应用源码CreativeCommons新闻客户端半成品 Android应用源码使用Vitamio框架的网络在线电视直播 Android应用源码全能网络视频播放器 Android应用源码单机版电子阅读器 Android应用源码可以直接发邮件的简洁课程表项目源码 Android应用源码可以管理U盘的文件管理器 Android应用源码哔哩哔哩弹幕网站源码 Android应用源码基于bmob的即时聊天 Android应用源码大学生考勤项目源码 Android应用源码带密码登陆的密码保险箱 Android应用源码开关WIFI热点搜索连接开源有注释 Android应用源码比较不错的新闻客户端 Android应用源码省市联动选择城市的天气预报源码 Android应用源码简单的NB微博项目源码 Android应用源码简洁的随手记事项目源码 Android应用源码类似小米的天天文件管理器 Android应用源码老人居家看护系统 Android应用源码蝌蚪听书第二版听书神器 android掌上几分钟视频应用源码 Android版GitHub Android简单通讯源码:手机控制PC的关机、重启 Android软件源码短信通讯录毕设项目带需求报告 Android软件源码类似时间轴记录的记账记事本 Android项目源码 studio和eclipse双版本仿bilibili客户端 Android项目源码GPS实时定位位置共享 Android项目源码QQ登录语音合成桌面控件天气预报 Android项目源码v2ex技术社区非官方客户端 Android项目源码事件日程管理APP Android项目源码任阅小说阅读器高仿追书神器 Android项目源码在线课堂教育UI框架源码 Android项目源码基于Bmob的糖尿病用药提醒追踪系统 Android项目源码基于MVVM架构的非官方知乎日报APP Android项目源码基于安卓的简单租车系统
1.什么是推送通知 在某些特殊情况下,应用程序被动收到的以不同种界面形式出现的提醒信息 推送通知的作用:可以让不在前台运行的app通知app发生了改变 iOS中得推送通知种类 远程推送通知(Remote Notification) 本地推送通知(Local Notification) 2.推送通知的5种形式 3.推送通知的特点 App关闭时,可以接收通知并显示 App打开并处于后台时,通知会显示 App打开并处于前台时,通知不会显示 点击通知后,默认会自动打开发出通知的App 4.远程推送通知 在联网的情况下,由远程服务器推送给客户端的通知,又称APNs(Apple Push Notification Services) 不管应用是打开还是关闭的情况下,都能接收到服务器推送的远程通知 5.远程通知的实现基础 在联网状态下,所有苹果设备都会与苹果服务器建立长连接 长连接的作用:时间校准,系统升级,查找我的iPhone 长连接的好处:数据传输速度快,数据保持最新状态 6.远程推送的实现原理 安装App时 发送UDID和BundleID给APNs加密后返回deviceToken 登陆服务时,将用户身份和deviceToken发给服务器,服务器记录 李四给张三发消息 发送消息及张三的用户身份 服务器按照张三的身份找到存储的deviceToken,将消息和deviToken发送给APNs APNs通过deviceToken推送消息给张三 7.实现远程推送功能的前提 真机 调试阶段的证书 aps_development.cer 电脑可以调试有推送功能的app的证书 iOS_development.cer 电脑可以真机调试的证书 xxx.mobileprovision 描述文件,其中确定了哪台手机和电脑可以进行调试 发布阶段的证书 aps.cer 用该证书中说明的那台电脑发布的app具有远程推送功能时,用来使该app有推送功能的证书 iOS_distribution.cer 电脑有发布app的能力的证书 xxx.mobileprovision 描述文件,其中描述了哪台电脑可以发布app 8.实现远程推送功能的步骤 在启动方法中注册通知 注册成功后收到设备的deviceToken 实现用户点击通知后的响应(两种情况) 程序没有关闭,在后台实现AppDelegate中的didReceiveRemoteNotification方法 程序已经关闭,执行AppDelegation中的didFinishesLaunchingWithOption方法 9.远程推送的具体实现过程 去开发者平台,生成两个支持远程推送的证书 先点击App IDS添加一个准确的可以支持push功能的应用程序的BundleID 到生成的证书的那个节点下,先添加一个development阶段的支持push功能的cer文件 到最后一个provision节点下添加一个development阶段的支持push功能创建的那个App ID,cer文件要选择最新生成的支持push功能的cer文件,最后生成,下载,双击安装 为了确定cer文件和provision文件安装成功,可以到钥匙串和Xcode中的设备节点中分别查看(远程推送证书的申请流程请移步http://www.cnblogs.com/czq1989/p/5311302.html) 新建一个工程,先修改info.plist文件中Bundle ID为第二步创建的那个ID 为了兼容7.0所以修改配置中的deployment target为7.0 在AppDelegate中,发请求,询问是否要开通push功能,如果用户点击允许,则接收从服务器端发回的deviceToken(需要真机联网) 配置通过点击了通知打开应用程序后要做的事情,可以在AppDelegate中通过实现didReceiveRemoteNotification方法,就可以获取到用户点击了通知这个动作 10.远程推送过程中AppDelegate中所要响应的方法   下面的方法都是写在AppDelegate.m文件中 复制代码 /* 1.有一种打开,叫做点击图标后的打开 2.还有一种打开,叫做 点击了 通知 之后的打开 当通过 点击通知 这种方法打开应用程序,执行didFinishLaunching方法时,launchOptions 参数中,就存着通知发来的消息,也就是 类似于 didReceiveRemote方法中的那个userInfo */ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { if ([UIDevice currentDevice].systemVersion.doubleValue <= 8.0) { //向服务器发请求,要注册推送功能,以此获取到服务器返回的deviceToken //type 用来说明 支持的通知形式 //如 横幅 声音 角标 [application registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeSound|UIRemoteNotificationTypeAlert]; }else{ UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge| UIUserNotificationTypeSound|UIUserNotificationTypeAlert categories:nil]; [application registerUserNotificationSettings:settings]; //申请使用通知 [application registerForRemoteNotifications]; } NSDictionary *userInfo = launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey]; UILabel *label = [[UILabel alloc]init]; label.frame = CGRectMake(0, 40, 300, 200); label.numberOfLines = 0; label.textColor = [UIColor whiteColor]; label.font = [UIFont systemFontOfSize:24]; label.backgroundColor = [UIColor blueColor]; label.text =[NSString stringWithFormat:@"%@",userInfo]; [self.window.rootViewController.view addSubview:label]; return YES; } //只要获取到用户同意,则服务器端返回deviceToken //会自动执行下面的方法 //1417f54c c7f0adb0 48e3558f 2b8a8bad 0a6a5152 54af017e 32137cda 8cbdb9d0 - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { NSLog(@"%@",deviceToken); } /* 用户点击了通知,进入到应用程序中,需要捕获到这个时机 从而决定这一次的进入应用程序,到底要显示或执行什么动作,下面的方法就会在点击通知时自动调用 */ /* 1.应用程序在前台时:通知到,该方法自动执行 2.应用程序在后台且没有退出时:通知到,只有点击了通知查看时,该方法自动执行 3.应用程序退出:通知到,点击查看通知,不会执行下面的didReceive方法,而是只执行didFinishLauncing方法 */ - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { //NSLog(@"%@",userInfo); //为了测试在应用程序退出后,该方法是否执行 //所以往第一个界面上添加一个label,看标签是否会显示一些内容 UILabel *label = [[UILabel alloc]init]; label.frame = CGRectMake(0, 250, 300, 200); label.numberOfLines = 0; label.textColor = [UIColor whiteColor]; label.font = [UIFont systemFontOfSize:24]; label.backgroundColor = [UIColor grayColor]; label.text =[NSString stringWithFormat:@"%@",userInfo]; [self.window.rootViewController.view addSubview:label]; } /* 此方法是新的用于响应远程推送通知的方法 1.如果应用程序在后台,则通知到,点击查看,该方法自动执行 2.如果应用程序在前台,则通知到,该方法自动执行 3.如果应用程序被关闭,则通知到,点击查看,先执行didFinish方法,再执行该方法 4.可以开启后台刷新数据的功能 step1:点击target-->Capabilities-->Background Modes-->Remote Notification勾上 step2:在给APNs服务器发送的要推送的信息中,添加一组字符串如: {"aps":{"content-available":"999","alert":"bbbbb.","badge":1}} 其中content-availabel就是为了配合后台刷新而添加的内容,999可以随意定义 */ - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { UILabel *label = [[UILabel alloc]init]; label.frame = CGRectMake(0, 250, 300, 200); label.numberOfLines = 0; label.textColor = [UIColor whiteColor]; label.font = [UIFont systemFontOfSize:24]; label.backgroundColor = [UIColor grayColor]; label.text =[NSString stringWithFormat:@"%@",userInfo]; [self.window.rootViewController.view addSubview:label]; //NewData就是使用新的数据 更新界面,响应点击通知这个动作 completionHandler(UIBackgroundFetchResultNewData); } 复制代码 11.PushMeBaby 作用:测试APNs的开源Mac项目,充当服务器,可以将内容提交给苹果的APNs服务器,然后APNs服务器再推送内容给用户的设备 使用 注销报错的代码 修改ApplicationDelegate.m文件中self.deviceToken 添加推送证书到项目中,并改名为apns.cer 运行填写信息,点击Push按钮完成发送 注意:出现SSLwrite():-36 94错误 http://www.cnblogs.com/czq1989/p/5314940.html           无法拿到证书的路径:http://www.cnblogs.com/czq1989/p/5312146.html demo:https://github.com/TigerCui/RemoteNotificationDemo.git
梁肖51CTO博客:http://blog.51cto.com/liangxiaoAndroid业务组件库:http://blog.51cto.com/liangxiao/2146536APP框架多渠道打包和闭包,支持分包安装,UI独立,网络请求独立 此项目还有一些不完善的地方,可以留言或如有疑问请看地址:https://blog.csdn.net/qibin0506/article/details/71307301此类放置自定义View和第三方控件集合:(按顺序)anroomcrash:验证APP崩溃和内存溢出的方法assetsfitandroid:1.拍照上传              2.复制assets目录到本地缓存cache目录文件               3.访问assets/cache中的文件方法               4.缓存购物车写法 写入txt到缓存bannerview:防止OOM写法的bannerviewbannerviewquan:市面大部分bannerview写法baseactivitys:加了堆栈管理和678android权限的base类cacheutil:清除缓存方法caranimation:购物车添加动画(防止多次点击的OOM)changelanguage:切换语言common:BaseApp BaseAppManager BaseViewHelperemptyview:正在加载 暂无数据 有数据 无网络 布局切换expandableview:非常好用的Expandableviewfileprovider:鸿洋的6.0 7.0 8.0 权限管理类flowlayout:鸿洋的FlowLayout(支持标签布局选中)glidenetpicpressnormal:支持后台返回两张图片 touch显示不同的图片效果handleralluse:面试必会的handler所有用法likebutton:点赞效果loading:加载中(防止OOM)musicutils:播放raw utilnetworkview:根据WIFI开关来广播切换布局 斗鱼视频联网播放功能qcode:高斯生成二维码效果recycleviewalluses:最强RecycleView写法(待更新)recycleviewgallery:炫酷的RecycleView Galleryrecycleviewmultitype:一个比较好的第三方RecycleView写法 很稳定ringutil:系统声音(待优化)scrollview:黑暗之魂3阅读条文效果shoppingcar:非常好用 仿饿了么购物车一套代码size:dp转换px工具类smartbar:返回|主页 工具类 一行解决你的问题splash:欢迎页仿猎聘statusbar:浸透式topbartablayout:最全tablayouttoasts:弃用(可参考)toasts2:丰富多彩的Toastupdateapk:XML配置升级APKuploadpic:最强微信图片上传(无bug版 修改了loaderManager两次finish的问题)usersdk:登录回调处理逻辑跳转widget: 1.AlertView:仿IOS弹窗     2.AutofitTextView:自适应的textview      3.CircleImageView:圆形ImageView      4.CircularSeekBar:中规中矩的SeekBar 圆形进度条      5.SmoothCheckBox:中规中矩的CheckBox      6.SwitchButton:中规中矩的开关zothers:1.AutoHideInputMethodFrameLayout:非常好用的键盘隐藏工具layout     6.SpannableStringUtils:给textview设置超链接       ((TextView) helper.getView(R.id.brademo1_tweetText)).setText(SpannableStringUtils.getBuilder(item.getText()).                      append("点击查看博客链接").setClickSpan(new ClickableSpan() {                  @Override                  public void onClick(View widget) {                      Uri url = Uri.parse("http://blog.51cto.com/liangxiao");                      Intent intent = new Intent(Intent.ACTION_VIEW);                      intent.setData(url);                      mContext.startActivity(intent);                  }              }).create());      2.ClickableMovementMethod:给textview设置超链接       ((TextView) helper.getView(R.id.brademo1_tweetText)).setMovementMethod(ClickableMovementMethod.getInstance());              helper.getView(R.id.brademo1_tweetText).setFocusable(false);              helper.getView(R.id.brademo1_tweetText).setClickable(true);              helper.getView(R.id.brademo1_tweetText).setLongClickable(false);      3.DaojishiUtil:非常好用倒计时的工具类      4.NoDoubleClickListener:防止double click      5.SimpleTagImageView:给ImageView打标签      7.StartHiddenManager:点A B两点跳转逻辑方法zuni:非常好的阻尼效果

29,027

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧