スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Infinite Scrollプラグインで次のページが連番で振られて無い時のページングの仕方

FacebookのGraph APIを使って、Infinite Scrollプラグインで無限スクロールのページを作成してたところ、Graph APIの次のページへのリンクが連番で振られて無くて、Infinite Scrollブラグインのページングがうまく出来なかった。
デフォルトだと、URLの中から数値を見つけて、勝手に数値のところをインクリメントしてくれるらしい。

https://graph.facebook.com/v2.10/012345678/photos?access_token=xxxxxx&after=abcde
みたいなURLが
https://graph.facebook.com/v3.10/012345678/photos?access_token=xxxxxx&after=abcde
になっていた。

オプションで path が関数で指定出来るので、それを使う。
(今回はrubyでサーバー側は実装)

ruby
def photos
begin
if params[:page]
@photos = Koala::Facebook::API.new(access_token).get_page(params[:page])
else
@photos = Koala::Facebook::API.new(access_token).get_connections(params[:album_id], 'photos', {
local: 'ja-jp',
fields: ['album', 'picture', 'name', 'images']
})
end
rescue => e
logger.error "#{__method__} !! Failed to get photos !! #{e}"
end
if params[:page].present?
render partial: 'partials/photo_lists', locals: {photos: @photos}
end
end

def access_token
# access_tokenを取得する
end

html
<div class="container">
<%= render partial: 'photo_lists', locals: {photos: @photos} %>
</div>

_photo_lists
<div class="item">
<% photos.each do |photo| %>
<%= image_path(photo['picture']) %>
<% end %>
<nav class="pagination">
<%= link_to 'Next', url_for(:page => photos.next_page_params), rel: 'next' if photos.next_page %>
</nav>
</div>

javascript
$('.container').infinitescroll({
navSelector: 'nav.pagination',
nextSelector: 'nav.pagination a[rel=next]',
itemSelector: '.item',
path: function(page) {
console.log("page:" + page); // <- 次のページが入ってくる
return $('.container .pagination').eq(page - 2).find('a').attr('href');
},
});


2ページ目以降も、返却させるpartialの中にページング情報も入れておいて、Infinite Scrollのオプションのpathで、そのpartialの中のリンク先を設定させるのがポイント。

参考サイト
https://github.com/arsduo/koala/wiki/Graph-API
コンテンツを自動的に読み込んで無限スクロールさせる方法
スポンサーサイト

Xcode 8.3 でビルドした時に “The following binaries use incompatible versions of Swift:” のエラーが発生

Xcode 8.3.3 でビルドした時に “The following binaries use incompatible versions of Swift:” のエラーが発生したので、その対処法をメモ。

swift2 から swift3のソースにした関係で、同じプロジェクト上にswift2とswift3が混在してるからダメだったみたい。
下記を試したら治った。


  1. "Product - Clean" で、プロジェクトをクリーン

  2. Xcodeを閉じる

  3. derived dataを削除
    derived dateの場所は Xcode -> Preferences -> Locations にDerived Dataと記載があるので、そこのパスにいく。
    そこに"プロジェクト名 + ランダムな英数字"のディレクトリがあるので、それを丸ごと削除する

  4. Xcodeを再度立ち上げる



参考サイト
Mixing SWIF 2.3 and SWIFT in same project
Xcode 8 beta 4: Build fails with “The following binaries use incompatible versions of Swift:” error

nginx + unicorn + rails でファイルアップロード出来ない

nginx + unicorn + rails でファイルアップロード出来ない事象に出くわした。
CarrierWaveを使っていたので、それ関連かなと思ったが、
railsのエラーログも何も出ていなく、戸惑ったがnginxのエラーログを見てみると下記のエラーが。
[crit] 7192#0: *24 open() "/var/lib/nginx/tmp/client_body/0000000002" failed (13: Permission denied), client: xxx.xxx.xxx.xxx, server: test.com, request: "POST /tests HTTP/1.1", host: "test.com", referrer: "https://test.com/tests/new"
原因は、/etc/nginx/nginx.conf で nginxを動かしているユーザーを変更していたため。
chown -R nginxを動かしているユーザー /var/lib/nginx
でownerを変更してあげればOK.

参考サイト
nginxからWebブラウザへのファイル送信が途中で中断してしまう問題 → 解決
nginxの/var/lib/nginx/tmp/fastcgi/でPermission deniedになる

iTunesConnectにアップロードする時に「No. app bundles found in the package」エラーが発生した

iTunesConnectにアップロードする時に「No. app bundles found in the package」エラーが発生したので、その対象方法のメモ。

原因は、macOS Sierra で Xcode 7 でビルドしたのをアップロードすると起きるらしい。
Xcode を最新にして、ビルドすればなんの問題も起きないが、swiftのバージョン変わったりでなかなかサクッとは出来ないので、Xcode 7でビルドしたものをアップする方法。

まずは、Xcode7 でビルド(アーカイブ)する。
そして、Xcode8などの最新のXcodeでそれをアップロードすればOK。

参考サイト
macOS Sierra x Xcode 7 で AppStore に Submit できない問題にぶち当たった話
xcode 7.3.1 ERROR ITMS - 90167 No. app bundles found in the package
Xcodeの複数バージョンを共存

Androidで課金のテストをするための準備

毎度忘れて検索しているのでメモ。

  • アプリをβ版で公開しないとテストはできない。
  • アプリを公開した後は同一バージョン番号のapkは登録できない
  • 開発者アカウントではテストできない。
  • テストで使われるのは最初に登録したアカウントのみ
  • 追加登録したアカウントをテストで使うには、端末の初期化が必要
  • テストアカウントを登録しても、すぐには反映されない
  • テスターの登録は2箇所。
    ・google play developer consoleの、設定 - アカウント詳細の「テスト用のアクセス権がある Gmail アカウント」
    ・google play developer consoleの、リリースの管理 - ベータ版 - テスターの管理にGmailアカウンが含まれている

テスターだけに登録すれば、ベータ版はインストール出来るけど、課金のテストがテスト注文にいつもならなくて本当に買いそうになっている・・・
「テスト用のアクセス権がある Gmail アカウント」も忘れずに。

参考サイト
Google Playで課金テストをするときに、テストアカウントが認識されない
アプリ内課金の実機テストのワナ

プロフィール

U2K

Author:U2K
いろいろプログラムに関しての覚え書きをちょくちょくと書いていきます。

オススメ










オススメ

忍者AdMax

u2k on Twitter

最近の記事


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。