简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网

我猜去全部机翻+个人修改补充+demo测试的形式,对expo进行一次大补血!欢迎加入expo兴趣学习交流群:597732981

【之前我写过一些列关于expo和rn入门配置的东i西,大家可以点击这里查看:从零学习rn开发

相关文章:

Expo大作战(一)--什么是expo,如何安装expo clinet和xde,xde如何使用

Expo大作战(二)--expo的生命周期,expo社区交流方式,expo学习必备资源,开发使用expo时关注的一些问题

Expo大作战(三)--针对已经开发过react native项目开发人员有针对性的介绍了expo,expo的局限性,开发时项目选型注意点等

Expo大作战(四)--快速用expo构建一个app,expo中的关键术语

Expo大作战(五)--expo中app.json 文件的配置信息

Expo大作战(六)--expo开发模式,expo中exp命令行工具,expo中如何查看日志log,expo中的调试方式

Expo大作战(七)--expo如何使用Genymotion模拟器

Expo大作战(八)--expo中的publish以及expo中的link,对link这块东西没有详细看,大家可以来和我交流

更多>>

写在二十三章以后的话,之前的翻译,不管如何,好与不好,终究是告一段落,也把expo基础理论的东西又深入的理解了一遍,后续expo大作战系列将主要介绍expo sdk的api。


ErrorRecovery

Expo.ErrorRecovery.setRecoveryProps(props)
设置任意错误恢复属性。 如果您的项目由于致命的JS错误而在生产中崩溃,expo将重新加载您的项目。 如果你已经设置了这些属性,它们会在exp.errorRecovery下传递给你重新载入的项目的初始属性。 阅读更多关于Expo的错误处理

参数
props(object) - 如果项目由于致命的JS错误而重新加载,则该对象将传递到重新加载的项目的初始属性。

DocumentPicker

提供对系统用户界面的访问权限,以便从用户设备上的可用提供者中选择文档。

在iOS上,对于独立应用程序和ExpoKit项目,DocumentPicker模块需要iCloud权利才能正常工作。您需要在您的app.json文件中将usesIcloudStorage关键字设置为true,如此处所指定的那样。

另外,对于ExpoKit应用程序,您需要在Xcode中打开项目,并按照Advanced ExpoKit主题指南中的使用DocumentPicker说明进行操作

Expo.DocumentPicker.getDocumentAsync(options)
显示用于选择文档的系统UI。

参数
options(object) -

选项图:

  • type(string) - 可供选择的文档的MIME类型。也支持通配符如image / *来选择任何图像。要允许任何类型的文件,您可以使用* / *。默认为* / *。

返回
如果用户取消了文件拣配,则返回{type:'cancel'}。

否则,返回{type:'success',uri,name,size}其中uri是本地文档文件的URI,name是它的名称,size是它的大小(以字节为单位)。

Constacts

提供对手机系统联系人的访问。

Expo.Contacts.getContactsAsync(options)
获取系统联系人中所有条目的列表。这将返回与联系人条目相关的一组数据。

参数

options(object)

选项图:

  • fields(array) - 一个数组,描述要检索每个联系人的字段。每个元素必须是下表中列出的常量之一。
  • pageSize(number) - 将返回的每页联系人数量。默认为100。
  • pageOffset(number) - 要返回的联系人数量。默认为0。

返回
包含以下字段的分页对象。

  • data(array) - 表单{id,name,firstName,middleName,lastName,nickname,jobTitle,company,department,imageAvailable}的对象数组。 iOS还包括previousLastName。其他字段列在下表中。
  • hasNextPage(boolean) - 如果有更多的联系人可用。
  • hasPreviousPage(boolean) - 如果有联系人被跳过。传递大于0的pageOffset时将为true。
  • total (number) - 可用联系人总数。

Expo.Contacts.getContactByIdAsync(options)
从与指定ID关联的系统联系人获取单个联系人。

参数对象选项
选项图:

  • id(string) - 要获取的联系人的ID。
  • fields(array) - 描述要检索的字段的数组。每个元素必须是下表中列出的常量之一。

返回
表单{id,name,firstName,middleName,lastName,nickName,jobTitle,company,department,imageAvailable}的对象。 iOS还包括previousLastName。其他字段列在下表中。

常量和其他字段(Constants and additional fields)

此表格说明了每个联系人将按需添加的字段。示例用法:Expo.Contacts.EMAILS。

async function showFirstContactAsync() {
// Ask for permission to query contacts.
const permission = await Expo.Permissions.askAsync(Expo.Permissions.CONTACTS);
if (permission.status !== 'granted') {
// Permission was denied...
return;
}
const contacts = await Expo.Contacts.getContactsAsync({
fields: [
Expo.Contacts.PHONE_NUMBERS,
Expo.Contacts.EMAILS,
],
pageSize: ,
pageOffset: ,
});
if (contacts.total > ) {
Alert.alert(
'Your first contact is...',
`Name: ${contacts.data[].name}\n` +
`Phone numbers: ${JSON.stringify(contacts.data[].phoneNumbers)}\n` +
`Emails: ${JSON.stringify(contacts.data[].emails)}`
);
}
}

该功能将显示用户联系人中的第一个条目。

相关类型(Related types)

phoneNumbers - 一个包含联系人电话号码数据的数组。

Fields: { number, digits, primary (boolean), countryCode }

emails- 包含联系人的电子邮件数据的数组。

Fields: { email, primary (boolean) }

addresses - 包含联系人的邮政地址数据的数组。

Fields: { street, city, country, region, neighborhood, postalCode, poBox, isoCountryCode }

socialProfiles - 包含联系人的社交个人资料(Facebook,Twitter等)数据的数组。

Fields:{service,localizedProfile,url,username,userId}

instantMessageAddresses - 包含联系人的IM地址(Skype,Google Hangouts等)数据的数组。

Fields: { service, username, localizedService }

urls  - 包含联系人网站网址的数组。

Fields:{url}

dates - 包含分配给联系人的日期的数组。

Fields:{日,月,年}

relationships - 包含分配联系人的关系的数组。

Fields:{name}

而且,上面数组中的每个条目都包含参数id和lable。

birthday, nonGregorianBirthday- 联系人生日的公历和非格里历表示。

Fields: { day, month, year }

thumbnail, image (缩略图,图像 )- 缩略图和联系人图片的原始图像。

Fields: { uri } - 使用此uri作为<Image>组件的源道具来显示图片。请注意,获取这些内容在iOS上是耗费时间和资源的,并且在获取所有联系人时不应使用它们。

Branch

expo包括对分支归因服务的Alpha支持。

注意:此API仅适用于使用exp build创建的独立版本。

导入分支
Branch SDK目前位于Expo的DangerZone命名空间下,因为它处于可能发生显着变化的地方。你可以像这样导入它:

import { DangerZone } from 'expo';
let { Branch } = DangerZone;

Configuration (standalone apps only)

在android.config.branch.apiKey和ios.config.branch.apiKey部分的app.json中添加Branch Key。您可以在分支仪表板的此页面上找到您的密钥。

如果您还没有链接方案,请在方案部分的app.json中添加链接方案。

Enable Branch support for universal links (iOS only)

Branch可以跟踪您与应用关联的域的通用链接。注意:Expo不会通过普通的Linking API将这些内容转发给您的JS。

在Apple的Developer Portal上为您的应用ID启用关联的域。为此,请在App ID部分中单击您的应用程序ID。选择编辑,选中关联域复选框并点击完成。

在分支仪表板的链接设置部分启用通用链接并填写您的软件包标识符和Apple App前缀。

在ios.associatedDomains部分中添加关联域以支持到app.json的通用链接。这应该采用applinks的形式:<link-domain>其中链接域可以在Branch Dashboard的Link Settings页面的Link Domain部分找到。

Using the Branch API

我们从react-native-branch中提取API,因此文档是最好的资源。确保您使用上述说明(来自Expo.DangerZone.Branch)导入Branch。

Listen for links:

Expo.DangerZone.Branch.subscribe((bundle) => {
if (bundle && bundle.params && !bundle.error) {
// `bundle.params` contains all the info about the link.
}
});

打开共享对话框:

class ArticleScreen extends Component {
componentDidMount() {
this.createBranchUniversalObject();
} async createBranchUniversalObject() {
const { article } = this.props; this._branchUniversalObject = await Expo.DangerZone.Branch.createBranchUniversalObject(
`article_${article.id}`,
{
title: article.title,
contentImageUrl: article.thumbnail,
contentDescription: article.description,
// This metadata can be used to easily navigate back to this screen
// when implementing deep linking with `Branch.subscribe`.
metadata: {
screen: 'articleScreen',
params: JSON.stringify({ articleId: article.id }),
},
}
);
} onShareLinkPress = async () => {
const shareOptions = {
messageHeader: this.props.article.title,
messageBody: `Checkout my new article!`,
};
await this._branchUniversalObject.showShareSheet(shareOptions);
};
}

下一张继续介绍,这一篇主要介绍了:expo sdk api之 DocumentPicker,Contacts(获取手机联系人信息),Branch欢迎大家关注我的微信公众号,这篇文章是否被大家认可,我的衡量标准就是公众号粉丝增长人数。欢迎大家转载,但必须保留本人博客链接!

 

Expo大作战(三十九)--expo sdk api之 DocumentPicker,Contacts(获取手机联系人信息),Branch的更多相关文章

  1. Expo大作战(三十八)--expo sdk api之 FileSystem(文件操作系统)

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  2. Expo大作战(三十六)--expo sdk api之 ImagePicker,ImageManipulator,Camera

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  3. Expo大作战(三十五)--expo sdk api之Location!

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  4. Expo大作战(三十四)--expo sdk api之LinearGradient(线性渐变),KeepAwake(保持屏幕不休眠),IntentLauncherAndroid,Gyroscope,

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  5. Expo大作战(三十二)--expo sdk api之Noifications

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  6. Expo大作战(二十九)--expo sdk api之registerRootComponent(注册跟组件),ScreenOrientation(屏幕切换),SecureStore,

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  7. Expo大作战(三十)--expo sdk api之Permissions(权限管理模块),Pedometer(计步器api)

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  8. Expo大作战(二十八)--expo sdk api之Speach(语音文字转换),Segment

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  9. Expo大作战(二十六)--expo sdk api之Video和WebBrowser

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

随机推荐

  1. Linux - 查看和更改系统字符集

    查看当前系统字符集 $ echo $LANG en_US.UTF-8 $ $ env |grep LANG LANG=en_US.UTF-8 $ $ locale |grep CTYPE LC_CTY ...

  2. django权限管理(Permission)

    什么是权限管理 权限管理,一般指根据系统设置的安全规则或者安全策略,用户可以访问而且只能访问自 己被授权的资源 权限管理好比如钥匙,有了钥匙就能把门打开,但是权限设置是有级别之分的,假如这个 系统有多 ...

  3. servlet(二)

    http协议 (1)什么是http协议? 是一种网络应用层协议,规定了浏览器如何与web服务器之间进行通信以及相应的 数据包的结构. 浏览器与web服务器之间如何通信? step1.建立连接 step ...

  4. 微服务开发有道之把项目迁移到Kubernetes上的5个小技巧

    我们将在本文中提供5个诀窍帮你将项目迁移到Kubernetes上,这些诀窍来源于过去12个月中OpenFaas社区的经验.下文的内容与Kubernetes 1.8兼容,并且已经应用于OpenFaaS ...

  5. Xamarin.Android 使用 SQLite 出现 Index -1 requested, with a size of 10 异常

    异常: Android.Database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 10 此错误是数据返回 ...

  6. MySQL百万级、千万级数据多表关联SQL语句调优

    本文不涉及复杂的底层数据结构,通过explain解释SQL,并根据可能出现的情况,来做具体的优化,使百万级.千万级数据表关联查询第一页结果能在2秒内完成(真实业务告警系统优化结果).希望读者能够理解S ...

  7. Log4Net使用详解1

    log4net是一个功能著名的开源日志记录组件.利用log4net可以方便地将日志信息记录到文件.控制台.Windows事件日志和数据库(包括MS SQL Server, Access, Oracle ...

  8. 我们自研的那些Devops工具

    随着云技术以及容器技术的崛起,人肉运维的时代结束了 2018年为了解决日常运维中的痛点以及更高效的推进运维工作,我们自研并完善了几个工具系统,这些系统无一例外的帮我们节约了时间,提高了效率,这篇文章将 ...

  9. 第6章 Selenium2-Java 自动化测试模型

    6.1  自动化测试模型介绍 6.1.1  线性测试 :其实就是单纯地来模拟用户完整的操作场景. 优势就是每一个脚本都是完整且独立的:   缺陷测试用例的开发与维护成本很高. 6.1.2  模块化驱动 ...

  10. js 对url进行编码和解码的三种方式

    一.escape 和 unescape escape 原理:对除 ASCII字母.数字.标点符号(@ * _ + - . /) 以外的字符进行编码 .编码的字符被替换成了十六进制的转义序列 不编码的字 ...