app怎么分享 ios
2017-12-08 17:38:00 weixin_34130269 阅读数 19

背景

第一次正式接触项目,修改了一点小BUG以后问题就是怎么把这个APP上架了。大佬说这个很简单让我自己百度看着做,完全没有做过啊以前,很慌啊!失败了咋办?咋开始啊?哪里开始啊?当时看到这个我也是一头雾水啊。

9007339-e11ad0c74f306e29.png
image.png
9007339-c29603cba8862dfc.png
image.png

1.证书(Certification)

开发证书(Developer Certification)

安装在电脑上可以给开发者提供权限实现真机测试的。

发布证书(Distribution Certification)

安装在电脑上提供发布iOS程序的权限,可以做测试版本和发布程序。

那怎么申请证书呢?
首先你要有苹果开发者账号


9007339-f7255775ee48adb0.png
image.png

然后就可以登录到这个界面了


9007339-059b9af0ff17e6e6.png
image.png

接着就是怎么创建证书了
9007339-53fed8deb2ea87a6.png
image.png

9007339-2bd53d0e772453eb.png
image.png
签名文件的创建
9007339-1086a256c36cc3aa.png
image.png

这个签名文件在哪里穿件呢?
点击你电脑的dock栏的Launchpad,选择其他,里面有一个钥匙串访问,然后就是如图。


9007339-127e684e345473d6.png
image.png

9007339-0e49f6a3b410d2b8.png
image.png
创建 App IDs
9007339-014cb7cac8f84d02.png
image.png

这里的Bundle ID一定要和项目上的Bundle ID一致。


9007339-d19660d91a0128af.png
image.png

这里选择APP要支持的服务,比如推送等。


9007339-51935ca4ff67abec.png
image.png
证书

依次创建四个证书,四个证书都需要之前创建的签名文件,把签名文件上传即可。其中有两个推送证书,创建推送证书的时候需要用到App IDs 注意Bundle ID 不要选择错了。


9007339-1fa59dedd0b2bce7.png
image.png

创建完四个证书后此时你会看到四个证书,然后双击证书将四个证书都添加到钥匙串访问中。如果双击的时候跳出什么窗口,没有将证书添加进去,就直接将证书拖到钥匙访问串中。


9007339-e438b2e3511204d1.png
image.png
添加测试设备
9007339-f554f3d30b5aa3e2.png
image.png

添加完成后 这台设备就可以测试了


9007339-2b600df63c5cf604.png
image.png

如果不知道怎么获取UDID可以将手机接入电脑ituns就会跳出来,点击小手机的图标就会手机详情,点击序列号就会出现UDID。

创建授权配置文件

创建好了证书此时还不能放到项目中,要创建授权文件


9007339-ef165d836df7656c.png
image.png

9007339-3105f73dc5f9d724.png
image.png

选择关联的APP IDs


9007339-19e4ac9d454da98d.png
image.png

选择关联的证书
9007339-682c6ee4d78d9a62.png
image.png

选择调试的设备 可以全选
9007339-c7ea2207e62f2b9e.png
image.png

给授权文件命名,只有授权文件才能添加到项目中


9007339-35e9caedc12aa1e0.png
image.png

到这里证书和配置文件就全部弄好了。接下来就是将证书放入到项目中。
9007339-936f409c1a1c40aa.png
image.png

2.打包项目

打包项目的时候不要选择真机或者模拟器,不然Archive会显示灰色 无法打包。

9007339-44e45efa1e790ebf.png
image.png

9007339-f3a70e037ead888a.png
image.png

登录到开发者账号 选择我的APP
9007339-3a9d99ff7fd765de.png
image.png

9007339-34e952655e96c900.png
image.png

9007339-f4934dc3a57f7c26.png
image.png

9007339-42c23bd93189c1a3.png
image.png

9007339-ce0fb239440052cf.png
image.png

APP信息具体情况具体填写
9007339-a536894e88260de7.png
image.png

9007339-e90bd0e116d955fb.png
image.png

9007339-eb421a70b511ac06.png
image.png

9007339-da8d41cb5eb39192.png
image.png

9007339-9fd16d3200f6b02a.png
image.png

9007339-44ebff09d44a72f0.png
image.png

成功以后就能选择构建版本发布了
9007339-0bf267c3a5bd4ed0.png
image.png

9007339-57a5362d217a219b.png
image.png

9007339-dd11a9f71fde3a04.png
image.png

大功告成!因为之前上线今天才想起来想写的所以借用了一点图(侵删)。
参考网址(证书):http://www.jianshu.com/p/01224fc523d4
参考网址(上架):http://www.jianshu.com/p/b1b77d804254

2014-04-04 11:25:38 u013296162 阅读数 486

什么因素最影响用户的使用一款应用程序行为?怎样提升用户的体验?下面分享一些ios app开发教程内容。  

用户的要求很简单:无缝连接!速度! 

用户需要的,是无论在网页上还是移动终端上都能有一样的体验,用户其实根本不需要你特地为移动终端做一个独一无二的交互界面。然而,这个“无缝连接”的一致体验,其实比本身建立一个原生态应用更复杂。 

当移动应用速度提高了,用户的好评度就明显上涨了。没有人愿意等着一个应用加载2分钟都没有能够刷新出新的内容,速度是IOS APP开发团队一直需要提升的地方,他也分享了更多关于速度的问题。 

 

HTML:无缝连接应用开发平台 

HTML作为应用开发平台带来的三大好处: 

时效性:HTML能够让用户在最短的时间内体验到你应用的改变。 

A/B测试:A/B测试是一种交流性的新产品测试方式,往往是针对一个功能同时推出两个不同的版本来测试市场反应,并选择最佳的方案。加上高时效性的特点,可以很快选择出适合市场的版本。 

只需一次编码:没错,基于HTML的应用,只需一次编码,就可以完成网页、iOSAndroid等不同运营系统的应用。这对开发者来说当然是个福音。 

 

应用加速小贴士 

说到如何加快速度,Adam有颇多心得: 

缓存数据客户端: 

将数据缓存在本地存储器上的速度远远快于把数据存在云端!哪怕只有一小部分数据,你也会明显地感觉到速度的差别。并设计一个小型的数据库来记录本地数据。 

 

从数据存储器上批量加载: 

比较下列两组编程的区别,或许你能看到如何让你的应用运行地更快! 

 

团队合作 

就像由一个人单独完成一件事情会需要更长的时间一样,你可以把应用的任务分配给不同的程序来完成。用网络线程(Network Thread)下载和解析数据;用渲染线程(Render Thread)去获取和呈现用户的故事,用大数据调度中心来完成后台任务,并不断循环该线性过程以达到最完美状态。 

保持图形处理器GPU的愉快运作 

我们要做的是尽量减少不必要的图文量,比如说多层重叠的图片会需要更长的加载时间,不如就用一层不透明的颜色。再比如说,简单的文本会比复杂的文本内容来的快的多。同时,你可以尽可能地在有条件的时候缓存一些特定的版式和图片,来减少图形处理器的工作量。

不要全屏显示加载状态 

 

如果你是用户,愿意看到上面的小转轮不停地转动5分钟还没有完成加载吗?希望永远不要出现这样整屏的等待状态!宁可给客户显示2天前的状态,也别让屏幕空着,一定要给用户一些可以互动的内容,而非只能在一边干等待。

2018-06-13 11:27:16 u012581760 阅读数 2714

我们在iOS平台上想要实现不同App之间的内容分享一般有几种常用方式:
第一种是通过AirDrop实现不同设备的App之间文档和数据的分享;
第二种是给每个App定义一个URL Scheme,通过访问指定了URL Scheme的一个URL,实现直接访问一个APP;
第三种是通过UIDocumentInteractionController或者是UIActivityViewController这俩个iOS SDK中封装好的类在App之间发送数据、分享数据和操作数据;
第四种是通过App Extension,在iOS 8的SDK中提供的扩展新特性实现跨App的数据操作和分享;
还有一种集成第三方SDK实现的有限个App的数据分享,比如社交平台(QQ,微信,新浪微博等)给我们提供的官方SDK,或者是集成了多个社交平台的ShareSDK组件和友盟分享组件等。
谈谈苹果原生提供的基于iOS SDK的分享技术,同时推荐俩篇苹果开发者中心的文档:Inter-App CommunicationDocument Interaction Programming Topics for iOS
谈一下如何通过UTI让我们的App支持分享。
原理
参考详解苹果提供的UTI(统一类型标识符)这篇文章中,详细地讲解了一下UTI(Uniform Type Identifier),一套苹果给我们提供用来在基于Cocoa和Cocoa Touch应用程序中识别实体内容类型的规范,而关于实现内容关联的技术也正是基于这套规范。在iOS和Mac OS开发中,苹果给我们提供了注册文档类型的接口,而这种注册的文档类型是全局的,系统中所有的应用程序和服务都可以侦测到。因此我们通过这个底层侦测,可以使用其他可选的第三方App来预览我们的App中不支持的文档,而且我们还可以通过这个接口在我们的App中打开并处理第三方App的文档。

如果我们的App可以处理某些类型的实体内容,那么我们就可以在我们项目中的Info.plist文件中进行注册。关于使用哪种类型和UTI,就要参考我在“详解苹果提供的UTI(统一类型标识符)“这篇文章中的讲解。当一个第三方App通过苹果的底层侦测技术检查有哪些App可以处理它所指定的内容类型时,如果我们的App已经注册了这种类型,那么我们的App图标就会显示在其中,并且作为我们自己的App的一个入口。
主要技术
主要应用到这种底层侦测的技术有iOS SDK中给我们提供的UIDocumentInteractionController、UIActivityViewController 和Quick Look 框架。此外,在iOS 8中,苹果又给开发者提供了App Extension,一种更高大上的方式在App之间的实现分享内容。关于UIDocumentInteractionController、UIActivityViewController、Quick Look 框架以及App Extension的细节,我计划在后面的文章中详细讲解。这篇文章,我们主要是来谈谈如何注册我们App可用的文档类型以及简单使用我们的App来处理第三方App分享的内容。

注册可用类型
我们需要在info.plist文件中,添加一个新的属性CFBundleDocumentTypes(实际上输入的是”Document types”),这是一个数组类型的属性,意思就是我们可以同时注册多个类型。而针对数组中的每一个元素,都有许多属性可以指定,详细的属性列表我们可以从官方文档上找到: Core Foundation Keys —- CFBundleDocumentTypes。这里列举我们在做iOS开发时常用的属性
这里写图片描述
- CFBundleTypeName(“Icon File Name”)
字符串类型,指定某种类型的别名,也就是用来指代我们规定的类型的别称,一般为了保持唯一性,我们使用UTI来标识。
- CFBundleTypeIconFiles
数组类型,包含指定的png图标的文件名,指定代表某种类型的图标,而图标有具体的尺寸标识:

|Device |Sizes |
|:------|:---------|
|iPad |64 x 64 pixels, 320 x 320 pixels|
|iPhone and iPod touch|22 x 29 pixels, 44 x 58 pixels (high resolution)|
  • LSItemContentTypes(“Document Content Type UTIs”)
    数组类型,包含UTI字符串,指定我们的应用程序所有可以识别的类型集合

  • LSHandlerRank(“Handler rank”)
    字符串类型,包含Owner,Default,Alternate,None四个可选值,指定对于某种类型的优先权级别,而Launcher Service会根据这个优先级别来排列显示的App的顺序。优先级别从高到低依次是Owner,Alternate,Default。None表示不接受这种类型。
    而当我们添加完所有属性后,开始运行我们的程序,然后再回到我们的Info界面,就会看到Document types这个列表已经发生了变化,这就证明我们成功的注册好了App可用的类型。
    这里写图片描述

打开第三方应用
我们在上面的步骤中注册好了我们的App可以识别的类型,现在我们可以打开一个使用UIDocumentInteractionController或者是Quick Look框架来展示内容的第三方App,这里以iPhone 上的QQ程序为例。

我们在上面的注册步骤中,注册的LSItemContentTypes仅包含了public.data这个UTI。所以我们先从QQ应用程序的我的文件中,打开不同类型的文件进行对比,大家可以看下图我的文件列表中包含俩种类型的文件,一种是.jpg扩展名的图片文件,一种是.pdf扩展名的文档文件。
这里写图片描述
这里写图片描述
当我打开一个图片文件进行预览时,点击其他应用打开,就可以在App列表中看到我们的App图标。简单介绍一下这个页面,第一行是苹果在iOS 7之后给我们提供的使用AirDrop在iPhone、iPad或iPod Touch设备之间通过iCloud共享内容的一种方式。第二行是通过文档类型关联技术识别的App的列表。第三行是通过文档关联技术识别的Action的列表,Action表示对文档可进行的操作,如复制,打印等。
程序回调
当我们通过上面步骤,成功地显示了我的app图标之后,点击图标,我们就可以跳转到我的应用中,而苹果在iOS SDK中给我们提供的接收回调的方法在iOS 9之后做出了改变,因此我们需要针对不同的设备版本做出改变:
这里写图片描述
这里写图片描述
这里写图片描述
参考原地址

2017-11-27 15:35:00 weixin_34102807 阅读数 6

需求:公司要求做一个二维码,自动判断扫码客户端,跳转到指定下载平台:

//var u = navigator.userAgent;
        //var isA = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端
        //var isI = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
        //var isw = !!u.match(/MicroMessenger/i);
        //if (isA) {
        //    if (isw)
        //        location.href = 'http://a.app.qq.com/o/simple.jsp?pkgname=com.fineex.xingdian';
        //    else
        //        location.href = 'http://appapi.fuqiantonglu.com/download/FINEEX-KZG.apk';
        //}
        //else if (isI) {
        //    location.href = 'https://itunes.apple.com/cn/app/fu-gan-xing-dian-yi-dong-fen/id1193890515?mt=8#';
        //}
        //else {
        //    location.href = 'http://vshop.fuqiantonglu.com';
        //}

转载请说明出处!谢谢

转载于:https://my.oschina.net/xainghu/blog/1580405

2018-01-20 15:05:00 weixin_34060299 阅读数 73

这篇文章,我不说最基本的怎么看crash的栈,怎么定位crash的thread,希望看这篇文章的童鞋都有这个基础。这篇文章我主要想记录一下,上传到Fabric或Bugly或者从手机里拷贝出来的crash log,只有地址,没有项目函数该怎么看。如下图:

1918076-b2f05eb4c19743ac.png
image.png
1918076-30babb0e1a39584d.png
image.png

看到这样的crash log,是不是一脸懵逼,只能猜出大概就是FMDB里出问题了,但是具体哪里出问题,出了啥问题,都不知道,没定位。

之所以出现这样的问题是因为没有符号化,符号化就是将系统的内存地址与项目的函数名、文件名、行号进行映射,快速并准确地定位用户APP发生Crash的代码位置,简单的说就是对APP发生Crash的程序堆栈进行解析和还原。一般在哪台机器打包的,就去哪台机器看crash log,Xcode会自动帮你解析,如果想了解更多,请参考文章 分析iOS Crash文件:符号化iOS Crash文件的3种方法
符号化需要三个文件:

  1. crash报告(.crash文件)
  2. 符号文件 (.dsymb文件)
  3. 应用程序文件 (appName.app文件,把IPA文件后缀改为zip,然后解压,Payload目录下的appName.app文件), 这里的appName是你的应用程序的名称。

项目集成第三方上传crash log(如Fabric /Bugly/友盟),一般都会要求你上传对应的符号化文件,它会自动帮你符号化crash log。

定位.dsymb文件

  • 方式一
    通过打包方式获取,
    Xcode -> Window -> Organizer -> Show xcarchive file in Finder -> Right Click Your xcarchive file -> Select "Show Package Contents"
    附上详细动画教程
    1918076-189ec2b875d40f44.gif
    定位dsymb文件.gif

如果进去还是没有.dsymb文件,请进入Project Build Settings -> Generate Debug Symbols 确保它的值是Yes

1918076-84326265f06097b7.png
image.png

  • 方式二
    如果不想通过打包方式拿到.dsymb文件,则直接定位Build后的.app文件,在该目录下面可以找到.dsymb文件,


    1918076-f3044cb81b49a015.png
    image.png

    1918076-f75d31072f490b83.png
    image.png

如果没有,请进入Project Build Settings > Build Options > Debug Information Format 确保它的值是DWARF with dSYM file,这样你在Products目录下,定位.app文件的目录下就有.dsymb文件了。

得到.dsymb文件就可以进行符号化了,不管是instrument还是第三方的,都可以使用。

但是有点特别需要说明,如果你的IPA包是支持bitcode的,那即便你上传了符号化文件,也是解析不了的,只会显示__hidden(排除上架了App Store,从iTunes下载.dsymb),如何解决?
用dsymutil命令:
在.dSYMs文件夹同目录下找到BCSymbolMaps文件夹(file.xcarchive/BCSymbolMaps)再用下面命令,就可以啦。

dsymutil --symbol-map PATH_TO_BCSYMBOLMAPS_DIR downloaded.dSYM

有多个的话,循环:

for d in dSYMs/*
   dsymutil --symbol-map path/to/file.xcarchive/BCSymbolMaps $d
end

参考文章:
分析iOS Crash文件:符号化iOS Crash文件的3种方法
crash log调用栈看不到的解决方案(debug symbols不起作用)
Bugly iOS 符号表配置
Xcode - There are no dSYMs available for download
Swift bitcode Crashlytics __hidden

没有更多推荐了,返回首页