2018-09-29 10:27:29 wangkongbao 阅读数 2738

前言

默认熟悉Unity 和 Xcode 开发工具的基本使用方法,并且具有一定的编程知识基础.
Unity版本:unity 2018.1.7f1
Xcode版本:Xcode 10.0

下载微信SDK

微信SDK下载地址:微信开放平台.

导出Unity Xcode项目

导出Unity Xcode项目,并打开选择你的调试证书。

Xcode导入微信SDK

将微信SDK文件中包含的libWeChatSDK.a, WXApi.h, WXApiObject.h, WechatAuthSDK.h 这四个文件添加到你刚才打开的xcode工程中 (如下图所示,在Unity-iPhone工程目录下创建/wecaht)。
图1

Xcode相关属性配置

1.微信开放平台新增了微信模块用户统计功能,便于开发者统计微信功能模块的用户使用和活跃情况。开发者需要在工程中链接上(这边有几个库跟微信官方平台上说的有点不一样,就是这三个libz.dylib, libsqlite3.0.dylib, libc++.dylib 在这里后缀都是tbd):

  • SystemConfiguration.framework
  • libz.tbd
  • libsqlite3.0.tbd
  • libc++.tbd
  • Security.framework
  • CoreTelephony.framework
  • CFNetwork.framework
    图2

2.在你的工程文件中选择 Build Setting下的Linking项中"Other Linker Flags"中加入 “-Objc -all_load”
图3

特别说明:如果你导出的Xcode项目中包含其他静态库而导致报错的话,需要将 -Objc -all_load 修改成 -Objc _force_load $(SRCROOT)/wechat/libWeChatSdk.a

3.在你的工程文件中选择Info下的URL Types 点击增加一个选项,然后在Identifier 填入包名,在URL Schemes 填入你在微信后台注册的appid。
图4

温馨提示:认真看文档 这里URL Schemes 容易搞错,这里填的是在微信后台注册的appid。这里出错会出现跳转到维信后点击无反应。

添加一个新的项 LSApplicationQueriesSchemes 将类型修改为 Array , 并添加两个子项:wechat, weixin
图5

脚本修改

在Libraries 下新建文件夹WXApiManager 在里面添加必要的代码 (位置个人喜好,后面引用需要用到自己注意就好了)
1.新建WXApiManager.h, 增加 WXApiDelegate协议

//
//  WXApiManager.h
//  Unity-iPhone
//  bowenk
//  Created by bowenk on 2018/9/27.
//

#import <Foundation/Foundation.h>
#import "wechat/WXApi.h"


NS_ASSUME_NONNULL_BEGIN

@interface WXApiManager : UIResponder<UIApplicationDelegate, WXApiDelegate>

+ (instancetype)shareManager;

@end

NS_ASSUME_NONNULL_END

2.新建WXApiManager.mm 重写接收微信回调信息

//
//  WXApiManager.m
//  Unity-iPhone
//  bowenk
//  Created by bowenk on 2018/9/27.
//

#import "WXApiManager.h"

@implementation WXApiManager

+(instancetype) shareManager
{
    static dispatch_once_t onceToken;
    static WXApiManager *instance;
    dispatch_once(&onceToken, ^{
        instance = [[WXApiManager alloc] init];
    });
    return instance;
}

-(void) onReq:(BaseReq *)req {}

-(void) onResp:(BaseResp *)resp
{
    if([resp isKindOfClass:[SendAuthResp class]])
    {
        SendAuthResp *temp = (SendAuthResp*)resp;
        int errorCode = temp.errCode;
        switch (errorCode) {
            case 0:
                {
                    printf("登录成功-xcode");
                    UnitySendMessage("[_WechatHelper]", "LoginSuccess", [NSUTF8StringEncoding temp.code]);
                    break;
                }
            case -2:
                printf("用户取消");
                UnitySendMessage("[_WechatHelper]", "LoginFail", "用户取消");
                break;
            case -4:
                printf("用户拒绝授权");
                UnitySendMessage("[_WechatHelper]", "LoginFail", "用户拒绝授权");
                break;
            default:
                printf("登录失败");
                UnitySendMessage("[_WechatHelper]", "LoginFail", "登录失败");
                break;
        }
    }
}

@end

3.新建接口文件 PluginSystem.m 这是Unity跟iOS的接口文件,Unity调用这些接口来操作的。

//
//  PluginSystem.m
//  Unity-iPhone
//  bowenk
//  Created by bowenk on 2018/9/27.
//

#import <Foundation/Foundation.h>
#import "wechat/WXApi.h"

//这是向微信终端注册你的appid
void _registerApp(char* appid)
{
    NSString *weichatId = [NSString stringWithFormat:@"%s", appid];
    [WXApi registerApp:weichatId];
}

//登录
void _wechatLogin(char* message)
{
    SendAuthReq* req = [[SendAuthReq alloc] init];
    req.scope = @"snsapi_userinfo";
    req.state = [NSString stringWithFormat:@"%s", message];
    [WXApi sendReq:req];
}

//判断是否安装微信
bool _isWechatInstalled()
{
    return [WXApi isWXAppInstalled];
}

4.在Classes 目录下找到 UnityAppController.mm文件,导入刚才的微信SDK中的WXApi.h 和 WXApiManager.h
图6
重写 handleOpenURL 和修改 openURL 方法
图7

踩过的坑

1、所有方法都没问题了,点击登录也跳转到微信了,但是点击微信端的登录按钮没有一点反应,一度怀疑是不是注册的包名有问题,就是如图情况:
图8
就是点击这个确认登录,死活没有反应,一点反馈也没有,也不会报错。
最后发现就是前面特别强调的URL Schemes填错了。这里在强调一遍URL Schemes 填的是在微信上注册的appid

参考文章

1.微信 开放平台 iOS接入指南

2.Unity接入微信SDK——iOS(接入微信SDK)

2018-12-18 13:39:00 weixin_43902150 阅读数 452

第1章 导学与申请appkey
如何更好的学习本课程?如何申请开发者key?如何调用和测试接口?

1-1 微信小程序商业级实战-课程导学。
1-2 优先自己开发
1-3 appkey的申请
1-4 课程维护说明

第2章 准备工作
开发前的准备工作以及第三方开发工具的选择

2-1 流程与开发前准备
2-2 新建小程序项目
2-3 。小程序开发工具介绍
2-4 第三方开发工具介绍

第3章 小程序的基础知识与新特性
讲解小程序的一些必须要掌握的基础知识,如文件类型、项目结构、配置文件等。部分之前老课程中没有涉及的重要新特性也会在本章节提及

3-1 小程序的4种文件类型
3-2 小程序的组织结构
3-3 新建第一个小程序页面
3-4 -1 消除错误提示
3-5 app.json配置之导航栏
3-6 app.json之background窗口
3-7 wxml与组件

第4章 flex布局
我们将在本章中详细学习flex布局的基础知识,为在项目中灵活应用flex布局打下坚实的基础

4-1 小程序代码编写规范
4-2 所谓布局
4-3 block、inline与inline-block
4-4 flex容器将消除item的块状特性
4-5 flex-direction的应用
4-6 reverse倒序排布
4-7 reverse效果揭秘
4-8 justify-content属性解析 一
4-9 justify-content属性解析 二
4-10 主轴与交叉轴(重要) 一
4-11 主轴与交叉轴(二)
4-12 baseline与stretch
4-13 flex-wrap与消除间距

第5章 小程序基础知识与初识小程序组件
本章我们将学习全局样式、相对/绝对路径、尺寸单位等小程序基础知识。同时,我们将初步介绍小程序自定义组件。

5-1 细节决定成败
5-2 组件概述
5-3 定义、引用与使用组件
5-4 相对路径与绝对路径
5-5 like组件实现
5-6 小程序尺寸单位与设计原则(重要)
5-7 小程序支持的css选择器远比文档中要多
5-8 苹方字体设置
5-9 page样式的巧妙应用
5-10 组件只能继承极少数全局样式
5-11 组件最好不要留有空白间距
5-12 固定宽度还是自适应?
5-13 组件事件与事件处理


第6章 组件数据、事件与属性
本章我们将深入学习组件的开放性与封闭性以及组件封装的原则

6-1 数据来源的三种途径
6-2 数据绑定
6-3 三元表达式与图片切换
6-4 组件的封闭性、开放性及粒度
6-5 组件的properties属性详解
6-6 let、var与组件事件应用

第7章 访问API数据与ES6在小程序中的应用
本章,我们将从一个简单wx.request开始,讲解同步与异步的区别,promise的意义,ES6中箭头函数、class、const、module、export与import在小程序中的巧妙应用。同时,我们也将初步探讨封装代码的必要性

7-1 看待组件的两种观点(重要)
7-2 Blink API介绍与测试API
7-3 生命周期函数
7-4 wx.request-4xx状态码并不会执行fail
7-5 访问API获取数据
7-6 同步、异步与回调函数
7-7 ES6箭头函数与this指代
7-8 正确理解Promise(选看)
7-9 ES6 const常量
7-10 ES6 Module export与import
7-11 HTTP类的封装与ES6 startsWith
7-12 分析问题的思维培养与练习
7-13 分析问题的思维培养与练习二
7-14 回调函数传递
7-15 通用错误异常处理(重要)


第8章 流行页面编码与组件的细节知识
本章,我们将逐步编写流行页面中剩余的电影组件、期刊组件、导航组件,并进一步的完善喜欢组件。同时,我们将在本章节进一步的讲解setData的真正意义、组件封装粒度、系统事件与自定义事件、properties和data的区别等重要的知识。本章内容非常丰富,加油吧。 ...

8-1 什么是“剥夺函数return的能力”
8-2 组件属性赋值与页面渲染流程解析
8-3 setData的误区(重要)
8-4 movie组件的实现
8-5 再谈组件的粒度
8-6 自定义事件的激活与监听
8-7 喜欢还是不喜欢
8-8 组件的生命周期函数
8-9 组件的data与properties的“奇怪”现象
8-10 业务逻辑到底写组件里还是页面里
8-11 observer函数的应用
8-12 注意防范内存泄漏
8-13 千万不要在observer中修改自身属性值
8-14 epsoide组件与流行页面样式

第9章 Behavior行为与加入缓存系统优化流行页面

即使服务器返回数据的速度再快,我们依然需要在页面中加入缓存系统来优化用户体验。组件是一种复用的逻辑,但多个组件间的共同JS代码又改如何复用?使用Behaviors行为将解决这个问题。同时,我们也将谈谈Behavior和多继承的思想。...

9-1 navi组件与移动端触碰区域探讨
9-2 navi组件与flex宽度陷阱
9-3 禁用事件的技巧
9-4 music组件初步实现
9-5 初识组件的Behavior行为
9-6 behavior 继承与多继承的覆盖规则(重要)
9-7 初步实现期刊切换
9-8 是否是最新期刊的判断逻辑
9-9 使用Storage保存最新期刊号
9-10 onNext与函数重构技巧

第10章 新版Music组件、组件通信与wxss样式复用
本章,我们将进一步优化缓存带来的附加问题。缓存的使用绝对不仅仅是setStorage和getStorage这么简单,缓存的加入将带来一些新的问题,这些问题的处理细节体现了一个前端程序员的成熟度。同时,我们还将学习ES6扩展运算符和模板字符串在小程序中的应用、wxss样式的复用、让自定义组件支持hidden属性与组件通信。本章是业务...

10-1 谈谈缓存对于改善用户体验的作用
10-2 解决缓存带来的问题
10-3 ES6模板字符串和扩展运算符的应用
10-4 独立更新like组件状态
10-5 如何让自定义组件支持hidden?
10-6 @import在组件间复用样式
10-7 music组件样式
10-8 新版音乐播放对象
10-9 组件间通信
10-10 hidden不会触发组件的detached,但wxif会
10-11 完成音乐播放
10-12 用简洁的代码优化音乐播放
10-13 真实感受Component与Model的好处


第11章 Promise正确用法与函数签名设计技巧
目前来说,由于小程序占时不支持async与await,所以Promise是小程序处理异步的最佳解决方案。即使支持async,它也只是Promise的语法糖,所以Promise是必须要学习的基础。很多同学对于Promise的理解不够深刻,导致Promise使用不正确。本章我们将讲解Promise的正确使用方式,重构http.js,同时还将使用ES6对象解构、默认值等...

11-1 tabBar配置
11-2 airbnb编码规范
11-3 纯粹回调、Promise与async、await
11-4 Promise的本质与用法
11-5 Promise重构 一 参数列表设计原则与默认值
11-6 Promise重构 二 重构request
11-7 Promise重构 三 对象解构
11-8 Promise的正确用法

第12章 组件高级应用
本章我们将探讨组件的slot插槽和外部样式类。组件最难平衡的是内置默认样式和用户自定义样式的需求,我们将一起来探讨一个不错的解决方案。我们将看到,小程序其实不仅仅提供了属性、还提供了wxml的标签的传递与样式的传递。wxml的传递是通过插槽,样式的传递是通过externalClass...

12-1 图书组件
12-2 列表渲染
12-3 书籍首页布局
12-4 巧用flex布局简化CSS
12-5 wx:key的用法与意义
12-6 项目型组件与通用性组件
12-7 书籍详情页面三组数据加载
12-8 三种小程序编译模式
12-9 标签组件难点提示
12-10 标签布局
12-11 组件设计思想:slot插槽的使用
12-12 自定义组件样式探讨 一:hack方式
12-13 自定义样式探讨2:外部样式的概念
12-14 自定义组件样式3:外部样式的问题
12-15 自定义样式4:外部样式如何强制覆盖普通样式
12-16 外部样式类的使用技巧


第13章 小程序wxs的应用
wxs是微信为小程序定制的一套脚本语言,同JS类似,但又有很多不同。很多同学认为wxs没有什么用,但其实是很有用的。比如开源组件中就可以提供一套wxs编写的filter过滤器。本章,我们将来深入探讨一下wxs的应用场景。

13-1 分析换行符 不解析换行的原因
13-2 wxs的概念与应用1
13-3 wx的概念与应用2
13-4 wx的概念与应用3
13-5 在小程序中编写limit过滤器
13-6 短评功能分析
13-7 短评实现一
13-8 短评实现二
13-9 短评实现三:在wxml中编写wxs代码
13-10 短评实现四:mask组件
13-11 短评实现五:提交短评数据
13-12 短评实现六:支持input输入短评
13-13 短评实现七:细节处理


第14章 搜索与高阶组件
搜索基本上是任何一个产品都不会缺少的功能。但是一个好的搜索组件,细节是非常多的。本章,我们将完成历史搜索、热门搜索等诸多商业级严谨搜索功能。同时,我们也将提出“高阶组件的”概念,区别于普通组件,高阶组件更为复杂 ...

14-1 并行请求与串行请求
14-2 Promise.all与Promise.race
14-3 高阶组件示例1:搜索组件
14-4 自定义组件的models目录探讨
14-5 数据结构队列的应用
14-6 队列测试
14-7 实现历史搜索
14-8 实现热门搜索
14-9 搜索实现1
14-10 搜索实现2
14-11 搜索实现3
14-12 搜索实现4:动态绑定input输入

第15章 代码重构与行为抽象
本章我们将重构搜索代码,将分页逻辑提取成一个“行为”。以后,当我们遇到任何一个需要使用分页逻辑的组件时都可以服用分页Behavior。此外,本章有大量的细节需要我们完善。比如如何对搜索加“锁”,如何判断是否还有更多数据等。 ...

15-1 用随机字符串触发Oberver函数
15-2 加载更多数据的判断技巧
15-3 使用锁的概念解决重复加载数据的问题
15-4 组件行为逻辑抽象——分页行为
15-5 是否还有更多数据的判断逻辑
15-6 搜索代码重构——增强代码可阅读性
15-7 注意避免死锁
15-8 特别注意setData与直接赋值的区别
15-9 空搜索结果的处理

第16章 高级知识与应用
本章,我们将试着学习和应用一些比较抽象的知识。这些知识并不是必备的,但好的程序员必须学会这种思维和编码习惯。我们将在本章进一步优化和重构代码,学习新版微信授权机制、自定义小程序button组件、将内置的小程序API转换成Promise、复用整个Page等知识。...

16-1 将锁提取到分页行为中
16-2 open-data显示用户信息
16-3 新版微信授权机制
16-4 wx.getUserInfo需要用户先授权
16-5 通过opensetting判断用户是否授权
16-6 自定义button实现获取用户信息
16-7 为什么有open-data还需要getUserInfo?
16-8 自定义分享button
16-9 小程序之间的跳转
16-10 preview组件
16-11 简单聊一下小程序云开发的场景和意义

 

下载地址:百度网盘

 

2018-03-19 18:35:48 museions 阅读数 1022

导:接一,在完成了将微信sdk挂载到vue原型上后代码暂且放下。开始对微信公众号开始做准备了。当然本篇的步骤你也可以放在第一步完成,也可以与第一步同时进行,基本没有什么影响。

开发注意事项-关于微信开发文档的使用:

1.注意申请微信公众号,这里最好申请一个企业公众号并且认证,在开发者工具中找到 公众平台测试帐号 链接,使用微信管理员验证登录。


2.在测试号之内还需要做两件事情,第一:设置安全域名,第二:测试用户扫描二维码关注测试帐号 这两步非常重要。

3.到此如果有多个测试用户关注此测试号的话,可以刷新一下页面,看看用户列表有无增减,如果有新添加的用户,那么才算成功。


4.目前仍然还没有完成开发环境调试步骤,下一章节介绍第一:设置安全域名详细步骤。

2018-05-09 11:22:49 YanzYan 阅读数 4162

这两天的真的涨姿势了,最近在学vue,巧了,男票公司也在用vue写项目(他是安卓工程师,也是够了,安卓和ios也开始vue旅程了)。聊着聊着他说他们的项目是用vue开发的小程序?当时想的是小程序不是有自己的api吗?结果第二天一查,我去,原来有个mpvue框架,真的可以实现使用vue的语法实现微信小程序了(开心啊!!)

双手奉上官方文档:http://mpvue.com/mpvue/#_1

项目搭建

搭建项目其实很简单啦,官方文档写得很详细了。
这里写图片描述

首先确认你已经下好了vue-cli
然后直接用命令

vue init mpvue/mpvue-quickstart my-project

my-project是项目名,可以自行更改。
然后npm install生成node_module文件夹。然后启动构建npm run dev,一定要有这一步,会生成dist文件夹
这里写图片描述

这些文件就是小程序的文件啦~~

效果图

接下来就是效果图了(使用vue init mpvue/mpvue-quickstart my-project快速构建的demo)。
这里写图片描述
这里写图片描述

OK,结束。

2019-03-21 11:02:39 qq736150416 阅读数 474

最近在开发当中遇到了一个问题,上传体验版之后用手机打开没有数据,打开调试之后才会有数据。

出现这种问题的主要原因就是后台的域名没有配置,在微信公众平台设置-->开发设置下面有一个服务器域名,

把这个配置好了之后就可以了。

但是要注意一个问题,配置好域名之后还是不可以的话,需要重新建一个项目,把这个项目导进去才可以,还有就是可能会有时间延迟,需要等待几分钟。

原文:https://blog.csdn.net/wangguang1995/article/details/80755111
 

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