苹果自带的分享以及图片保存授权和应用跳转

news2024/11/17 14:32:11

//                NSString *testToShare = @"分享的标题";

//                NSURL *urlToShare = [NSURL URLWithString:@"http://www.baidu.com"];

//                UIImage *imageToShare = image;

//                  NSArray *activityItems = @[testToShare,imageToShare,urlToShare];

                

                UIImage *imageToShare = image;

                NSArray *activityItems = @[imageToShare];

                UIActivityViewController *activityVc = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:nil];

                activityVc.excludedActivityTypes = @[UIActivityTypePrint,UIActivityTypeCopyToPasteboard,UIActivityTypeAssignToContact,UIActivityTypeSaveToCameraRoll];

                

                [self presentViewController:activityVc animated:YES completion:nil];

                    activityVc.completionWithItemsHandler = ^(UIActivityType  _Nullable activityType, BOOL completed, NSArray * _Nullable returnedItems, NSError * _Nullable activityError) {

                        if (completed) {

                            NSLog(@"分享成功");

                        }else{

                            NSLog(@"分享取消");

                        }

                        

                    };

弹出框是英文,如何改成中文?

第一种方法:

选择project 中的工程名,如下图所示:

屏幕快照 2016-10-10 1.45.42 PM.png

在Localizations 下边点击“+”,选择 Chinese(simplified),如下图所示:

屏幕快照 2016-10-10 1.47.42 PM.png

点击“完成”即可。

第二种方法:

打开info.plist文件,在里边添加Localizations 键值对,如下图所示,就可以了

屏幕快照 2016-10-10 1.50.49 PM.png


二、图片保存到相册,权限设置

if ([PHPhotoLibrary authorizationStatus] == PHAuthorizationStatusAuthorized){//用户之前已经授权

                       //进行保存图片操作

                    UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);

                   }

                else if([PHPhotoLibrary authorizationStatus] == PHAuthorizationStatusDenied){//用户之前已经拒绝授权

                       UIAlertController *alertC = [UIAlertController alertControllerWithTitle:@"提示" message:@"您之前拒绝了访问相册,请到手机隐私设置" preferredStyle:UIAlertControllerStyleAlert];

                       UIAlertAction *sureAction = [UIAlertAction actionWithTitle:@"确定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {

                           //[self dismissViewControllerAnimated:YES completion:nil];

                           NSURL *url = [NSURL URLWithString:@"App-prefs:root=Photos"];

                           if([[UIApplication sharedApplication] canOpenURL:url]){

                               if([[UIDevice currentDevice].systemVersion doubleValue] >= 10.0) {

                                   [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:nil];

                               }

                               else{

                                   [[UIApplication sharedApplication] openURL:url];

                               }};

                       }];

                       [alertC addAction:sureAction];

                       [self presentViewController:alertC animated:YES completion:nil];

                   }

                   else{//弹窗授权时监听

                       [PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {

                           if (status == PHAuthorizationStatusAuthorized){//允许

                              //进行保存图片操作

                               UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);

                           }

                           else{//拒绝

                               [self dismissViewControllerAnimated:YES completion:nil];

                           }

                       }];

                   }

IOS开发之APP如何跳转到系统设置界面

在 IOS开发中有时候会遇到这样一个需求,当 APP 中需要获取使用相机/相册等系统的权限时,而用户第一次却没有授权,当用户再次进入时,我们则需要提示用户去开启权限,并且直接跳到系统的设置界面授权。

方法有2种 

一、直接在跳转按钮的点击事件方法中添加如下代码

NSURL*url = [NSURLURLWithString:UIApplicationOpenSettingsURLString];if([[UIApplicationsharedApplication] canOpenURL:url]) {    [[UIApplicationsharedApplication] openURL:url];}

造成这种情况一般是在错的线程中执行了某些操作,解决办法是采用延时机制

dispatch_after(0.2, dispatch_get_main_queue(), ^{NSURL*url = [NSURLURLWithString:UIApplicationOpenSettingsURLString];if([[UIApplicationsharedApplication] canOpenURL:url]) {        [[UIApplicationsharedApplication] openURL:url];    }});

二、 

1.先在跳转按钮的点击事件方法中添加如下代码,iOS10之后有变化,所以要添加一个判断

NSURL*url = [NSURLURLWithString:@"App-Prefs:root=WIFI"];if([[UIApplicationsharedApplication] canOpenURL:url]){if([[UIDevice currentDevice].systemVersiondoubleValue] >=10.0) {        [[UIApplicationsharedApplication] openURL:url options:@{} completionHandler:nil];    }else{        [[UIApplicationsharedApplication] openURL:url];    }}

2.然后在项目中的info.plist中添加 URL types 并设置一项URL Schemes为prefs,如下图:

注意:String 字段那里@”App-Prefs:root=WIFI”,iOS10以下的版本可以不加“ App-”,但 iOS10以上的版本要加,不然跳转不了。

这里演示的是跳转至系统的 WIFI 界面,当然你也可以修改字符串,跳到相应的设置界面

@"App-prefs:root=WIFI" //打开WiFi

@"App-prefs:root=Bluetooth" //打开蓝牙设置页

@"App-prefs:root=AIRPLANE_MODE" //打开飞行模式

@"App-prefs:root=MOBILE_DATA_SETTINGS_ID" //蜂窝移动网络

@"App-prefs:root=INTERNET_TETHERING" //个人热点

@"App-prefs:root=NOTIFICATIONS_ID" //通知设置

@"App-prefs:root=General" //通用

@"App-prefs:root=General&path=About" //通用-关于本机     

@"App-prefs:root=DISPLAY&BRIGHTNESS" //显示与亮度

@"App-prefs:root=Wallpaper" //墙纸

@"App-prefs:root=Sounds" //声音

@"App-prefs:root=Privacy" //隐私

@"App-prefs:root=STORE" //存储

@"App-prefs:root=NOTES" //备忘录

@"App-prefs:root=SAFARI" //Safari

@"App-prefs:root=MUSIC" //音乐

@"App-prefs:root=Photos" //照片与相机

@"App-prefs:root=CASTLE" //iCloud

@"App-prefs:root=FACETIME" //FaceTime

@"App-prefs:root=LOCATION_SERVICES" //定位服务

@"App-prefs:root=Phone" //电话

//通用下常用字段

@"prefs:root=General&path=About" //关于本机

@"prefs:root=General&path=SOFTWARE_UPDATE_LINK" //软件更新

@"prefs:root=General&path=DATE_AND_TIME" //日期和时间

@"prefs:root=General&path=ACCESSIBILITY" //辅助功能

@"prefs:root=General&path=Keyboard" //键盘

@"prefs:root=General&path=VPN" //VPN设置

@"prefs:root=General&path=AUTOLOCK" //自动锁屏

@"prefs:root=General&path=INTERNATIONAL" //语言与地区

@"prefs:root=General&path=ManagedConfigurationList" //描述文件

//隐私下常用字段

@"prefs:root=Privacy&path=CAMERA" //设置相机使用权限

@"prefs:root=Privacy&path=PHOTOS" //设置照片使用权限

oot=Privacy&path=PHOTOS"//设置照片使用权限



作者:pentakill
链接:https://www.jianshu.com/p/9cb4c794b9f7
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/727338.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【算法】程序员必须掌握的算法?

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员,2024届电子信息研究生 目录 一:程序员为什么一定要学会算法 二:常见算法介绍 1、时间复杂度 2、空间复杂度 3. 必会内容: 4.使用场景 5. 算法学习网站: 三&…

《Linux基础命令讲解》学习笔记

Linux简单介绍 Linux不是一个具体的操作系统,而是一类操作系统的总称。 具体版本称为发行版: Red Hat:目前被IBM收购,收费版,目前全球最大的Linux供应商 CentOS: Red Hat推出的免费版 Ubuntu :界面比较友好 Linux系统目录结构…

vue3+element-plus实现日历组件农历显示且带列表数据

calendar.js https://gitee.com/mirrors/calendar-js.git 这个js可以去下载&#xff0c;里面涉及的有点多 要设置日历每周以周一开始&#xff0c;需要在main.js中加入这一行代码 import dayjs/locale/zh-cn; // 设置日历每周从周一开始<template><ELPlusLanguageC…

华秋约定您!7月11-13日慕尼黑上海电子展不见不散~

慕尼黑最新华秋展会攻略来啦 华秋携海量产品与方案 以及丰富的元器件产品线 即将亮相慕尼黑上海电子展 现场干货和福利不断 简直不要太精彩&#xff01; 敲黑板 划重点 华秋展位 时间&#xff1a;2023年7月11日-7月13日 地点&#xff1a;国际会展中心&#xff08;上海&…

IT-OT 安全融合是优化风险管理的关键

最新报告揭示了运营技术检测和响应方面的显着可见性差距。 全球网络安全运营商趋势科技宣布了一项新研究&#xff0c;显示企业安全运营中心 (SOC) 正在将其能力扩展到 OT 领域。 然而&#xff0c;重大的可见性和技能相关的挑战仍然造成障碍。 研究发现&#xff0c;一半的组织…

公共医疗数据库汇总:无需实验,高效论文撰写利器

一、引言 在医学研究领域&#xff0c;获取高质量的数据和文献资源是进行科学论文撰写的关键。随着信息技术的发展&#xff0c;以及公共医疗数据库的不断壮大和完善&#xff0c;研究人员可以轻松地获取大量的医学数据和文献信息&#xff0c;从而提高论文撰写的效率和质量。本文将…

基于Python的K-Means聚类算法的酒店客户价值分析(源码+数据+文档+CSV数据文件)

通过对传统的RFM客户价值研究模型进行分析&#xff0c;创新性的引入L&#xff08;信誉度&#xff09;指标到RFM模型中&#xff0c;形成RFML新型更适合酒店行业的客户价值研究模型。 一、技术介绍 &#xff08;1&#xff09;RFM 模型 RFM模型是提出的一种分析客户关系管理&…

C++旋转卡壳法求最小面积外接矩形

旋转卡壳基本概念介绍&#xff1a;(86条消息) 旋转卡壳详解_大学要有梦想的博客-CSDN博客 OpenCV里面有现成的计算最小面积外接矩形的方法&#xff0c;但是由于我装了好久也没装上opencv&#xff0c;最后还是决定自己实现。 求多边形最小面积外接矩形的基本思路是&#xff1a;…

loader 和 plugin

loader 是文件加载器&#xff0c;能够加载资源文件&#xff0c;并对这些文件进行一些处理&#xff0c;诸如编译、压缩等&#xff0c;最终一起打包到指定的文件中plugin 赋予了 webpack 各种灵活的功能&#xff0c;例如打包优化、资源管理、环境变量注入等&#xff0c;目的是解决…

数据分析:一文带你了解PowerBI技术

目录 一、PowerBI简介 二、Power BI 的组成部分 三、Power BI 如何匹配角色 四、下载 Power BI Desktop 五、登录到 Power BI 服务 六、Power BI的优势 6.1 发展潜力巨大&#xff0c;前景广阔 6.2 可连接的数据来源多&#xff0c;数据量大 6.3 软件更新频率高 6.4 可为…

飞凌嵌入式邀您共聚2023慕尼黑上海电子展

2023慕尼黑上海电子展&#xff08;electronica China&#xff09;将于7月11日~13日在国家会展中心&#xff08;上海&#xff09;盛大召开。本届展会将展示最新的电子技术与应用&#xff0c;涵盖了半导体、嵌入式系统、电源、电池、测试仪器、智能制造、电子设计自动化等众多领域…

【历史上的今天】7 月 7 日:C# 发布;Chrome OS 问世;《仙剑奇侠传》发行

整理 | 王启隆 透过「历史上的今天」&#xff0c;从过去看未来&#xff0c;从现在亦可以改变未来。 今天是 2023 年 7 月 7 日&#xff0c;在 1927 年的今天&#xff0c;互联网发展的早期创新者格伦卡勒&#xff08;Glen Culler&#xff09;出生&#xff1b;卡勒是 Culler-Fri…

如何洞察 .NET程序 非托管句柄泄露

一&#xff1a;背景 1. 讲故事 很多朋友可能会有疑问&#xff0c;C# 是一门托管语言&#xff0c;怎么可能会有非托管句柄泄露呢&#xff1f; 其实一旦 C# 程序与 C 语言交互之后&#xff0c;往往就会被后者拖入非托管泥潭&#xff0c;让我们这些调试者被迫探究 非托管领域问题…

第二章:安装VM+CentOS7安装+JDK及tomcat安装+安装mysql

目录 1. 安装VMWare 2. centos7安装 2.1 常见问题 3. 查看、设置IP地址 4. 关机与重启 5. 切换为国内源 6. Linux下的目录结构 7. JDK及tomcat安装 7.1 将压缩包上传到linux 7.2 安装JDK 7.3 安装Tomcat 8. 安装mysql 8.1 离线安装 8.2 在线安装 1. 安装VMWare 注意…

CentOS8.5 环境下部署 vsftpd

目录 前言安装vsftpd验证是否安装vsftpd安装vsftpd&#xff1a;操作vsftpd&#xff1a;vsftpd.conf配置创建用户添加端口安全组验证ftp搭建是否成功 前言 在物联网项目中&#xff0c;我们会经常使用到ftp服务器&#xff0c;今天我们就来实现一下centos8.5环境下部署vsftpd的搭建…

Buffer源码

介绍 首先 Buffer 是一个能存储基本数据类型的容器&#xff08;除了 Boolean 类型&#xff09;&#xff0c;从 java.nio 包的继承结构就能看出来。 Java中的Buffer类是一个抽象类。Buffer类提供了一种将数据存储在内存中的方式&#xff0c;并提供了一些操作数据的方法。Buffer…

原型模式:如何最快速地clone一个HashMap散列表?

我们还像学习建造者模式一样 思考 什么是原型模式&#xff1f;主要解决哪些问题&#xff1f; 如果对象的创建成本比较大&#xff0c;而同一个类的不同对象之间差别不大&#xff08;大部分字段都相同&#xff09;&#xff0c;在这种情况下&#xff0c;我们可以利用对已有对象…

5 类型转换

类型转换是变量与变量之间的&#xff0c;变量与常量之间是赋值。 5.1 自动类型转换 小转大。如下图所示&#xff0c;注意&#xff0c;byte不能自动转为char类型&#xff0c;因为类型不匹配&#xff0c;但是可以通过强转来转。 代码如下&#xff1a; byte a 10;int b a; 5.2…

测试流程实战(1)

目录&#xff1a; 测试流程梳理业务架构分析实战测试用例管理实战Bug 录入与管理实战如何写 Bug 报告编写 Bug 报告 1.测试流程梳理 2.业务架构分析实战 使用 plantuml 完成登录流程时序图plantuml 官网&#xff1a;使用简单的文字描述画UML图的开源工具。plantuml 在线绘图…

【HDC.Cloud 2023】华为开发者大会2023来了!这份PaaS参会指南请查收!

了不起的开发者们&#xff0c;我们来啦&#xff01; 7月7日&#xff0c;华为开发者大会2023 ( Cloud )将拉开帷幕 PaaS诚邀您参加这场不容错过的年度开发者盛会&#xff0c;让我们一起开启探索之旅。 我们将为开发者们提供PaaS生态资源工具、学习成长、分享交流、生态实践等…