SSブログ

[プッシュ通知]ニフティクラウドmobile backend を使ってみた

scrpush1.PNG
プッシュ通知を全て自分で実装しようとするとかなり大変。

プッシュ通知用のサーバが必要なので、
自前のサーバがない場合、MySQL付きのレンタルサーバを借りて、テーブル作って、DBにユーザ情報を登録するPHPファイルを準備したり何やら。。

サーバ側の処理を全てしてくれるサービスは幾つかあり、
「ニフティクラウドmobile backend」はそ1つ。(以下、ニフティmBaaSと略す)
つまずいて実装に2日掛かりましたが、めーーーっちゃ楽です。
http://mb.cloud.nifty.com/

無料のBasicプランでもAPIリクエスト・プッシュ通知が200万回/月利用でき、基本ストレージも5GB使用可能。
scrpc1.png


【大まかな流れ】
・iOS dev centerでプロバイダ証明書、プロビジョニングプロファイル作成
 ⇒プロバイダ証明書は(*.cer)→(*.p12)に変換
・ニフティmBaaSの管理コンソールにアプリ追加、プッシュ通知許可、プロバイダ証明書(*.p12)登録
・XcodeのプロジェクトにニフティmBaaSのSDK、Framework、コード追加
 ⇒Bundle ID、プロビジョニングプロファイルは設定しとく
・Macに端末をつないでアプリ実行、プッシュ通知を許可してデバイストーク発行
・ニフティmBaaSの管理コンソールで端末の登録を確認、プッシュ通知を実行

scrpush2.PNG

(参考)
http://mb.cloud.nifty.com/doc/quickstart_ios.html
http://www.lancork.net/2013/10/ios-push-with-nifty-mobile-backend/



★つまずいた所1★
プロバイダ証明書(p12)作成の際、証明書と秘密鍵の両方選択して書き出すと、
管理画面でプッシュ通知すると、「配信エラー」になる。
サポートに問い合わせて解決した↓↓↓
========================================================
●証明書(p12)作成時の注意事項
 ・書き出す際にパスワードを設定しないでください
 ・書き出す際は証明書のみを選択してください
   →証明書に紐付く秘密鍵を選択する必要はありません
========================================================


★つまずいた所2★
iPhone5(ios6.x)でプッシュ通知のテストをしたら、狂った様にサウンドが鳴った(10回くらい)
マナーモードにしてても狂った様にバイブが鳴った(10回くらい)
コードを変更して通知タイプをアラートだけにしたら解決した。

AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
<<変更前>>
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];

<<変更後>>
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert)];



★つまずいた所3★
ビルドするとエラーが出る
ーーーーーーーーーーーーーーーーーーーーーーーーーーー
Undefined symbols for architecture armv7:
"_OBJC_CLASS_$_CLLocationManager", referenced from:
objc-class-ref in NCMB(NCMBGeoPoint.o)
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
ーーーーーーーーーーーーーーーーーーーーーーーーーーー
手順にはないけど、CoreLocation.framework を追加したら解決。


★つまずいた所4★
ビルドするとエラーが出る
ーーーーーーーーーーーーーーーーーーーーーーーーーーー
Undefined symbols for architecture armv7s:
"_OBJC_CLASS_$_FBAccessTokenData", referenced from:
objc-class-ref in NCMB(NCMBFacebookUtils.o)
"_OBJC_CLASS_$_FBRequest", referenced from:
objc-class-ref in NCMB(NCMBFacebookUtils.o)
"_OBJC_CLASS_$_FBSession", referenced from:
objc-class-ref in NCMB(NCMBFacebookUtils.o)
ld: symbol(s) not found for architecture armv7s
clang: error: linker command failed with exit code 1 (use -v to see invocation)
ーーーーーーーーーーーーーーーーーーーーーーーーーーー
Build Settings >Linking >Other Linker Flagsに「-all_load」や「-ObjC」が設定されていると出るエラー(Facebook SDKの追加が必要)
確かadmob広告用に「-ObjC」を設定してた。
「-ObjC」を消すとアプリが落ちる。。
今回はadmob広告を削除した。。。
nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。