相关推荐
-
苹果开发者计划许可协议(2017年5月2日)
在下载或使用苹果软件或苹果服务之前,请仔细阅读以下APPLE开发者计划许可协议条款和条件。这些条款和条件构成了您与苹果之间的法律协议。 苹果开发者计划许可协议 目的 您希望使用Apple Software(如下所...
-
iCloud和Core Data
本文转自Di Wu's blog,原文:iCloud ...当乔布斯第一次在苹果全球开发大会上介绍iCloud的时候,他将无缝同步的功能描述的太过完美,以至于让人怀疑其是否真的能实现。但当你在iOS 5和iOS 6系统中尝试
-
iOS开发工具,ios开发类库
,iosUI组件介绍,iOS开发常用工具整理,ios开发总结 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SDWebImage多个缩略图缓存组件 UICKeyChainStore存放用户账号密码组件 ...
-
iOS开发之swift资料大全
目录(?)[+] 版本:Swift ...1. 将Swift从Objective-C混合的md文件中抽出(正在进行…) 使用方法:根据目录关键字搜索,记得包含@,以保证搜索目录关键字的唯一性。 问题反馈:请广大网
-
iOS开发 非常全的三方库、插件、大牛博客等等
- FXLabel是一个功能强大使用简单的类库,通过提供一个子类改进了标准的UILabel组件,为字体增加了阴影、内阴影和渐变色等,可以被用在任何标准的UILabel中。FXLabel还提供了更多控件,可以对字体行距、字体间距等...
-
iOS开发第三方库汇总
- FXLabel是一个功能强大使用简单的类库,通过提供一个子类改进了标准的UILabel组件,为字体增加了阴影、内阴影和渐变色等,可以被用在任何标准的UILabel中。FXLabel还提供了更多控件,可以对字体行距、字体间距等...
-
iOS 2015年3月苹果新的审核标准(中文)
iOS开发者计划许可协议目的你想用苹果软件(定义见下文)制定的一个或多个应用程序(定义见下文),运行iOS和OS关注的苹果品牌产品。苹果愿意给你一个有限的许可使用苹果软件开发和对本协议规定的条款和条件,...
-
2015年3月苹果新的审核标准(中文)
请阅读以下许可协议的条款和条件之前仔细下载或使用Apple软件。这些条款和条件构成了您与苹果的法律协议。 的iOS开发者计划许可协议 ...本协议项下开发的应用程序可以分布在四个方面:(1)通过Ap
-
iOS:iOS开发非常全的三方库、插件等等
iOS开发非常全的三方库、插件等等 github排名:https://github.com/trending, github搜索:https://github.com/search. 此文章转自github:https://github.com/Tim9Liu9/TimLiu-iOS 一、UI 下拉刷新 ...
-
iOS开发最常用三方库集合Swift版(三方库、插件、博客等等)
Swift学习资料@ SwiftGuide很赞 的Swift...Swift 30 Projects- 最新 Swift 3.0 的30个小App,更注重代码规范和架构设计(故胤道长) V2ex-Swift- 用 Swift 写的 V2EX 客户端。 iBBS-Swift- “新手开源一个用Swift...
-
iOS开发指南:从零基础到App Store上架(第2版 )
第一部分 基础篇 第1章 开篇综述 2 ... 1.2 开发环境及开发工具 3 1.3 本书中的约定 4 1.3.1 案例代码约定 4 1.3.2 图示的约定 5 第2章 第一个iOS应用程序 7 2.1 创建基于nib的HelloWorld工程
-
在互联网上,没有人知道你是一条狗?
这则漫画中有两只狗:一只黑狗站在电脑椅上,爪子扶着键盘。它望向站在地上、表情迷茫的另一只狗,兴奋地说:「在互联网上,没人知道你是一条狗。 (On the Internet, nobody knows you’re a dog.)画中那只狗的...
-
iOS开发之资料收集
- FXLabel是一个功能强大使用简单的类库,通过提供一个子类改进了标准的UILabel组件,为字体增加了阴影、内阴影和渐变色等,可以被用在任何标准的UILabel中。FXLabel还提供了更多控件,可以对字体行距、字体间距等...
-
VS集成C#开发ABB机器人二次开发:实时变量刷新与程序修改上位机系统,vs对ABB机器人二次开发C#集成PC SDK开发ABB机器人上位机开发
变量实时刷新,实时修改
io刷新修改,
在线程序修改实
VS集成C#开发ABB机器人二次开发:实时变量刷新与程序修改上位机系统,vs对ABB机器人二次开发C#集成PC SDK开发ABB机器人上位机开发 变量实时刷新,实时修改 io刷新修改, 在线程序修改实时刷新 上位机移动机械手 ,vs;ABB机器人二次开发;C#集成PC SDK;实时刷新;实时修改;io刷新修改;在线程序修改;上位机移动机械手,C#集成PC SDK开发ABB机器人上位机系统:实时刷新与修改功能
-
分布式系统与SCADA系统
分布式系统与SCADA系统
-
,电机控制资料-
注:本驱动器适合于直流有感无刷电机
功能特点
支持电压9V~36V,额定输出电流5A
支持电位器、开关、0~3.3V模拟信号范围、0 3.3 5 24V逻辑电平、PWM 频率 脉冲
,电机控制资料-- 注:本驱动器适合于直流有感无刷电机 功能特点 支持电压9V~36V,额定输出电流5A 支持电位器、开关、0~3.3V模拟信号范围、0 3.3 5 24V逻辑电平、PWM 频率 脉冲信号、RS485多种输入信号 支持占空比调速(调压)、速度闭环控制(稳速)、电流控制(稳流)多种调速方式 支持按键控制正反转速度,启停 特色功能 1. 霍尔自学习 电机的三相线和三霍尔信号线可不按顺序连接,驱动器可自动对电机霍尔顺序进行学习。 2. 稳速控制响应时间短 稳速控制时电机由正转2000RPM切为反转2000RPM,用时约1.0s,电机切过程平稳 3. 极低速稳速控制 电机进行极低速稳速控制,电机稳速控制均匀,无忽快忽慢现象。
-
欧姆龙CX-Programmer CP系列PLC功能块详解:伺服、步进、气缸及普通电机控制应用解析,欧姆龙cx-programmer CP系列PLC做的功能块,包括伺服,步进,气缸普通电机的控制
欧姆龙CX-Programmer CP系列PLC功能块详解:伺服、步进、气缸及普通电机控制应用解析,欧姆龙cx-programmer CP系列PLC做的功能块,包括伺服,步进,气缸普通电机的控制。 ,欧姆龙CX-Programmer; CP系列PLC; 伺服控制; 步进控制; 电机控制; 气缸控制,欧姆龙CX-Programmer PLC:CP系列功能块与多种电机控制
-
基于comsol电弧与熔池热物理交互现象的研究,comsol电弧熔池耦合
,comsol; 电弧熔池; 耦合,COMSOL电弧与熔池的耦合技术
基于comsol电弧与熔池热物理交互现象的研究,comsol电弧熔池耦合 ,comsol; 电弧熔池; 耦合,COMSOL电弧与熔池的耦合技术
-
,自动泊车APA开发,超声波算法开发
,自动泊车APA开发,超声波算法开发
-
nodejs010-nodejs-config-chain-1.1.8-2.el6.centos.alt.noarch.rpm
nodejs010-nodejs-config-chain-1.1.8-2.el6.centos.alt.noarch.rpm
2 楼 linzcup 2013-09-05 20:11
1 楼 linzcup 2013-09-05 20:11
icloud客户端API,支持C#,JAVA,
本文主要面向使用DateSync的开发者,开发者可通过此文学习如何使用DateSync SDK进行开发。
开发环境
1.安装Microsoft Visual C# 2008/2010
2.安装Microsoft .NET Framework 3.5
3.请将以下DLL文件加入到项目中(以下文件位于DataSyncSDK安装路径下)
DLL文件:
agsXMPP.dll
CE.iPhone.PList.dll
DataSync.dll
log4net.dll
Newtonsoft.Json.dll
主要类介绍
名称
说明
DataSyncObject
DateSync SDK的核心类,通过调用该类中的login,put,get,delete等方法实现在icloud中对联系人,相片流等功能进行操作。
Context
DataSyncObject类中的方法参数都通过该类传入值,传出处理结果。
如何使用DataSync SDK
首先导入DataSync.dll文件到工程中
1.用户登陆
using DataSync;
static void Main()
{
DataSyncObject ds = new DataSyncObject();//创建DataSyncObject对像
ds.gIcloud = new Cloud();//生成gIcloud对像
Context loginctx = new Context();//生成Context对像
loginctx.loginUsername = "apple id ";//输入icoud 帐号
loginctx.loginPassword = "password";//输入icoud 帐号密码
loginctx.modeType = Context.ICLOUD_MODE;//输入Context参数的模块类型,当前设为登陆到icloud服务器上
bool ret = ds.login(loginctx);//登陆icoud,成功返回true,失败返回false;
if (ret == false)
{
return;
}
}
2.相片下载
using DataSync;
//进度条回调函数
//参数:transfered已传输字节数, total 表示总字节数
//返回值: true:中断传输,false:继续传输
public static bool TransferProgress(int transfered,int total)
{
return false;
}
static void Main()
{
DataSyncObject ds = new DataSyncObject();//创建DataSyncObject对像
ds.gIcloud = new Cloud();//生成gIcloud对像
Context loginctx = new Context();//生成Context对像
loginctx.loginUsername = "apple id ";//输入icoud 帐号
loginctx.loginPassword = "password";//输入icoud 帐号密码
loginctx.modeType = Context.ICLOUD_MODE;//输入Context参数的模块类型,当前设为登陆到icloud服务器上
bool ret = ds.login(loginctx);//登陆icoud,成功返回true,失败返回false;
if (ret == false)
{
return;
}
//登陆后,便可以下载相片
Context getctx ;
List<FileNode> files = ds.gIcloud.getPhotoList();//登陆成功后,通过该方法取得需要下载的文件列表
foreach (FileNode item in files)
{
getctx = new Context();
getctx.transferProgresscallback = new TransferProgressCallBack(TransferProgress);//进度条回调接口
getctx.modeType = Context.ICLOUD_PS_MODE;//指定要操作的模块为相片流模块
getctx.inItem = item;//要下载的文件节点
ds.get(getctx);//下载文件
if (getctx.outItem != null)
{
Console.Write("\n\n file " + getctx.outItem.filename + "down success.");
}
}
}
3.上传相片
using DataSync;
//进度条回调函数
//参数:transfered已传输字节数, total 表示总字节数
//返回值: true:中断传输,false:继续传输
public static bool TransferProgress(int transfered,int total)
{
return false;
}
static void Main()
{
DataSyncObject ds = new DataSyncObject();//创建DataSyncObject对像
ds.gIcloud = new Cloud();//生成gIcloud对像
Context loginctx = new Context();//生成Context对像
loginctx.loginUsername = "apple id ";//输入icoud 帐号
loginctx.loginPassword = "password";//输入icoud 帐号密码
loginctx.modeType = Context.ICLOUD_MODE;//输入Context参数的模块类型,当前设为登陆到icloud服务器上
bool ret = ds.login(loginctx);//登陆icoud,成功返回true,失败返回false;
if (ret == false)
{
return;
}
//登陆后,便可以上传相片
Context putctx = new Context();
putctx.transferProgresscallback = new TransferProgressCallBack(TransferProgress);
putctx.srcFileFullName = "e:/ndphoto/IMG_0255.JPG";//指定要上传的文件
putctx.modeType = Context.ICLOUD_PS_MODE;
ret = ds.put(putctx); //上传一张相片,最大不能超过50M
if (ret)
{
Console.Write("\n\n file put success. ");
}
}
4.删除图片
using DataSync;
static void Main()
{
DataSyncObject ds = new DataSyncObject();//创建DataSyncObject对像
ds.gIcloud = new Cloud();//生成gIcloud对像
Context loginctx = new Context();//生成Context对像
loginctx.loginUsername = "apple id ";//输入icoud 帐号
loginctx.loginPassword = "password";//输入icoud 帐号密码
loginctx.modeType = Context.ICLOUD_MODE;//输入Context参数的模块类型,当前设为登陆到icloud服务器上
bool ret = ds.login(loginctx);//登陆icoud,成功返回true,失败返回false;
if (ret == false)
{
return;
}
Context delctx = new Context();
delctx.srcFileFullName = "e:/ndphoto/IMG_0260.JPG";//要删除的图片
delctx.modeType = Context.ICLOUD_PS_MODE;
ret = ds.delete(delctx); //删除图片
if (ret)
{
Console.Write("\n\n file delete success. ");
}
}
5.获取所有联系人列表
using DataSync;
static void Main()
{
DataSyncObject ds = new DataSyncObject();//创建DataSyncObject对像
ds.gIcloud = new Cloud();//生成gIcloud对像
Context loginctx = new Context();//生成Context对像
loginctx.loginUsername = "apple id ";//输入icoud 帐号
loginctx.loginPassword = "password";//输入icoud 帐号密码
loginctx.modeType = Context.ICLOUD_MODE;//输入Context参数的模块类型,当前设为登陆到icloud服务器上
bool ret = ds.login(loginctx);//登陆icoud,成功返回true,失败返回false;
if (ret == false)
{
return;
}
Context ctx = new Context();
ctx.modeType = Context.ICLOUD_CONTACT_MODE;
ds.get(ctx);//结果存在ctx.outContactList中
List<Contact> contactList = ctx.outContactList;
}
6.删除所有联系人
using DataSync;
static void Main()
{
DataSyncObject ds = new DataSyncObject();//创建DataSyncObject对像
ds.gIcloud = new Cloud();//生成gIcloud对像
Context loginctx = new Context();//生成Context对像
loginctx.loginUsername = "apple id ";//输入icoud 帐号
loginctx.loginPassword = "password";//输入icoud 帐号密码
loginctx.modeType = Context.ICLOUD_MODE;//输入Context参数的模块类型,当前设为登陆到icloud服务器上
bool ret = ds.login(loginctx);//登陆icoud,成功返回true,失败返回false;
if (ret == false)
{
return;
}
ICloudContact iCloudContact = ds.icloud.GetContacts();
Context ctx = new Context();
ctx.contactList = iCloudContact.contacts;
ctx.modeType = Context.ICLOUD_CONTACT_MODE;
ds.delete(ctx);//删除所有联系人
List<Contact> contactList = ctx.outContactList;
}
7.增加联系人
using DataSync;
static void Main()
{
DataSyncObject ds = new DataSyncObject();//创建DataSyncObject对像
ds.gIcloud = new Cloud();//生成gIcloud对像
Context loginctx = new Context();//生成Context对像
loginctx.loginUsername = "apple id ";//输入icoud 帐号
loginctx.loginPassword = "password";//输入icoud 帐号密码
loginctx.modeType = Context.ICLOUD_MODE;//输入Context参数的模块类型,当前设为登陆到icloud服务器上
bool ret = ds.login(loginctx);//登陆icoud,成功返回true,失败返回false;
if (ret == false)
{
return;
}
//增加联系人
List<Contact> contacts = new List<Contact>();
Contact contact = new Contact { prefix = "pre", firstName = "aaa",
lastName = "bbb", middleName = "ccc",phoneticLastName = "",
phoneticFirstName = "Nicolas",suffix = "suff",nickName = "nickname",
jobTitle = "jobTitle", department = "systemSport", companyName = "nd",
birthday = "1999-01-01",notes = "测试添加一个完整的联系人"
};
////电话
contact.phones = new List<Phone>();
Phone phone1 = new Phone { label = "WORK", field = "13635260966" };
Phone phone2 = new Phone { label = "HOME", field = "059122321966" };
Phone phone3 = new Phone { label = "custum", field = "15918726583" };
contact.phones.Add(phone1);
contact.phones.Add(phone2);
contact.phones.Add(phone3);
////邮件
contact.emailAddresses = new List<EmailAdr>();
EmailAdr emailAdr1 = new EmailAdr { label = "WORK", field = "test_1@yahoo.com.cn" };
EmailAdr emailAdr2 = new EmailAdr { label = "HOME", field = "test_2@gmail.com" };
EmailAdr emailAdr3 = new EmailAdr { label = "custum", field = "test_3@me.com" };
contact.emailAddresses.Add(emailAdr1);
contact.emailAddresses.Add(emailAdr2);
contact.emailAddresses.Add(emailAdr3);
////地址
contact.streetAddresses = new List<StreetAdr>();
StreetField streetField1 = new StreetField();
streetField1.city = "city";
streetField1.country = "country";
streetField1.state = "state";
streetField1.street = "street";
streetField1.countryCode = "countryCode";
StreetAdr streetAdr1 = new StreetAdr { label = "HOME", field = streetField1 };
StreetField streetField2 = new StreetField();
streetField1.city = "city";
streetField1.country = "country";
streetField1.state = "state";
streetField1.street = "street";
streetField1.countryCode = "countryCode";
StreetAdr streetAdr2 = new StreetAdr { label = "WORK", field = streetField2 };
StreetField streetField3 = new StreetField();
streetField1.city = "city";
streetField1.country = "country";
streetField1.state = "state";
streetField1.street = "street";
streetField1.countryCode = "countryCode";
StreetAdr streetAdr3 = new StreetAdr { label = "custum", field = streetField3 };
contact.streetAddresses.Add(streetAdr1);
contact.streetAddresses.Add(streetAdr2);
contact.streetAddresses.Add(streetAdr3);
////主页
contact.urls = new List<Url>();
Url url1 = new Url { label = "WORK", field = "www.sina.com" };
Url url2 = new Url { label = "HOME", field = "www.apple.com" };
Url url3 = new Url { label = "custum", field = "www.google.com" };
contact.urls.Add(url1);
contact.urls.Add(url2);
contact.urls.Add(url3);
////概况
contact.profiles = new List<Profile>();
Profile profile1 = new Profile { label = "Facebook", field = "http://twitter.com",user = "sdfdf" };
Profile profile2 = new Profile { label = "custum", field = "http://facebook.com",user = "jjjjjj" };
contact.profiles.Add(profile1);
contact.profiles.Add(profile2);
////日期
contact.dates = new List<Date>();
Date date1 = new Date { label = "other", field = "2011-01-01" };
Date date2 = new Date { label = "custum", field = "2012-01-01" };
contact.dates.Add(date1);
contact.dates.Add(date2);
////相关人
contact.relatedNames = new List<RelatedName>();
RelatedName relatedName1 = new RelatedName { label = "other", field = "father" };
RelatedName relatedName2 = new RelatedName { label = "custum", field = "brother" };
contact.relatedNames.Add(relatedName1);
contact.relatedNames.Add(relatedName2);
////通讯
contact.IMs = new List<IM>();
IMsfield iMsfield1 = new IMsfield();
iMsfield1.IMService = "QQ";
iMsfield1.userName = "qqusername";
IMsfield iMsfield2 = new IMsfield();
iMsfield2.IMService = "Facebook";
iMsfield2.userName = "testname";
IM iMs1 = new IM { label = "QQ", field = iMsfield1 };
IM iMs2 = new IM { label = "weibo", field = iMsfield2 };
contact.IMs.Add(iMs1);
contact.IMs.Add(iMs2);
contacts.Add(contact);
Context ctx = new Context();
ctx.modeType = Context.ICLOUD_CONTACT_MODE;
ctx.contactList = contacts;
ds.put(ctx);
}
8.修改联系人
using DataSync;
static void Main()
{
DataSyncObject ds = new DataSyncObject();//创建DataSyncObject对像
ds.gIcloud = new Cloud();//生成gIcloud对像
Context loginctx = new Context();//生成Context对像
loginctx.loginUsername = "apple id ";//输入icoud 帐号
loginctx.loginPassword = "password";//输入icoud 帐号密码
loginctx.modeType = Context.ICLOUD_MODE;//输入Context参数的模块类型,当前设为登陆到icloud服务器上
bool ret = ds.login(loginctx);//登陆icoud,成功返回true,失败返回false;
if (ret == false)
{
return;
}
//修改联系人
Context ctx = new Context();
ctx.modeType = Context.ICLOUD_CONTACT_MODE;
ds.get(ctx);
List<Contact> contactList = ctx.outContactList;
List<Contact> contacts = new List<Contact>();
Contact contact = contactList[0];
contact.firstName = "aaa";
contact.lastName = "bbb";
contact.phones = new List<Phone>();
Phone phone = new Phone { label = "WORK", field = "987654321" };
contact.phones.Add(phone);
contacts.Add(contact);
Context ctx = new Context();
ctx.modeType = Context.ICLOUD_CONTACT_MODE;
ctx.contactList = contacts;
ds.updata(ctx);
}
9.删除指定联系人
using DataSync;
static void Main()
{
DataSyncObject ds = new DataSyncObject();//创建DataSyncObject对像
ds.gIcloud = new Cloud();//生成gIcloud对像
Context loginctx = new Context();//生成Context对像
loginctx.loginUsername = "apple id ";//输入icoud 帐号
loginctx.loginPassword = "password";//输入icoud 帐号密码
loginctx.modeType = Context.ICLOUD_MODE;//输入Context参数的模块类型,当前设为登陆到icloud服务器上
bool ret = ds.login(loginctx);//登陆icoud,成功返回true,失败返回false;
if (ret == false)
{
return;
}
//删除联系人
Context ctx = new Context();
ctx.modeType = Context.ICLOUD_CONTACT_MODE;
ds.get(ctx);
List<Contact> contactList = ctx.outContactList;
List<Contact> delContacts = new List<Contact>();
Phone phone = new Phone { label = "WORK", field = "15935260966" };
Contact contact = contactList[0];
delContacts.Add(contact);
Context ctx = new Context();
ctx.modeType = Context.ICLOUD_CONTACT_MODE;
ctx.contactList = delContacts;
ds.delete(ctx);
}