Ionic3下处理安卓物理返回键的通用做法

  • Jason.z
  • 2018-07-30 05:53:12

首先默认情况下,ionic3 下对安卓的物理返回键处理,当点击返回键的时候直接退出了程序。

这对于我们的用户体验确实是极其不佳的。

我们通常的做法是:

点击返回键的时候,退回上级路由,当没有路由返回的时候,提示按2次可以退出程序。

怎么做呢,直接看代码吧.

首先我们需要在app.component.ts的platform.ready 方法里处理这一逻辑。

Alert提示框模式

constructor(private platform: Platform, private alertCtrl: AlertController) {
    platform.ready().then(() = >{
        // Okay, so the platform is ready and our plugins are available.
        // Here you can do any higher level native things you might need
        // 注册返回键事件监听
       ...

Ionic3使用sweetalert插件在ios设备下无法显示的解决方法

  • Jason.z
  • 2018-07-30 05:24:11

我的项目里一直使用 sweetalert 插件。

但是有一天,不知道是升级了ioss设备的版本到ios11了, 还是升级了sweetalert的版本。

ios下sweetalert的弹出框就无法显示了,安卓下是正常的,web下也是正常的。

于是我尝试在真机下去调试,通过css定位,发现body. swal2-iosfix 下的 top属性竟然是负值。

于是我尝试修改为:

top:0px!important

发现并无效果。,接着尝试修改其定位为静态定位:

position: static !important ,

弹出框又出现了。

当然,为了避免修改 sweetalert 的源码,我们可以在 app.scss 里直接全局定义即可。

body.swal2-iosfix {
    position: static !important;
}

Ionic3/2中如何使用subHeader副标题

  • Jason.z
  • 2018-07-30 02:04:49

 

在ionic1 中我们可以直接subheader这样的class属性来实现副标题

 

<div class="bar bar-header">
  <h1 class="title">Header</h1>
</div>

<div class="bar bar-subheader">
  <h2 class="title">Sub Header</h2>
</div>

 

而在ionic2/3中我们却找不到这样的class,如何实现呢?

 

1、使用toolbar

<ion-header>
   <ion-navbar>
        <ion-title>Header</ion-title>
   </ion-navbar>

   <ion-toolbar>
        <ion-title>Subheader</ion-title>
   </ion-toolbar>
</ion-header>

注:这个方案在安卓上会存在一些样式问题,因为安卓的表天默认是靠左的,但存在返回按钮的时候 会出现上下不对齐的问题。

 

2、使用css

<div class="bar bar-header">
  <h1 class="title">Header</h1>
</div>

<div class="bar bar-subheader">
  <h2...

Ionic-native插件photo-library无法保存图片到相册的小坑

  • Jason.z
  • 2018-07-29 16:30:52

使用photo-library插件保存图片到相册的时候,按照ionic上文档说明先使用requestAuthorization方法请求权限,然后再使用saveImage方法来保存图片即可。

 

this.photoLibrary.requestAuthorization().then(() => {

   this.photoLibrary.saveImage(this.shareImage,'水滴打卡',{}).then(()=>{

       this.toastProvider.show("保存成功","success");

       console.log("保存成功");

   }).catch((err) => {

        console.log("保存失败");

       console.log(err);

   });

}).catch((err) => {

    console.log("请求相册权限失败");

});

 

然而,当我实际放到android机器上测试后发现保存图片并没有效果,甚至也不弹出错误日志来。

没办法,我有在android...

Ionic 中使用xlink:href 报错的解决方案

  • Jason.z
  • 2018-07-28 03:48:12

在ionic/angular中使用svg提示以下错误

 

EXCEPTION: Template parse errors: Can't bind to 'xlink:href' since it isn't a known native property

html代码如下:

 

<svg role="img" class="icon">
    <use [xlink:href]="iconname"></use>
</svg>

 

出现错误的原因是是 svg没有property,所以需要绑定attribute

至于attribute和property的区别,大家可以课下去补习一下。

 

解决方案

<svg role="img" class="icon">
    <use [attr.xlink:href]="iconname"></use>
</svg>

或者

<svg role="img" class="icon">
    <use attr.xlink:href="{{iconname}}"></use>
</svg>

Ios下app重签名的原理及使用教程

  • Jason.z
  • 2018-07-27 16:49:52

场景需求

ios重签名可以把已发布/未发布的包重新签名为自己的证书和签名。

比如我这里有企业开发者账号,某用户想把他们的更改为企业包进行分发,那么就可以通过重签名的方式把他们现有的ipa包替换为企业证书的包,这中间也不需要提供p12或描述文件,就可以完成包的转化。

ios重新签名的核心原理是使用 codesign 命令,当然也许完成一些额外的操作。

大致流程

1、解压ipa

unzip appstore.ipa

2、删除旧的签名

rm -rf Payload/appstore.app/_CodeSignature

3、复制新的描述文件

mv inhouse.mobileprovision Payload/appstore.app/embedded.mobileprovision

4、用新的证书签名

/usr/bin/codesign -f -s "iPhone Distribution: XXXXX (XXX)" --entitlements...

ideviceinstaller Could not connect to lockdownd错误解决方法

  • Jason.z
  • 2018-07-27 11:57:20

使用ideviceinstaller安装ipa

deviceinstaller -i xxx.ipa

得到以下错误提示:

Could not connect to lockdownd. Exiting

解决方案:


brew uninstall ideviceinstaller

brew uninstall libimobiledevice

brew install --HEAD libimobiledevice

brew link --overwrite libimobiledevice

brew install --HEAD&nbsp; ideviceinstaller

brew link --overwrite ideviceinstaller

sudo chmod -R 777 /var/db/lockdown/

 

相关issue:https://github.com/libimobiledevice/ideviceinstaller/issues/48

ionic获取ios唯一设备id的解决方案

  • Jason.z
  • 2018-07-23 04:20:13

经常有朋友来问这个问题。

每次都去解释这个问题也浪费不少时间,

所以还是开一篇文章,

把这个问题说清楚吧。

 

先纠正一个误区吧:

有同学可以通过ionic natvie的device插件获取。

我们在文档里可以找到有serial这个属性。

 

通过这个属性,我们的确获取到一串字符串。

但是我们也会发现,当我们卸载app之后,这串数值会变,所以这个不能作为我们的唯一设备id。

 

回归到ios。

我们列举一下可以想到的办法。

ios获取设备id的方法

UUID...

准备写一个ionic3的中文系列教程

  • Jason.z
  • 2018-06-22 08:37:24
...

苹果开发者帐号安全问题遗忘的解决办法

  • Jason.z
  • 2018-05-14 03:49:02

最近苹果开发者后台登录之后都会提示需要补充APPID帐号的手机号信息。

 

The Apple Developer Program License Agreement has been updated.
In order to access certain membership resources, you must accept the latest license agreement. First, you’ll need to update the mobile phone number associated with your Apple ID. Your mobile phone number must be based in your country/region. Edit this number in the Account section of appleid.apple.com, and return to your developer account to...