请教nginx ghs域名反向代理的设置

我参照 you8g.com 的方法,做了以下设置:
1. Google Apps 里绑定 appspot 的 app 到 blog.iwinux.info
2. blog.iwinux.info 指向我的VPS
3. VPS上的 nginx 这样设置:

 

完成以上步骤并确定DNS记录生效之后,我访问 blog.iwinux.info 出现 Google 的 404 页面。

请问我做错了哪一步?

(我Google到的设置方法都大同小异,而 nginx 的官方文档讲的都是针对特定应用(比如jetty)的设置。)
Nginx iwinux info26 条回复 • 1970-01-01 08:00:00 +08:00
dimlau 1
dimlau 2011-01-06 20:49:43 +08:00
upstream ghs {
ip_hash;
server ghs.google.com;
}
server
{
listen 80;
server_name ghs.whatever.name;

location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_pass http://ghs;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect false;
}

}

然后,你的 blog.iwinux.info 应该设置 CNAME 到 ghs.whatever.name 才对。
dimlau 2
dimlau 2011-01-06 20:51:41 +08:00
……呃,sever_name 那里直接写成:
server_name blog.iwinux.info;

应该就成功了吧?
yoyicue 3
yoyicue 2011-01-06 20:59:24 +08:00
我是这么解决这个问题的

GAE不绑定域,直接
proxy_pass http://mygae.appspot.com;
proxy_set_header Host “mygae.appspot.com”;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
iwinux 4
iwinux 2011-01-06 21:00:58 +08:00
@dimlau

配置文件照你写的改了,
server_name 也改成 blog.iwinux.info

重启nginx后还是 404 = =
iwinux 5
iwinux 2011-01-06 21:02:50 +08:00
@yoyicue 其实我是想实现类似 you8g 的功能,可以动态添加想转发的域名…
yoyicue 6
yoyicue 2011-01-06 21:05:43 +08:00
@iwinux 我觉得问题在于 proxy_set_header Host $host;
iwinux 7
iwinux 2011-01-06 21:07:51 +08:00
召唤 @gonbo O_O
iwinux 8
iwinux 2011-01-07 00:03:53 +08:00
尚未解决 = =
gonbo 9
gonbo 2011-01-07 00:21:58 +08:00
#you8g 是通过生成nginx配置文件,生成后同步nginx配置文件,然后nginx reload,来解决这个问题的。
linsk 10
linsk 2011-01-07 00:30:47 +08:00 via iPod
手机版没有收藏功能,mark 不方便
Platinum 11
Platinum 2011-01-07 00:45:51 +08:00
server {
listen 80;
server_name blog.iwinux.info;
location / {
proxy_set_header Host yourname.appspot.com;
proxy_pass http://ghs.google.com;
}
}
iwinux 12
iwinux 2011-01-07 00:46:35 +08:00
@gonbo 那配置文件是怎么写的呢?我试了很多种配置写法,目前只有 @yoyicue 给出的这个是正常工作的……
iwinux 13
iwinux 2011-01-07 17:29:53 +08:00
*后我还是用了 @Platinum 和 @yoyicue 的方法
不过还是很好奇 you8g 的配置是怎么写的……
gonbo 14
gonbo 2011-01-07 21:23:53 +08:00
都差不多,只是you8g的需要支持大量域名和支持cache
laihj 15
laihj 2011-02-23 16:52:09 +08:00
那怎么实现多个域名通过ghs.xxx.com一起绑定呢

我按这种方法,只能实现A记录的绑定,一个vps一个域名,太浪费了
laihj 16
laihj 2011-02-23 16:54:16 +08:00
例如我的域名是diggdb4.us
配置后ping ghs.diggdb4.us还是404
ghs.diggdb4.us在godaddy那边需要什么配置吗?
TheOnly92 17
TheOnly92 2011-02-23 17:16:32 +08:00
godaddy 要增加一个 A 设置。
laihj 18
laihj 2011-02-23 17:36:45 +08:00
diggdb4.us和ghs.diggdb4.us指向同一个ip?
fanzeyi 19
fanzeyi 2011-05-12 11:01:05 +08:00
@yoyicue 额 我按照你的方案写的这个.. 但是nginx一直提示 The requested URL / was not found on this server. ….
http://gist.github.com/018b74b7af8b5ae54667
fanzeyi 20
fanzeyi 2011-05-12 11:01:59 +08:00
咦 为什么显示的gist不对… http://gist.github.com/018b74b7af8b5ae54667
fanzeyi 21
fanzeyi 2011-05-12 11:03:15 +08:00
召唤 @livid … 使用 Private 的时候贴的地址无法被正确识别….

http://gist.github.com/967864
yoyicue 22
yoyicue 2011-05-12 11:09:19 +08:00
@fanzeyi 你把全部贴出来~
fanzeyi 23
fanzeyi 2011-05-12 11:12:38 +08:00
@yoyicue 这个就是全部啊…..
fanzeyi 24
fanzeyi 2011-05-12 11:14:10 +08:00
@fanzeyi 好吧 sorry 我傻逼了。。。 是我 appspot 上面没写东西…
yoyicue 25
yoyicue 2011-05-12 11:15:34 +08:00
@fanzeyi …. 我完全刚才没有看到gist.
nonozone 26
nonozone 2012-11-30 16:18:34 +08:00
呃,找到这个帖子,顺便请教下,我按照如上说明整了一个域名ghs.abc.com,直接访问ghs.abc.com出现google的404,这个应该代表ghs代理成功吧,然后我又整了个域名xyz.com cname到ghs.abc.com,为什么变成我自己服务器的默认站点了,而不是到blogger?

推荐一个支持asp.net的国外主机商

要求国内访问速度快,稳定.
访问速度 NET asp11 条回复 • 1970-01-01 08:00:00 +08:00
yoyicue 1
yoyicue 2010-08-16 18:35:33 +08:00
win主机…. 好多年没见过了.
AntiGameZ 2
AntiGameZ 2010-08-16 20:13:26 +08:00
ASP.NET做的都是国内项目,没试过放国外,不过自己曾经琢磨过,希望信息有用。

1、看ASP.NET官网的广告
2、看ASP.NET各大佬博客上的广告:
http://www.hanselman.com/blog/
http://haacked.com/ (2个例子,还有很多,一G便知)
3、微软云服务(Azure)

静态文件放在S3或者类似的东东上,靠谱的服务商速度不会差。

一般都有测试和试用,折腾折腾吧
AntiGameZ 3
AntiGameZ 2010-08-16 20:20:06 +08:00
另外别忘记这里:http://www.asp.net/find-a-hoster
sa 4
sa 2010-08-18 08:46:46 +08:00
谢谢AntiGameZ
Emory_M 5
Emory_M 2010-08-18 09:57:23 +08:00
@AntiGameZ Azure能跑asp吗?不是.net
Emory_M 6
Emory_M 2010-08-18 09:59:51 +08:00
@Livid 正则模式貌似有问题…中文+域名后缀名也匹配
Kymair 7
Kymair 2010-08-18 10:50:22 +08:00
去http://www.webhostingtalk.com看看吧 很权威的论坛
leaf 8
leaf 2010-08-18 10:54:24 +08:00
貌似 Godaddy有提供这种主机的
AntiGameZ 9
AntiGameZ 2010-08-21 02:37:56 +08:00
@Emory_M
不支持传统ASP,估计以后也不会支持
fanzeyi 10
fanzeyi 2011-05-02 18:43:12 +08:00
继续求推荐啊啊!!!
fanzeyi 11
fanzeyi 2011-05-02 18:43:15 +08:00
继续求推荐啊啊!!!

[国内] VPS推荐?

一直关注的都是国外的主机,现在突然需要找一台国内的,完全没概念啊,是不是还分电信、网通线路的?
VPS 还分 网通9 条回复 • 1970-01-01 08:00:00 +08:00
bighearted 1
bighearted 2011-04-15 11:48:13 +08:00
国内的试试景安吧

或者去中客租299的独服

都需要备案的

分电信网通,也有双线的和移动的对电信网通访问都不错
mxfli 2
mxfli 2011-04-15 12:25:02 +08:00
搜:酷壳 VPS 知秋一叶,咨询过,价格偏贵
jerry 3
jerry 2011-04-15 12:50:02 +08:00
用过景安的,感觉还行
peterlu 4
peterlu 2011-04-15 12:51:07 +08:00
推荐一个 cnmdy.com
nouh 5
nouh 2011-04-15 13:12:02 +08:00
同求国内独立服务器的推荐
26z 6
26z 2011-04-15 14:07:40 +08:00
8-host.net,比较小众,比较靠谱
muxi 7
muxi 2011-04-15 14:26:04 +08:00
万网的云主机速度相当彪悍,内存和硬盘都很给力,如果企业用推荐这个,个人用有点贵了
iwinux 8
iwinux 2011-04-15 18:23:19 +08:00
@mxfli @26z @muxi 我发现国内的VPS都非常贵!!! 因为网站是面向国内用户的,不知道用国外VPS是否靠谱(找个西岸的机房……)
muxi 9
muxi 2011-04-15 18:39:27 +08:00
面向国内的用户,如果不是涉及敏感信息的话,*好还是老老实实放在国内比较好

万网的云主机好像可以找销售打折的,算下来应该每个月在350块钱左右,1.5G内存, 160G硬盘,志强双核的U,双线2M的带宽,99.99%的可用率保证,算起来应该还行吧,如果你真的打算做,这点钱还是应该投入的

像V2EX这样的站点,赚回主机费用应该是够的吧(我瞎猜的,具体我也清楚)

nginx配置的问题

比如我在nginx.conf里添加新的server域名为dev.abc.com

目前的情况是只要访问dev.abc.com就会自动下载首页文件(如index.php),却不执行,这是为什么啊?
Nginx dev com9 条回复 • 1970-01-01 08:00:00 +08:00
napoleonu 1
napoleonu 2011-01-25 23:18:28 +08:00
访问index.html呢?cgi没配置好?
Mianco 2
Mianco 2011-01-25 23:20:14 +08:00
@napoleonu 另外个server的index是index.html,没有任何问题,我是不是哪里没有配置好。
oldgun 3
oldgun 2011-01-25 23:21:25 +08:00
配置贴出来
napoleonu 4
napoleonu 2011-01-25 23:46:53 +08:00
Nginx/FastCGI/PHP都看下了
ksky 5
ksky 2011-01-26 07:47:31 +08:00 via iPhone
貌似是php没配好吧。不解析php文件。
ashchan 6
ashchan 2011-01-26 07:48:42 +08:00
检查 php 是否正常工作:echo “<?php phpinfo(); ?>” > test.php && php test.php
检查 index.php 是否在 index 那一行配置中;
检查 fastcgi(php) 是否正确配置与运行。
manhere 7
manhere 2011-01-26 08:46:20 +08:00
MIME指定
Mianco 8
Mianco 2011-01-26 09:11:33 +08:00
@ksky 昨晚很早就休息了。谢谢大家的热心解答。我也觉得是php的问题,一会店里不忙的时候我再调试下。
Mianco 9
Mianco 2011-01-26 12:17:38 +08:00
修修改改,问题解决了。一会准备重新弄下nginx.conf和php.ini文件

关于Goddady和Linode的几个问题

昨晚在linode上购买了512 Plan,今天在Goddady上买了一个域名。
现在有几个问题:

1.每月200G的网络流量为什么现在显示只有64G ?

2.购买12个月应该是 19.95*12*0.9 = 215.46 $ , 为什么扣了221.37 $ ?

3.Godday的域名如何绑定linode分配到的ip? DNS 和 CName 如何配置 ?

4.我在本地ping linode分配的ip是超时,但是在浏览器却可以访问该ip,不懂为什么 ?

5.lindoe我选的是Fremont,它在中国,美国,日本这三个地方访问速度情况分别什么样 ?

谢谢 :)
Linode IP Goddady11 条回复 • 1970-01-01 08:00:00 +08:00
motta 1
motta 2011-01-23 12:01:11 +08:00
2. linode扣费似乎本月剩余天数+月份来的, 所以多的那 6 块钱应该是本月余下那几天的.
3. 域名添加 a 记录.
krrish 2
krrish 2011-01-23 12:21:35 +08:00
谢谢 motta

我刚看了帐号信息,Linode购买时间是:2011.1.22到2012.1.31 。
如果是这样,那*个问题应该也是这个月剩下的几天所分配的流量: 200*(31-21)/31 = 64.5 G
krrish 3
krrish 2011-01-23 14:25:18 +08:00
好不习惯全英文的控制面板呀,还是不会绑定域名到ip,求人带我啊
iugo 4
iugo 2011-01-23 14:30:57 +08:00
VPS 什么的,不太明白。
iugo 5
iugo 2011-01-23 14:31:50 +08:00
@krrish 服务器是可以拒* ping 的。
sparanoid 6
sparanoid V2EX Moderator 2011-01-23 15:39:16 +08:00
5. http://just-ping.com/
krrish 7
krrish 2011-01-23 16:17:09 +08:00
好东西呀! 多谢Sparanoid

DNS, CName都是些神马东西啊
我稀里糊涂的不知道怎么搞的,现在总算是把域名绑上IP了。
继续捣鼓~~
krrish 8
krrish 2011-01-23 16:20:27 +08:00
咦喂!
我记得我发帖的时候是发到“问与答”里面了…
TheOnly92 9
TheOnly92 2011-01-23 17:33:39 +08:00
http://help.godaddy.com/article/680

看不懂可以帮忙部分翻译。凡事要先自己尝试 🙂
krrish 10
krrish 2011-01-23 19:15:51 +08:00
顺便问下: 访问Godaddy的时候,为什么我这边慢的像蜗牛一样。
coderoar 11
coderoar 2011-01-23 20:13:35 +08:00
@krrish 我也很慢。其实国内访问国外网站的带宽很低,延迟相较而言问题不大。

开发ios应用程序_iOS14中的应用程序剪辑—即时移动应用程序

开发ios应用程序

This article is a short text summary of the WWDC20 session.

本文是 WWDC20会议 的简短摘要 

App clips were introduced in iOS 14, helping more people discover apps on the go by almost instantly downloading a part of the app to do some task.

iOS 14中引入了应用程序片段,几乎立即下载应用程序的一部分即可完成任务,从而帮助更多的人在旅途中发现应用程序。

Unlike apps, app clips can’t be opened from the home screen. They’re launched with app-clip URLs, which are handled via app clips instead of a browser. These URLs can be either embedded in NFC tags, processed into QR code/app-clip code(which can be scanned or tapped with the power of NFC, FYI), or just forwarded via iMessages.

与应用程序不同,无法从主屏幕打开应用程序剪辑。 它们是通过应用程序剪辑URL启动的,这些URL通过应用程序剪辑而不是浏览器进行处理。 这些URL可以嵌入NFC标签中,可以处理为QR代码/应用剪贴代码(可以使用NFC ,FYI进行扫描或点击),也可以仅通过iMe​​ssages转发。

App Store submissions enforce that app clips must be very small in size — <10 MB. Earlier, applications needed to be installed, signed in, and set up before usage. App clips make it possible for someone to, say, scan a QR code to almost instantly download your app clip to use it, making it an overall smoother experience.

App Store提交的内容要求应用剪辑的尺寸必须非常小-<10 MB。 以前,需要在使用前安装,登录和设置应用程序。 应用程序剪辑使某人可以扫描QR码,几乎立即下载您的应用程序剪辑以使用它,从而使整体体验更加流畅。

For developers, app clips require the creation of a second application target in Xcode that contains all of the necessary code to handle the app-clip experience. This is native Swift code, written either in SwiftUI or UIKit, meaning you could use a part of your app’s existing code for your app clips.

对于开发人员而言,应用程序剪辑需要在Xcode中创建第二个应用程序目标,该目标包含处理应用程序剪辑体验的所有必需代码。 这是用SwiftUI或UIKit编写的本机Swift代码,这意味着您可以将应用程序现有代码的一部分用于应用程序剪辑。

Image for post

App clips are an additive feature to apps — meaning you need an app to make an app clip. App clips can’t be submitted to the App Store on their own. They need to be submitted as part of the app review process.

应用程序剪辑是应用程序的附加功能,这意味着您需要一个应用程序才能制作应用程序剪辑。 无法将应用片段单独提交到App Store。 他们需要在应用审核过程中提交。

App clips in iOS 14 and apps are mutually exclusive — it’s possible to download the app clip without downloading the entire app, which is the whole point. However, if the app is already installed, the app clip URL will open up the relevant part of the application instead of downloading the app clip.

iOS 14和应用程序中的应用程序剪辑是互斥的-可以下载应用程序剪辑而无需下载整个应用程序,这很重要。 但是,如果已经安装了应用程序,则应用程序剪辑URL将打开应用程序的相关部分,而不是下载应用程序剪辑。

One app can have only one app clip —the URLs can be configured to open up specific parts of the app.

一个应用程序只能有一个应用程序剪辑-可以将URL配置为打开应用程序的特定部分。

应用程序剪辑的应用程序设计 (App Design for App Clips)

Image for post
Typical application diagram — 04:38 of the WWDC20 “Explore App Clips” session
典型的应用程序图— WWDC20“探索应用程序剪辑”会话的04:38

Unlike applications — which contain a tab-bar controller, allowing the user to navigate between different screens — app clips should omit top-level navigation elements like tab bars, instead directing users toward a single flow, thereby allowing the user to perform a specific task per URL.

与包含标签栏控制器,允许用户在不同屏幕之间导航的应用程序不同,应用程序剪辑应省略诸如标签栏之类的顶级导航元素,而应将用户引向单个流程,从而允许用户执行特定任务每个网址。

Image for post
Same app clip using multiple URLs for different flows — 06:00 of the WWDC20 “Explore App Clips” session
相同的应用程序剪辑使用多个URL进行不同的处理-WWDC20“浏览应用程序剪辑”会话的06:00

For multiple experiences, there could be multiple URLs — each URL opening up a streamlined flow.

对于多种体验,可以有多个URL-每个URL都可以简化流程。

Also, the dependency of app clips on, say, a user’s location can be deferred. For example, if the user is trying to check out items from a physical store, instead of asking the user for their location to locate the store they’re in, the URL of that store could be configured such that the app clip knows which store the user is in.

同样,可以推迟应用剪辑对用户位置的依赖。 例如,如果用户尝试从实体商店中检出商品,而不是询问用户位置来找到他们所在的商店,则可以配置该商店的URL,以便应用程序剪辑知道哪个商店用户正在使用。

The part of code common between app and app clip can have both app and app-clip targets selected under Target Membership in the Identity Inspector. For sharing image assets, you could create a shared-asset catalog with similar modifications in target memberships, ensuring both the app and the app clip use images from the same shared folder.

在应用程序和应用程序剪辑之间通用的部分代码可以在身份检查器的“目标成员身份”下选择应用程序和应用程序剪辑目标。 为了共享图像资产,您可以创建一个共享资产目录,并对目标成员资格进行类似的修改,以确保应用程序和应用程序剪辑都使用同一共享文件夹中的图像。

You might have a class that you need in your app but not in your app clip, and if the code common to both of them uses that class, it’d lead to a build error. In that case, you’d need to conditionally compile out the references to that class by creating a custom condition in the Build Settings > Swift Compiler -Custom Flags section for both debug and release.

您可能在应用程序中有一个需要的类,但在应用程序剪辑中却没有,并且如果这两个类的通用代码都使用该类,则会导致生成错误。 在这种情况下,您需要通过在调试和发布的Build Settings> Swift Compiler -Custom Flags部分中创建自定义条件,来有条件地编译出对该类的引用。

And then, we can conditionally compile out references to the object that aren’t to be included in the app clip with:

然后,我们可以使用以下命令有条件地编译出不包含在应用程序剪辑中的对象的引用:

#if !APPCLIP //Code which runs on app but not on appClip#endif

#if !APPCLIP //Code which runs on app but not on appClip#endif

App clips can use all of the frameworks in the iOS SDK, but access to sensitive data is limited. Frameworks like HealthKit will always return negative for isHealthDataAvailable (boolean denoting access to health data) when running as an app clip. So it’s expected for the main app to check for access to data before trying to use it. If that’s done, the app clip will run just fine.

应用程序剪辑可以使用iOS SDK中的所有框架,但是对敏感数据的访问受到限制。 当作为应用程序剪辑运行时,诸如HealthKit之类的框架对于isHealthDataAvailable (布尔值表示对健康数据的访问)将始终返回负数。 因此,期望主应用在尝试使用数据之前先检查对数据的访问。 如果完成,该应用程序剪辑将正常运行。

Once the user uses the app clip and installs the full-fledged app, the experience can be made seamless by autofilling data from the app clip to the full-fledged app with a shared-data container. Though this isn’t compulsory, it’s highly recommended.

一旦用户使用应用程序剪辑并安装了完整的应用程序,就可以通过使用共享数据容器将数据从应用程序剪辑自动填充到完整的应用程序中,从而实现无缝的体验。 尽管这不是强制性的,但强烈建议您这样做。

有关App-Clip生命周期的更多信息 (More on the App-Clip Life Cycle)

App clips run when needed — when the app isn’t installed and an app-clip experience is opened. And after a period of inactivity, they’re automatically deleted along with data related to that app clip. App clips are also not included in an iCloud backup.

应用程序剪辑在需要时运行-未安装应用程序且打开了应用程序剪辑体验。 闲置一段时间后,它们会与与该应用程序剪辑相关的数据一起自动删除。 应用剪辑也未包含在iCloud备份中。

An app clip can be deleted anytime after inactivity. The data stored is also deleted along with any keychain data. This stored data should hence be thought of as temporarily cached data unless the data is stored in a shared-data container and the user also installs the full-fledged app before the app clip is deleted.

闲置后可以随时删除应用剪辑。 存储的数据也会与所有钥匙串数据一起删除。 因此,除非将数据存储在共享数据容器中,并且用户在删除应用程序剪辑之前还安装了完整功能的应用程序,否则应将其视为临时缓存的数据。

If the user uses the app clip on a regular basis, the app clip might never be deleted. The cached data in prior sessions can be used in the next sessions — for example, past orders can be used for recommending future orders if the app clip is designed for shopping in a local brick-and-mortar shop.

如果用户定期使用该应用程序剪辑,则该应用程序剪辑可能永远不会被删除。 先前会话中的缓存数据可在下一个会话中使用-例如,如果该应用程序剪辑旨在在本地实体店购物,则过去的订单可用于推荐将来的订单。

应用剪辑体验 (The App-Clip Experience)

Apple wants app clips to be fast, straight to the point, include as few privacy concerns as possible, and cause the least amount hindrance possible.

苹果希望应用程序剪辑能够快速,直截了当地,包括尽可能少的隐私问题,并尽可能减少障碍。

Hence, access to personal data is limited. The app clip can prompt users to download the full app if it needs access the restricted data.

因此,对个人数据的访问受到限制。 如果需要访问受限制的数据,则该应用程序剪辑可以提示用户下载完整的应用程序。

For payments, it’s recommended to use Apple Pay since the user won’t need to key in card details or worry about its security.

对于付款,建议使用Apple Pay,因为用户无需输入卡详细信息或担心其安全性。

Signing up should be made optional because instead of enjoying the experience, the user would be forced to key in their details. Instead, it could be presented after the user has completed the experience, with ‘Sign in as Apple’.

注册应该是可选的,因为用户不能享受体验,而不得不输入他们的详细信息。 相反,它可以在用户完成体验后显示为“以Apple登录”。

Image for post
18:12 of the WWDC20 “Explore App Clips” session
WWDC20“探索应用剪辑”会议的18:12

To convert the app clip user to installing the full app, SKOverlay can be used — or an App Store overlay modifier in the case of a SwiftUI app.

要将应用剪辑用户转换为安装完整的应用程序,可以使用SKOverlay或对于SKOverlay应用程序,可以使用App Store覆盖修饰符。

总结 (To Summarize)

App clips, introduced in iOS 14, are a great way for new users to experience a section of your application. They won’t be shown in the home screen but can be invoked with URLs on iMessage, Apple’s app-clip code, or as banners on Safari.

iOS 14中引入的应用程序剪辑是新用户体验应用程序部分的*佳方法。 它们不会显示在主屏幕上,但可以使用iMessage上的URL,Apple的应用剪辑代码或作为Safari上的横幅广告来调用。

One app can have only one app clip; however, it can show multiple experiences via different URLs. Coded either in SwiftUI or UIKit, you can have the same code for the app as the app clip, which is just an extension for the app. App-clip size should be smaller than 10 MB when submitting it to the review process.

一个应用程序只能有一个应用程序剪辑; 但是,它可以通过不同的URL显示多种体验。 使用SwiftUI或UIKit进行编码,您可以为应用程序使用与应用程序剪辑相同的代码,这只是应用程序的扩展。 将应用剪辑的大小提交给审核过程时,应小于10 MB。

The small size of the app, along with predefined flows, makes it easy for users to experience a section of your app smoothly, thus giving you an opportunity to convert them into an app install.

应用程序的小尺寸以及预定义的流程,使用户可以轻松顺畅地体验应用程序的一部分,从而使您有机会将其转换为应用程序安装。

iOS应用程序之间数据共享

iOS应用程序间共享数据

我们知道由于iOS有安全沙盒机制,应用之间是不能直接访问,但是Apple友好的提供了四种访问机制
它们分别是:
1. 粘贴板 UIPasteboard
2. 自定义URL Scheme
3. App Groups
4. 钥匙串

以下,就详细的说说它们的原理和具体怎么使用。

首先,创建两个项目, 它们分别是:PSharedData1,PSharedData2

1. 粘贴板 UIPasteboard
例如:有道词典,在搜索词的文本框里点击时
百度浏览器, QQ浏览器,在搜索关键词时,
会把从别处复制到剪切板的内容给自动显示出来
出于这样的功能,在PSharedData1里,我们把数据通过UIPasteboard设置进去,然后启动PSharedData2,读取UIPasteboard里的内容

详细代码:
在PSharedData1项目里

– (void)viewDidLoad {
[super viewDidLoad];

UIImage *im1 = [UIImage imageNamed:@”2.png”];
UIImage *im2 = [UIImage imageNamed:@”2.png”];
UIImage *im3 = [UIImage imageNamed:@”2.png”];

UIColor *c1 = [UIColor redColor];
UIColor *c2 = [UIColor redColor];
UIColor *c3 = [UIColor redColor];

UIPasteboard *pasteboard = [UIPasteboard pasteboardWithName:@”com.xiaoruigege.pasteboard” create:YES];
pasteboard.strings = @[@”aa”,@”bb”,@”cc”,@”dd”];
pasteboard.images = @[ im1, im2, im3];
pasteboard.colors = @[c1, c2, c3];

}

在PSharedData2项目里
– (void)viewDidLoad {
[super viewDidLoad];

UIPasteboard *pasteboard = [UIPasteboard pasteboardWithName:@”<pre name=”code” class=”objc”>com.xiaoruigege.pasteboard
” create:NO]; NSArray<NSString *> *strings = pasteboard.strings; NSArray<UIImage *> *images = pasteboard.images; NSArray<UIColor *> *colors = pasteboard.colors; NSLog(@”string: %@, colors : %@, images: %@”, strings, colors, images);}
注意:UIPasteboard可以存放NSString, UIImage, UIColor, 但是每次设值,只能存放一种数据类型,以*后一次赋值为主
比如:我在PSharedData1项目里,同时设置了三种数据类型和数据
pasteboard.strings = @[@”aa”,@”bb”,@”cc”,@”dd”];
pasteboard.images = @[ im1, im2, im3];
pasteboard.colors = @[c1, c2, c3];
但是,从 PSharedData2项目里,取出值,仅仅只有colors有值,因为colors在设值时,是*后一个
NSArray<NSString *> *strings = pasteboard.strings;
NSArray<UIImage *> *images = pasteboard.images;
NSArray<UIColor *> *colors = pasteboard.colors;

 

 

2.自定义URL Scheme
例如:我们分享微博时,第三方应用使用QQ, 微信等登陆时
从我们自己的客户端跳转到到微博,QQ客户端时,使用的就是自定义URL
当然,也可以作为我们从一个客户端跳转另一个客户端时通过制定URL,并且可以传参数,且参数是不可见的

详细代码:
在PSharedData1项目中的info.plist文件中配置如下

URL identifier 一般可以取公司域名倒置
URL Schemes 是关键,它是一个Array,表示可以用多种方式打开,我这里定义xiaoruigege, 即表示其他项目可以通过 xiaoruigege://就可以打开PSharedData1项目(就是自己)
但是在iOS9中,必须要在打开的项目里配置白名单(被打开项目的URL Scheme)

在PSharedData2项目里,配置白名单,适用于iOS9.0及以上,iOS8.0及以下不用配置,也可以打开
info.plist配置是

通过PSharedData2项目,打开PSharedData1项目的调用代码
NSURL *url = [NSURL URLWithString:@”xiaoruigege://param=1&m=2″];
[[UIApplication sharedApplication] openURL:url];

自定义URL xiaoruigege://param=1&m=2
param=1&m=2 这是参数列表

PSharedData1项目打开后,会执行如下appDelegate中的代理函数
-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
if ([[url scheme] hasPrefix:@”xiaoruigege://”]) {

//解析URL获取数据

return YES;
}
return NO;
}

 

 

 

3. App Groups

iOS8之后苹果加入了App Groups功能,应用程序之间可以通过同一个group来共享资源,app group可以通过NSUserDefaults进行小量数据的共享,
如果需要共享较大的文件可以通过NSFileCoordinator、NSFilePresenter等方式。
开启app groups,需要添加一个group name,app之间通过这个group共享数据:

步骤:点击项目 -> 选择相应的Target -> 选择Capabilities项 -> 点开App Groups -> 点击下面的加号,添加一个字符串作为标识 ,group.xiaoruigege.shareddata 是我自己写的标识

 

把PSharedData1项目和PSharedData2项目的这块设置成一致,就OKAY了

设值
NSUserDefaults *myDefaults = [[NSUserDefaults alloc]
initWithSuiteName:@”group.xiaoruigege.shareddata”];
[myDefaults setObject:@”group.xiaoruigege.shareddata” forKey:@”mykey”];

取值
NSUserDefaults *myDefaults = [[NSUserDefaults alloc]
initWithSuiteName:@”group.xiaoruigege.shareddata”];
NSString *content = [myDefaults objectForKey:@”mykey”];
NSLog(@”AppGroups: %@”, content);

 

 

4. KeyChain 钥匙串

iOS的keychain提供一种安全保存信息的方式,可以保存密码等数据,而且keychain中的数据不会因为你删除app而丢失,你可以在重新安装后继续读取keychain中的数据。通常每个应用程序只允许访问自己在keychain中保存的数据,不过假如你使用同一个证书的话,不同的app也可以通过keychain来实现应用间的数据共享

为了实现keychain共享数据,我们需要开启Keychain Sharing,开启方法如下,然后添加设置相同的Keychain Group,不过别忘记了添加Security.framework。

将项目和项目的这里设置成一样,就可以达到两个项目互相设值并且访问

iOS app之间共享数据的几种方法

iOS app之间要共享数据不是那么容易,因为每个app都是sandbox。然后,有时候又不得不跟其它app之间共享数据,那应该怎么办呢?

下面是一些常用方法的总结:

  • UIDocumentInteractionController
    Availability: iOS 3.2+
    具体用法参见:http://mobile.tutsplus.com/tutorials/iphone/previewing-and-opening-documents-with-uidocumentinteractioncontroller/
  • UIActivityViewController
    Availability: iOS 6.0+
  • Shared Keychain Access
    这个要求app之间用的是同样的证书
  • Custom URL Scheme
    通过构造URL,把数据作为参数传递过去。 本地测试过,传递10000个字符都可以,不过不要太长,内存可能吃不消。
  • Web Service 通过dropbox或者其他第三方的服务来共享数据。
  • UIPasteboard + URL Scheme 通过URL scheme传递UIPasteboard的名称,然后通过UIPasteboard共享数据。
    微信iOS SDK应该采用的就是这种方式。
    不过在iOS 7上,这种方法会存在问题,如果采用这种方案,得赶紧想办法解决。

1) http://enharmonichq.com/sharing-data-locally-between-ios-apps/

2) http://stackoverflow.com/questions/17080074/ios7-beta-doesnt-allow-inter-app-communication-by-uipasteboard

什么是跨境电商?

随着人们生活节奏的加快,当今社会越来越多的人喜欢网购,即便是需要通过跨境才能购买到,买家也会在跨境电商平台上下单购买自己中意的产品。跨境电商销售产品,主要赚取不同区域之间存在信息差和汇率差,其利润通常是国内5-10倍,就好比国外带回来的奢侈品和手表一样,就因为可赚取较大的利润,所以才会出现大量海外代购从业人员。建议跨境电商卖家在国内寻找价格便宜,而在发达国家和地区价值较高的商品进行销售。网店方面的问题,请加VX号:ymxh365

什么是跨境电商?

跨境电商即:跨境电子商务,其定义主要是指,分属于不同国家和地区,不同关景的电子商务交易人群,通过国内或国外电子商务平台,进行交易且通过电子账单支付和贸易结算,*终完成交易;选择通过跨境物流公司,将贸易商品送达的一种国际间交易方式。

目前全球*大的跨境电商平台,即:亚马逊平台,平台对跨境销售提供许多优惠政策。很多国内做跨境电商销售的朋友,都首先会考虑亚马逊平台。亚马逊平台上拥有4亿左右的用户,注册会员更是高达1亿,而在平台上仅有600万左右的卖家;相对于国内电商平台来说,亚马逊平台竞争并不大,况且国内卖家将商品销售到国外去,还可以赚取高额利润,其销售利润在国内电商平台上根本不可能达到。网店方面的问题,请加VX号:ymxh365
为什么亚马逊平台销售产品能获取高额利润呢?商家主要赚取的是跨国、跨区域间的价格差和汇率差;一件商品在国内销售价格并不是很高,因为我国是制造业大国,许多商品生产的量已经远远超过国内需求,导致大量商品积压,所以售价不理想;而做跨境销售的商家则可以在国内低价进货,而高价销售到国外,低价进货高价销售,这本身就能赚取一定的利润,同时由于跨国销售存在汇率差,商家能*大限度的赚取高额利润。举个例子,一件商品在国内销售5元钱,如果在美国售价10美金,那么10美元=68.785元(2019年7月29日,1美元=6.8785人民币)。

跨境电商主要有两种:出口跨境电子商务和进口跨境电子商务,在我国跨境电商销售主要是企业对企业,即:B2B销售模式,和企业对消费者个人,即:B2C销售模式。

B2B销售模式主要为:以广告和信息发布为主。很多交易都在线下交易,其本质上还属于传统的贸易。网店方面的问题,请加VX号:ymxh365
B2C销售模式主要为:国内企业和国外消费者之间的贸易,大多以销售个人消费品为主,*大多数产品是通过航空小包运输,也可以选择邮寄和快递等方式,而报关的主体主要是邮政或其他的快递公司。

经过这几年的发展,跨境电商销售越来越火,而国内电商卖家则因从业人员过多,竞争*大,而逐渐趋于饱和的趋势,商家想要在国内获取更大的利润将变得越来越难;因而国内卖家大多把目光转移到跨境电商销售上,因跨境电商面对全球200多个国家和地区的客户,其市场空间比较大。近年来国内电商销售业绩不理想,国内电商竞争越来越大,商家赚取利润越来越少。建议国内想要做跨境销售的卖家,提前布局亚马逊跨境销售,尤其亚马逊无货源网店将是跨境电商销售新模式,新趋势!

iOS技术点

Images.xcassets文件夹硬盘区存放静态图片资源
SupportingFiles->images文件夹硬盘区存放静态图片资源
以太网走有线渠道/Wifi走无线渠道
argv列表实例(带字符元素)
——————————————————————————————

Safari搜索框相当于驱动openURL指令(这就意味着通过指令来实现对app应用程序的驱动访问则app应用程序应该配置URL Scheme(app应用外访问链接))

———————————————————————

URLScheme指令访问链接(实现被访问)
手机设备的系统环境配置信息储存表内将会自动注册所安装的app应用程序对应的URL Scheme。

———————————————————————

苹果手机设备系统环境出厂时自带的系统应用的优先级别*高的,同样的URL Scheme标识符肯定是优选考虑进行系统自带应用的激活触发。

————————————————————————

URL Scheme的入口名称地址mdb(促使进入项目工程内)
URL Identifier是自定义的URL scheme的次级名字(区分具体的目标应用)
———————————————————————————
断点模式下通过po获取指令表达式的值
———————————————

Vc跳转正向起点不释放/逆向起点释放内存

———————————————————

Subversion子版本控制环境体系(直观工具Cornerstone)
H5-阻断-原生
TF文档
客户端(客户端原生代码)/唤醒web前端/三方App唤醒/后台

客户端源码操作

N:原生
S:后台
W:前端
O:三方App

#if #elif #else #endif 运行时不会触发(运行时稳定不变)(编译时预设值)

If 运行时条件语句(运行时触动执行)