虚拟机苹果ios
2018-12-20 10:24:37 weixin_30512027 阅读数 1621

1、虚拟机安装黑苹果(网上教程一搜一把 这里就不多介绍了)

2、安装开发环境

  1、xcode 安装最新的就行

  2、as 、flutter sdk(配置flutter环境变量)、flutter 插件

  3、运行flutter doctor 根据提示安装相应插件 直到全部运行成功

  4、配置xcode(证书、版本等)

  5、flutter build ios 编译

  6、xcode archive打包

 

粗略整理一下步骤,有时间再补充个步骤详细操作

2016-05-30 10:46:00 weixin_33971205 阅读数 9

在2013年3月21日苹果已经通知开发者,从2013年5月1日起,访问UIDIDs的程序将不再被审核通过,替代的方案是开发者应该使用“在iOS 6中介绍的Vendor或Advertising标示符”。

苹果已经警告过我们uniqueIdentifier将不能再使用了,并且提供了另外两个可选的。但是在程序中该选择使用哪个呢?本文不会回答这个问题,具体用哪个是由你来根据程序的目的来做决定的。

下面我将列出iOS中目前支持的,以及被废弃的唯一标示符方法,并对其做出相应的解释,希望你看了以后针对唯一标示符的使用上,能够做出正确的确定。

CFUUID从iOS2.0开始,CFUUID就已经出现了。它是CoreFoundatio包的一部分,因此API属于C语言风格。CFUUIDCreate 方法用来创建CFUUIDRef,并且可以获得一个相应的NSString,如下代码:

  1. CFUUIDRef cfuuid =CFUUIDCreate(kCFAllocatorDefault); 
  2. NSString *cfuuidString =(NSString*)CFBridgingRelease(CFUUIDCreateString(kCFAllocatorDefault, cfuuid));
复制代码


获得的这个CFUUID值系统并没有存储。每次调用CFUUIDCreate,系统都会返回一个新的唯一标示符。如果你希望存储这个标示符,那么需要自己将其存储到NSUserDefaults, Keychain, Pasteboard或其它地方。

示例: 68753A44-4D6F-1226-9C60-0050E4C00067

NSUUIDNSUUID在iOS 6中才出现,这跟CFUUID几乎完全一样,只不过它是Objective-C接口。+ (id)UUID 是一个类方法,调用该方法可以获得一个UUID。通过下面的代码可以获得一个UUID字符串:

  1. NSString *uuid =[[NSUUID UUID] UUIDString];
复制代码


跟CFUUID一样,这个值系统也不会存储,每次调用的时候都会获得一个新的唯一标示符。如果要存储的话,你需要自己存储。在我读取NSUUID时,注意到获取到的这个值跟CFUUID完全一样(不过也可能不一样):

示例: 68753A44-4D6F-1226-9C60-0050E4C00067

广告标示符(IDFA-identifierForIdentifier)这是iOS 6中另外一个新的方法,advertisingIdentifier 是新框架AdSupport.framework的一部分。ASIdentifierManager单例提供了一个方法advertisingIdentifier,通过调用该方法会返回一个上面提到的NSUUID实例。

  1. NSString *adId =[[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
复制代码


跟CFUUID和NSUUID不一样,广告标示符是由系统存储着的。不过即使这是由系统存储的,但是有几种情况下,会重新生成广告标示符。如果用户完全重置系统((设置程序 -> 通用 -> 还原 -> 还原位置与隐私) ,这个广告标示符会重新生成。另外如果用户明确的还原广告(设置程序-> 通用 -> 关于本机 -> 广告 -> 还原广告标示符) ,那么广告标示符也会重新生成。关于广告标示符的还原,有一点需要注意:如果程序在后台运行,此时用户“还原广告标示符”,然后再回到程序中,此时获取广告标示符并不会立即获得还原后的标示符。必须要终止程序,然后再重新启动程序,才能获得还原后的广告标示符。之所以会这样,我猜测是由于ASIdentifierManager是一个单例。

针对广告标示符用户有一个可控的开关“限制广告跟踪”。Nick Arnott的文章中已经指出了。将这个开关打开,实际上什么也没有做,不过这是希望限制你访问广告标示符。这个开关是一个简单的boolean标志,当将广告标示符发到任意的服务器端时,你最好判断一下这个值,然后再做决定。

示例: 1E2DFA89-496A-47FD-9941-DF1FC4E6484A

Vindor标示符 (IDFV-identifierForVendor)这种叫法也是在iOS 6中新增的,不过获取这个IDFV的新方法被添加在已有的UIDevice类中。跟advertisingIdentifier一样,该方法返回的是一个NSUUID对象。

  1. NSString *idfv =[[[UIDevice currentDevice] identifierForVendor] UUIDString];
复制代码


苹果官方的文档中对identifierForVendor有如下这样的一段描述 :
The value of this property is the same for apps that come from the same vendor running on the same device. A different value is returned for apps on the same device that come from different vendors, and for apps on different devices regardless of vendor.


如果满足这样的条件,那么获取到的这个属性值就不会变:相同的一个程序里面-相同的vindor-相同的设备。如果是这样的情况,那么这个值是不会相同的:相同的程序-相同的设备-不同的vindor,或者是相同的程序-不同的设备-无论是否相同的vindor。

看完上面的内容,我有这样的一个疑问“vendor是什么”。我首先想到的是苹果开发者账号。但事实证明这是错误的。接着我想可能是有一个AppIdentifierPrefix东西,跟钥匙串访问一样,可以在多个程序间共享。同样,这个想法也是的。最后证明,vendor非常简单:一个Vendor是CFBundleIdentifier(反转DNS格式)的前两部分。例如,com.doubleencore.app1 和com.doubleencore.app2 得到的identifierForVendor是相同的,因为它们的CFBundleIdentifier 前两部分是相同的。不过这样获得的identifierForVendor则完全不同:com.massivelyoverrated 或 net.doubleencore

在这里,还需要注意的一点就是:如果用户卸载了同一个vendor对应的所有程序,然后在重新安装同一个vendor提供的程序,此时identifierForVendor会被重置。

示例: 599F9C00-92DC-4B5C-9464-7971F01F8370

UDID

在之前的版本中是可用的,但是在iOS5以及之后的版本中,以及被弃用了。虽然,这个UDID用得很广泛,但是,不得不说的是,它在慢慢的远离开发者,不能在考虑使用UDID了。至于这个标示符是转为私有方法,或者完全从以后的iOS版本中移除,还有待观察。不过,这个UDID在部署企业级签名程序时,非常方便。获取UDID的方法如下:

  1. NSString *udid =[[UIDevice currentDevice] uniqueIdentifier];
复制代码


示例: bb4d786633053a0b9c0da20d54ea7e38e8776da4

OpenUDID在iOS 5发布时,uniqueIdentifier被弃用了,这引起了广大开发者需要寻找一个可以替代UDID,并且不受苹果控制的方案。由此OpenUDID成为了当时使用最广泛的开源UDID替代方案。OpenUDID在工程中实现起来非常简单,并且还支持一系列的广告提供商。

  1. NSString *openUDID = [OpenUDID value];
复制代码


OpenUDID利用了一个非常巧妙的方法在不同程序间存储标示符 — 在粘贴板中用了一个特殊的名称来存储标示符。通过这种方法,别的程序(同样使用了OpenUDID)知道去什么地方获取已经生成的标示符(而不用再生成一个新的)。

之前已经提到过,在将来,苹果将开始强制使用advertisingIdentifier 或identifierForVendor。如果这一天到来的话,即使OpenUDID看起来是非常不错的选择,但是你可能不得不过渡到苹果推出的方法。

示例: 0d943976b24c85900c764dd9f75ce054dc5986ff

总结希望上面的信息能够帮助你在程序使用选择正确的唯一标示符。在这里,我创建了一个小的唯一标示符测试程序,你可以运行该程序,并查看一下显示的内容(包括上面提到的所有标示符)。另外,下面有两个表,表中描述了两个内容:在iOS中的可用性,以及什么时候可以获得重置的标示符。



* 程序必须重启才能看到改变的效果。

** 删除了所有相同vendor提供的程序,才能看到改变的值。

原文链接:http://www.cnblogs.com/liuyong1987/archive/2013/05/08/3066314.html

2018-11-17 20:31:00 weixin_33695082 阅读数 7

1971年,16岁的[史蒂夫·乔布斯]和21岁的史蒂芬·沃兹涅克(Stephen Wozniak)经朋友介绍而结识。(两个天才的相遇)

1976年,[乔布斯]成功说服沃兹装配机器之余跟他去推销,他们另一位朋友,罗·韦恩(Ron Wayne)也加入,三人在1976年4月1 [8] 日组成了[苹果电脑公司]

1977年1月,苹果电脑公司正式注册成为“[苹果电脑公司]。

1977年4月,苹果公司在首届西岸电脑展览会(West Coast Computer Fair)上推出[Apple II]。[Apple II]成为了人类历史上第一台[个人电脑]。

1980年12月12日,苹果公司公开招股上市,在不到一个小时内,460万股全被抢购一空,当日以每股29美元收市。按这个收盘价计算,苹果公司高层产生了4名亿万富翁和40名以上的百万富翁。

1983年苹果公司推出以CEO[史蒂夫·乔布斯]女儿的名字命名的新型电脑[Apple Lisa],这是全球首款将图形用户界面和[鼠标]结合起来的个人电脑。

1984年1月24日,[Apple Macintosh]发布,该电脑配有全新的、具有革命性的操作系统,成为计算机工业发展史上的一个里程碑。

1985年4月经由苹果公司董事会决议撤销了乔布斯的经营大权,乔布斯几次想夺回权力均未成功,便在1985年9月17日愤而辞去苹果公司董事长职位。

1997年,乔布斯创办的NeXTComputer公司被苹果公司收购,并且再次回到苹果公司担任董事长。

2001年,苹果推出了[Mac OS X]一个基于乔布斯的NeXTStep的操作系统。

2006年,史蒂夫·乔布斯发表了第一部使用英特尔处理器的台式电脑和笔记本电脑,分别为iMac和MacBook Pro。

2006年,推出第六代[iPod]数码音乐播放器,称为iPodclassic。

2006年,推出第二代[iPod nano]数码音乐播放器,采用和[iPod mini]相同之铝壳设计。

2007年,苹果推出了iPhone,一个结合了iPod和手机功能的科技产品。它也是一个上网工具和流动电脑。

2011年
8月24日,乔布斯辞去苹果公司首席执行官职位,董事会任命原首席运营官提姆·库克为公司的新任首席执行官,乔布斯当选为董事长。
10月5日,乔布斯逝世。库克接手后并未对公司作出重大改变,大致上依照乔布斯时代的方向继续营运公司。2012年1月10日,苹果以5亿美元收购以色列存储器制造商Anobit,同时在当地设立研发中心。

转载于:https://www.jianshu.com/p/83eba9b87985

2014-04-17 12:08:00 weixin_30537391 阅读数 1

开发者账号分个人、公司、企业还有校园四种

个人和公司都是99$,企业299$一年,校园的免费。

支付方式支持VISA国际信用卡和其他

•$ 99 - 个人
- 此计划是为个人开发者能够开发iPhone / iPod Touch/ iPad的商业应用,并且能够发布他们的应用程序到App Store上。
- 这个程序允许开发人员分发其应用程序到多达100个设备上作测试, 并能分发应用程序到App Store上进行发布及销售。
- 这个程序不允许开发人员创建一个团队,不能添加团队成员到他们的开发者团队。
- 开发者参加这一计划将会以其个人名义作为卖方在App Store上进行销售。
•$99 Company - 公司应在邓白氏注册并拥有有效的DUNS号码
- 允许开发人员分发通过审查的应用程式到 App Store。
- 这个程序允许开发人员建立一个团队,把团队成员新增到他们的帐户
- 将其公司名称作为卖方在应用商店上市
程序如下:
1. 登录 <http://developer.apple.com/programs/ios/> 点击Enroll Now进入
2. 选择以个人形式或是公司形式申请注册,填写相关的真实信息;
3. Individual: 网上填写信用卡帐单信息并将其提交进行支付购买;
Company: 注册时必须提供有效的DUNS号码; 通过审核后,您将会收到Program License Agreement,仔细阅读后若同意即可通过在网上填写信用卡帐单信息并将其提交进行支付购买。
4. 当您成功支付购买和激活您的帐号后,您就可以测试您的应用程式, 通过测试后就可以将其放在iTunes Connect里进行提交并上传至App Store做审核。
如果您想要了解更详细的信息,请您登录:
http://www.apple.com.cn/developer/
http://www.apple.com.cn/developer/support/ios/
关于如何免费申请DUNS号码,请您参考以下信息:
公司版和企业版的iOS开发者帐号申请是需要邓白氏号码的。
请您首先使用以下链接免费获取邓白氏号码,以下的申请表格是需要您用全英文去填写并提交的。
https://developer.apple.com/ios/enroll/dunsLookupForm.action
在您成功提交完申请之后,邓白氏公司将会在5-7天内给您答覆的。在您拿到邓白氏号码(DUNS号码)之后,您就可以继续申请开发者帐号了。
关于DUNS号码申请上的常见问题请参考以下网站:
https://developer.apple.com/support/D-U-N-S/
我衷心希望以上信息可以帮助到您,希望您注册过程一切顺利。如果在注册过程中有存在任何疑问,请您再次联系我们,我们很乐意协助您的。
Apple开发者支援联系电话列表:
https://developer.apple.com/contact/phone.php
办公时间:星期一到星期五 9AM-5PM
感谢您对iOS开发者计划的关注,祝您工作顺利。
Vincent
Apple Developer Program Support

转载于:https://www.cnblogs.com/fookehi/p/3670419.html

2016-04-05 17:14:59 TMDSJ 阅读数 356

苹果的定位是通过CoreLocation模块来实现的。

以下是一个定位的Demo。

//

//  AppleLocationSingle.m

//  bk

//

//  Created by jie on 16/4/5.

//  Copyright © 2016 jie. All rights reserved.

//

#import "AppleLocationSingle.h"

#import <UIKit/UIKit.h>


@implementation AppleLocationSingle


//定位管理的懒加载

-(CLLocationManager *)locationManger{


    if (!_locationManger) {

        _locationManger=[[CLLocationManager alloc]init];

        _locationManger.delegate=self;

        _locationManger.desiredAccuracy = kCLLocationAccuracyBest;

/*

当设置为最优的时候,苹果会根据你的精度distanceFilter大小来决定最好的方式满足你的精度。GPS最精确,其次是蜂窝基站三角定位,然后是Wifi通过网络运营商的数据库得到的数据

*/  


      _locationManger.distanceFilter = 20;//一般是能控制在20米的精度(当系统检测到你的位置没有远离上个位置20米时是不会调取你的代理)

        [_locationManger requestAlwaysAuthorization];//处于后台的情况下也可以定位。

        [_locationManger startUpdatingLocation];

    }

//判断用户是否允许当前程序使用定位服务

    if ([CLLocationManager authorizationStatus]==kCLAuthorizationStatusNotDetermined || [CLLocationManager authorizationStatus]==kCLAuthorizationStatusRestricted||

        [CLLocationManager authorizationStatus]==kCLAuthorizationStatusDenied) {

        //用户不允许该程序定位

        UIAlertView *tip=[[UIAlertView alloc]initWithTitle:@"提示" message:@"用户不允许定位!" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];


        [tip show];

    }

    return _locationManger;

}


- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status{

    

    switch (status) {

        case kCLAuthorizationStatusNotDetermined:{

            

            NSLog(@"kCLAuthorizationStatusNotDetermined");

            break;

            

        }

        case kCLAuthorizationStatusRestricted:{

            

            NSLog(@"kCLAuthorizationStatusRestricted");

            break;

        }

        case kCLAuthorizationStatusDenied:{

            

            NSLog(@"kCLAuthorizationStatusDenied");

            break;

        }

            

        case kCLAuthorizationStatusAuthorizedAlways:{

            

            NSLog(@"kCLAuthorizationStatusAuthorizedAlways");

            break;

        }


        case kCLAuthorizationStatusAuthorizedWhenInUse:{

            

            NSLog(@"kCLAuthorizationStatusAuthorizedWhenInUse");

            break;

        }

            

        default:

            NSLog(@"没有这种状态啊");

            break;

    }

    

}


- (void)locationManager:(CLLocationManager *)manager

     didUpdateLocations:(NSArray<CLLocation *> *)locations{

    NSLog(@"开始更新位置");

    

    NSLog(@"位置数组:%@",locations);

    

    CLLocation *currentLocation=locations[0];

    

    NSString *str=[NSString stringWithFormat:@"当前的坐标:%f--%f",currentLocation.coordinate.latitude,currentLocation.coordinate.longitude];

    UIAlertView *tip=[[UIAlertView alloc]initWithTitle:@"定位" message:str delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];

    

    [tip show];

}


- (void)locationManager:(CLLocationManager *)manager

       didFailWithError:(NSError *)error{

    NSLog(@"定位失败:%@",error);

}


@end



iOS 苹果审核指南

阅读数 149

iOS苹果产品简介

阅读数 1

iOS苹果Bitcode

阅读数 302

iOS 苹果审核被拒

阅读数 227

iOS 苹果字体

阅读数 13

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