使用 IOS Swift 连接 JSAPI
1-检出 JSAPI IOS SDK
2-转到 JSAPI SDK 文件夹
3-将 JsapiApi.xcodeproj 拖放到您的项目中
4-选择您的项目 / 目标 / 构建阶段 / 链接二进制与库
5-点击加号图标,然后添加 JsapiApi.framework
6-转到您的 appDelegate,将此行添加到类的顶部 import JsapiApi
7-通过在 AppDelegate 的 didFinishLaunchingWithOptions 方法中调用 jsapiInit 初始化 Jsapi 对象
#!swift
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool
{
JsapiAPi.jsapiInit("https://:8080/jsapi","","")
return true
}
一旦在 AppDelegate 中添加了 JsapiAPi.jsapiInit 调用,就会创建一个 JsapiAPi 类的单例对象
JsapiAPi 类用于执行登录、注销功能,并缓存身份验证令牌和 JSAPI URL
目前,您拥有 JsapiAPi 的对象,所以您需要做的就是调用 doUserLogin 函数,并传递用户名和密码参数,如下例所示
#!swift
func testDoLogin()
{
var userDetails=Dictionary<String,String>()
userDetails["username"] = username
userDetails["password"] = password
JsapiAPi.sharedInstance.doUserLogin(userDetails)
{
(result:NSDictionary,issuccess:Bool) in
if(!issuccess)
{
// Login Failed
}else
{
// Login Success
}
}
}
如果登录成功,您不需要处理登录响应,因为 API正在为您缓存令牌和令牌类型,您可以通过调用 JsapiAPi.sharedInstance.getJsapiToken() 来访问它
#!json
({
"access_token": "5716a78e-6afe-4ba5-ace7-6ce285545f80",
"token_type": "bearer",
"expires_in": 3600,
"scope": "write read"
})
如果登录失败,您需要向用户显示 error_description 消息
#!json
Optional({
"error": "invalid_grant",
"error_description": "Bad credentials"
})
您可以通过调用 doUserLogout 函数来清除缓存的令牌和令牌类型,如下例所示
#!swift
func testLogout()
{
JsapiAPi.sharedInstance.doUserLogout()
}
您可以通过将用户名、密码、电子邮件、性别和全名参数传递给 doUserRegistration 函数来注册新用户
#!swift
func testUserRegistration()
{
var userDetails=Dictionary<String,String>()
userDetails["username"]="username"
userDetails["password"]="password" // plain text
userDetails["email"]="[email protected]"
userDetails["gender"]="male"
userDetails["fullname"]="knetik"
var regObject = Registration()
regObject.doUserRegistration(userDetails)
{
(registeredUser:RegisteredUser,errormessage:String,issuccess:Bool) in
if(!issuccess)
{
println(errormessage)
}else
{
println(registeredUser.getFullname())
// Valid Response
}
}
}
您可以通过调用 guests 函数来创建一个访客用户,并返回一个随机密码。
#!swift
func testGuestUser()
{
var userDetails=Dictionary<String,String>()
var regObject = Registration()
regObject.guests(userDetails)
{
(guestUser:GuestUser,errormessage:String,issuccess:Bool) in
if(!issuccess)
{
println("testUserRegisteration Failed")
return;
}else
{
self.username=guestUser.getUsername() // new user name
self.password=guestUser.getPassword() // user password
// Valid Response
}
}
}
要将您的访客账户升级为普通账户,您首先需要使用访客账户 登录,然后调用 guestUpgrade 函数。
#!swift
func testUpdateGuest()
{
var userDetails=Dictionary<String,String>()
userDetails["username"]="username"
userDetails["password"]="password"
userDetails["email"]="[email protected]"
userDetails["gender"]="male"
userDetails["fullname"]="fullname"
var regObject = Registration()
regObject.guestUpgrade(userDetails)
{
(result:AnyObject,errormessage:String,issuccess:Bool) in
if(!issuccess)
{
println(errormessage)
}else
{
println("testUserRegisteration PASS")
// Valid Response
}
}
}
要重置密码,您需要按照以下步骤操作
1-将用户名和电子邮件发送到 forgotPassword 函数,您将收到一封包含 secrethash 代码的电子邮件
2-按照以下示例再次将用户名、电子邮件、新密码、secrethash 和纯文本发送到 forgotPassword
#!swift
func testForgotPassword()
{
var userDetails=Dictionary<String,String>()
userDetails["username"]="username" // mandatory for first and second call
userDetails["email"]="[email protected]" // mandatory for first and secondcall
// userDetails["newpassword"]="password" // mandatory for second call to set the password
// userDetails["secrethash"]="9d97a5892b0bf1b1af208b53e6c9f35986a0b123" // the secret code sent to your email need to be sent in second call
// userDetails["plaintext"]="true" // second call
var regObject = Registration()
regObject.forgotPassword(userDetails)
{
(result:AnyObject,errormessage:String,issuccess:Bool) in
if(!issuccess)
{
println("testUserRegisteration Failed")
}else
{
println("testUserRegisteration PASS")
// Valid Response
}
}
}
User 类用于获取和更新用户信息
您可以通过从 User 对象调用 getUserInfo 函数来获取用户信息
#!swift
func testGetUserInfo()
{
var emptyParams=Dictionary<String,String>()
var userObject = UserService()
userObject.getUserInfo(emptyParams)
{
(user:User,errormessage:String,issuccess:Bool) in
if(!issuccess)
{
println("testUserRegisteration Failed")
println(errormessage)
}else
{
println("testUserRegisteration PASS")
println(user.getFullname())
// Valid Response
}
}
您可以通过将 configName 和 configValue 传递给 updateUserInfo 函数来更新一些用户信息,如下例所示
#!swift
func testUpdateUser()
{
var userDetails=Dictionary<String,String>()
userDetails["configValue"]="knetik"
userDetails["configName"]="display_name"
var userObject = User()
userObject.updateUserInfo(userDetails)
{
(result:NSDictionary,issuccess:Bool) in
if(!issuccess)
{
println("testUpdateUser Failed")
}else
{
println("testUpdateUser PASS")
// Valid Response
}
println(result)
}
}
*更新配置名称列表 *
1-头像
2-显示名称
3-语言
4-出生日期格式 yyyy-[m]m-[d]d hh:mm:ss
Cart 类用于执行以下购物车功能
1-创建购物车
2-获取购物车详情
3-购物车结账
4-获取购物车国家
5-更改购物车项目
6-将项目添加到购物车
7-修改配送地址
8-购物车可配送
要创建购物车,您需要调用 createCart 函数,新的购物车号码将作为结果参数返回
#!swift
func testCreateCard()
{
var cardDetails=Dictionary<String,String>()
var cartObject=CartService()
cartObject.createCart(cardDetails)
{
(cartNumber:String,errormessage:String,issuccess:Bool) in
if(!issuccess)
{
println("Create Card SKU Failed")
}else
{
self.cartID=cartNumber
self.cartNumber=cartNumber
print(cartNumber)
}
}
}
您可以通过将购物车号码传递给 getCart 函数来获取完整的购物车详情
#!swift
func testGetCart()
{
var params=Dictionary<String,String>()
var cartObject=CartService()
cartObject.getCart(params,guidID: self.cartNumber)
{
(cartDetails:CartDetails,errormessage:String,issuccess:Bool) in
if(!issuccess)
{
println("testgetCart Failed")
}else
{
println("testgetCart PASS")
print(cartDetails.getCart().getCity())
}
}
}
checkout 函数让您关闭购物车并生成发票
#!swift
func testCartCheckout()
{
var params=Dictionary<String,String>()
// params["cartguid"]=cartNumber
var cartObject=CartService()
cartObject.cartCheckout(params,itemID:cartNumber)
{
(checkout:Checkout,errormessage:String,issuccess:Bool) in
if(!issuccess)
{
print(errormessage)
}else
{
print(checkout.getInvoices()[0].getBillingAddress1())
}
}
}
获取每个供应商可用的配送国家列表
#!swift
func testCarCountries()
{
var params=Dictionary<String,String>()
var cartObject=CartService()
cartObject.cartCountries(params,itemID:cartNumber)
{
(countries:Array<Country>,errormessage:String,issuccess:Bool) in
if(!issuccess)
{
println(errormessage)
}else
{
print(countries)
}
}
}
您可以通过将 catalog_id、catalog_sku_id、数量和 cartNumber 参数传递给 addCartItems 函数来将项目添加到购物车,如下例所示
#!swift
func testCartAddItems()
{
var params=Dictionary<String,String>()
params["catalog_id"]="5"
params["catalog_sku_id"]="5"
params["quantity"]="0"
var cartObject=CartService()
cartObject.addCartItems(params,itemID:cartNumber)
{
(result:AnyObject,errormessage:String,issuccess:Bool) in
if(!issuccess)
{
println("testCartAddItems Failed")
}else
{
println("testCartAddItems PASS")
}
print(result)
}
您可以通过将 catalog_id、catalog_sku_id、数量和 cartNumber 参数传递给 changeItem 来更改已添加到购物车中的项目的数量
#!swift
func testCartChangeItems()
{
var params=Dictionary<String,String>()
params["catalog_id"]="72"
params["catalog_sku_id"]="72"
params["quantity"]="10"
var cartObject=CartService()
cartObject.changeItem(params,itemID:cartID)
{
(result:AnyObject,errormessage:String,issuccess:Bool) in
if(!issuccess)
{
println("testCartChangeItems Failed")
}else
{
println("testCartChangeItems PASS")
}
print(result)
}
}
您可以通过调用 modifyShippingAddress 函数并按照以下示例操作来修改购物车的配送地址
#!swift
func testModifyShippingAddress()
{
var params=Dictionary<String,String>()
params["name_prefix"]="prefix"
params["first_name"]="Knetik"
params["last_name"]="Knetik"
params["shipping_address_line1"]="10"
params["shipping_address_line2"]="10" // optional
params["city"]="City"
params["postal_state_id"]="163"
params["zip"]="32766"
params["email"]="[email protected]"
params["country_id"]="225"
params["phone_number"]="+11111111"
params["order_notes"]="notes"
var cartObject=CartService()
cartObject.modifyShippingAddress(params,itemID:cartID)
{
(result:AnyObject,errormessage:String,issuccess:Bool) in
if(!issuccess)
{
print(errormessage)
}else
{
print(result)
}
}
}
您可以通过调用 checkShippable 函数来检查购物车是否需要配送
#!swift
func testCheckShippable()
{
var params=Dictionary<String,String>()
var cartObject=CartService()
cartObject.checkShippable(params,itemID:self.cartNumber)
{
(shippable:Shippable,errormessage:String,issuccess:Bool) in
if(!issuccess)
{
println(errormessage)
}else
{
print(shippable.getCartId())
}
}
}
您可以通过向 addComment 函数传递 itemID 和评论字符串来对某个项目添加评论。
#!swift
func testAddCommentToItem()
{
var params=Dictionary<String,String>()
params["item_id"]="4"
params["comment"]="hello"
var comment = CommentService()
comment.addComment(params)
{
(result:AnyObject,errormessage:String,issuccess:Bool) in
if(!issuccess)
{
println("testAddCommentToItem Failed")
println(errormessage)
}else
{
println("testAddCommentToItem PASS")
// Valid Response
}
println(result)
}
}
您可以通过将评论 ID 传递给 deleteComment 函数来删除您自己的评论。
#!swift
func testDeleteComment()
{
var params=Dictionary<String,String>()
params["id"]=self.comment_id
var comment = CommentService()
comment.deleteComment(params)
{
(result:AnyObject,errormessage:String,issuccess:Bool) in
if(!issuccess)
{
println("testAddCommentToItem Failed")
}else
{
println("testAddCommentToItem PASS")
// Valid Response
}
println(result)
}
}
您可以通过向 commentsList 函数传递项目 ID 来获取给定项目中所有当前附加的评论列表。
#!swift
func testItemCommentsList()
{
var params=Dictionary<String,String>()
params["id"]="4"
var comment = CommentService()
comment.commentsList(params)
{
(comments:Array<Comment>,errormessage:String,issuccess:Bool) in
if(!issuccess)
{
println("testItemCommentsList Failed")
println(errormessage)
}else
{
if(comments.count>0){
var comment=comments[comments.count-1] as Comment
self.comment_id=String(comment.getCommentId())
println("comment id is "+self.comment_id)
}
// Valid Response
}
}
}
您可以通过向 addFriend 函数传递目标用户 ID 和您的用户 ID 来将一个朋友添加到您的好友列表。
#!swift
func testAddFriend()
{
var params=Dictionary<String,AnyObject>()
params["target_user_id"]=7224 // your friend ID
params["user_id"]=7700 // your user ID you can Get it by calling GetUserID
var friendShip = FriendshipService()
friendShip.addFriend(params)
{
(result:AnyObject,errormessage:String,issuccess:Bool) in
if(!issuccess)
{
println("testAdd Friend Failed")
}else
{
println("testAdd Friend PASS")
// Valid Response
}
println(result)
}
}
您可以通过向 getFriends 函数传递页面、限制和您的用户 ID 来获取您的好友列表。
#!swift
func testGetFriend()
{
var params=Dictionary<String,AnyObject>()
params["page"]=1
params["limit"]=20
params["user_id"]=1
var friendShip = FriendshipService()
friendShip.getFriends(params)
{
(friends:Friend,errormessage:String,issuccess:Bool) in
if(!issuccess)
{
println("testGetFriend Failed")
}else
{
println("testGetFriend PASS")
var friendsList=friends.getFriends()
var invitedList=friends.getInvites()
// Valid Response
}
}
}
您可以通过向 searchFriends 传递搜索字符串来搜索一个朋友,如下所示。
#!swift
func testSearchFriend()
{
var params=Dictionary<String,AnyObject>()
params["search"]="search string"
params["page"]=1
params["limit"]=20
params["user_id"]=7700
var friendShip = FriendshipService()
friendShip.searchFriends(params)
{
(friends:Friend,errormessage:String,issuccess:Bool) in
if(!issuccess)
{
println("testGetFriend Failed")
}else
{
println("testGetFriend PASS")
var friendsList=friends.getFriends()
var invitedList=friends.getInvites()
// Valid Response
}
}
}
您可以通过将目标用户 ID 传递给 removeFriend 函数来删除您的朋友。
#!swift
func testRemoveFriend()
{
var params=Dictionary<String,AnyObject>()
params["target_user_id"]=7224 // Target user ID to be deleted
params["user_id"]=7700 // your user ID
var friendShip = FriendshipService()
friendShip.removeFriend(params)
{
(result:AnyObject,errormessage:String,issuccess:Bool) in
if(!issuccess)
{
println("testAddCommentToItem Failed")
}else
{
println("testAddCommentToItem PASS")
// Valid Response
}
println(result)
}
}
您可以通过向 addFavoriteItem 函数传递 itemID 来将一个项目添加到您的收藏列表。
#!swift
func testAddFavorite()
{
var params=Dictionary<String,AnyObject>()
params["id"]=1 // item ID should be int value
var favorite = FavoriteService()
favorite.addFavoriteItem(params)
{
(result:AnyObject,errormessage:String,issuccess:Bool) in
if(!issuccess)
{
println("Test Add Favorite Failed")
}else
{
println("Test Add Favorite PASS")
// Valid Response
}
println(errormessage)
}
}
您可以通过将 itemID 传递给 deleteFavorite 函数来从收藏列表中删除您的项目。
#!swift
func testDeleteFavorites()
{
var params=Dictionary<String,AnyObject>()
params["id"]=1 // item ID to be Deleted
var favorite = FavoriteService()
favorite.deleteFavorite(params)
{
(result:AnyObject,errormessage:String,issuccess:Bool) in
if(!issuccess)
{
println("test Delete Favorites Failed")
}else
{
println("test Delete Favorites PASS")
// Valid Response
}
println(errormessage)
}
}
您可以通过调用 getFavorites 获取您的收藏列表。
#!swift
func testGetFavorites()
{
var params=Dictionary<String,AnyObject>()
var favorite = FavoriteService()
favorite.getFavorites(params)
{
(favorites:Array<Favorite>,errormessage:String,issuccess:Bool) in
if(!issuccess)
{
println("test Get Favorites Failed")
}else
{
var favist=favorites
println("test Get Favorites PASS")
// Valid Response
}
println(errormessage)
}
}
您可以通过向 getPage 函数传递 {terms 或相关}、限制和页面参数来获取您的商店页面,如下所示。
#!swift
func testStoreGetPage()
{
var params=Dictionary<String,AnyObject>()
params["terms"]=["test Term_1426094958_462"]; //optional if related provided
//params["related"]=["b,"a"] // optional if terms provided
params["limit"]=10;
params["page"]=1;
params["useCatalog"]=true; //optional
params["fullObject"]=true; // optional
var store = Store()
store.getPage(params)
{
(pages:Array<Page>,errormessage:String,issuccess:Bool) in
if(!issuccess)
{
println("testStoreGetPage Failed")
}else
{
var storeArray=pages
println(pages)
println("testStoreGetPage PASS")
// Valid Response
}
}
}