SlideShare a Scribd company logo
1 of 10
AzureとXamarin.Formsでプッシュ通知
第7回 Tokyo Jazug Night 2017.07.25
株式会社ケイ・ジェイ・システムズ
藤森 智
自己紹介
名前:藤森 智(ふじもり さとる)
所属:株式会社ケイ・ジェイ・システムズ
• Xamarin&Azure関係
• 古典データの検索サービス
• DTPや電子書籍などのドキュメント生成をクラウドでおこなうなどの開発支援
• WinForms/PHP/MySQL/C++等のレガシーをXamarin&Azureに随時移行中
趣味:料理
• ひたすら刻む or ひたすら包む
• 「レシピもサンプルコードも三回作れば(書けば)自分のもの」
Twitter:@masatoru
Blog:http://masatoru.hatenadiary.jp/
Azureの通知ハブを使ったプッシュ通知の仕組み
プッシュ通知の実装手順(iOSの場合)
https://is.gd/FStVJm
Azureの設定
• 通知ハブを構成する
Xcodeでの設定
• Bundle Identifierの作成
アプリケーションIDの登録
• developer.apple.com/account
証明書要求(CSR)の作成(Mac)
• 作成→クライアントへ登録
SSL証明書の作成
• 作成→ダウンロード→クライアントへ登録
Azureの設定(その2)
• APNSの登録
バックエンドの実装
• 接続文字列、通知ハブの名前・名前空間
• Notification Hubへ接続
• 通知ハブへメッセージを送信
クライアント側の設定
• Visual Studio For Mac
クライアント側の実装
• RegisteredForRemoteNotificationsメソッド
(デバイスを通知ハブへ登録する)
• DidReceiveRemoteNotificationメソッド
(メッセージを受信する)
“たった”これだけ。
はまりどころ
Xamarin.Formsにプッシュ通知を追加する(Mobile Appsドキュメント)
https://is.gd/F7ygRT
public override void RegisteredForRemoteNotifications(UIApplication application,NSData deviceToken){
const string templateBodyAPNS = "{"aps":{"alert":"$(messageParam)"}}";
JObject templates = new JObject();
templates["genericMessage"] = new JObject {
{"body", templateBodyAPNS}};
// Register for push with your mobile app
Push push = TodoItemManager.DefaultManager.CurrentClient.GetPush();
push.RegisterAsync(deviceToken, templates);
}
→がしかし、動作
しないことがある
MobileServiceClientクラス
…AppServiceのURLのみで通知
ハブ情報は設定しない
App Serviceのプッシュ通知のバグらしい
https://is.gd/nlmpAK
回避策その1
App Serviceの設定を変更する
(旧式のプッシュを使う)
https://is.gd/3sJTYI
従来の方法を使えと
ある ↓
回避策その2
Xamarinネイティブ(下記はXamarin.iOS)の方法を使う https://is.gd/FStVJm
public override void RegisteredForRemoteNotifications(UIApplication application, NSData deviceToken) {
// 通知ハブへ接続する
var cs = SBConnectionString.CreateListenAccess(new NSUrl(通知ハブのエンドポイント),
通知ハブのアクセスキー);
var hub = new SBNotificationHub(cs, 通知ハブのハブ名); // 通知ハブにデバイスを登録する
hub.RegisterNativeAsync(deviceToken, null, err => {
//エラー処理
…
通知ハブのエンドポイント App Service→Notification Hub→[アクセスポリ
シー]→[接続文字列]のEndPoint=の部分
通知ハブのアクセスキー Notification Hub→[アクセスポリシー]→[接続文字列]
のSharedAccessKey=の部分
通知ハブのハブ名 Notification Hub→[プロパティ]→[名前
まとめ
Xamarin.Formsでのプッシュの実装は(現時点では)Mobile App SDKのプッシュ通知
機能は使わない方がよい(感じ)
• 代替え案として、AppServiceの旧方式、またはXamarinネイティブの方法を使う
(参考)
• 最新のAzure Mobile Apps .NET SDK http://bit.ly/2gYuT9X
• aka.ms/zumobook Chapter5 Push Notification https://is.gd/SvlnNO
MSの日本語版だけでなく英語版やXamarinのドキュメントも見よう
• Mobile Apps SDKのドキュメントには FailedToRegisterForRemoteNotifications の記載がない
• Xamarinガイド https://is.gd/cEq4OF
Xamarin.Formsの資料だけでなくXamarin.iOS, Xamarin.Androidの資料も見よう
• Xamarin.Formsだからといってネイティブから逃げない
ご清聴ありがとうございました。

More Related Content

What's hot

20130406 awsのいろんな使い道@jawsug名古屋
20130406 awsのいろんな使い道@jawsug名古屋20130406 awsのいろんな使い道@jawsug名古屋
20130406 awsのいろんな使い道@jawsug名古屋
Serverworks Co.,Ltd.
 
20150207 サービス紹介編 Amazon Simple Queue Service (SQS)
20150207 サービス紹介編 Amazon Simple Queue Service (SQS)20150207 サービス紹介編 Amazon Simple Queue Service (SQS)
20150207 サービス紹介編 Amazon Simple Queue Service (SQS)
Koichiro Nishijima
 
エンプラはつらいよ~クラウド提案時に気を付けるポイント~
エンプラはつらいよ~クラウド提案時に気を付けるポイント~エンプラはつらいよ~クラウド提案時に気を付けるポイント~
エンプラはつらいよ~クラウド提案時に気を付けるポイント~
normalian
 

What's hot (19)

現実的な「WordPress on Azure App Service」 クイックスタート
現実的な「WordPress on Azure App Service」 クイックスタート現実的な「WordPress on Azure App Service」 クイックスタート
現実的な「WordPress on Azure App Service」 クイックスタート
 
Face APIで開発する時に使っている7つの道具
Face APIで開発する時に使っている7つの道具Face APIで開発する時に使っている7つの道具
Face APIで開発する時に使っている7つの道具
 
azure botserviceをもっと身近に
azure botserviceをもっと身近にazure botserviceをもっと身近に
azure botserviceをもっと身近に
 
Test
TestTest
Test
 
Azure Functionsを業務利用する時の勘所
Azure Functionsを業務利用する時の勘所Azure Functionsを業務利用する時の勘所
Azure Functionsを業務利用する時の勘所
 
20130406 awsのいろんな使い道@jawsug名古屋
20130406 awsのいろんな使い道@jawsug名古屋20130406 awsのいろんな使い道@jawsug名古屋
20130406 awsのいろんな使い道@jawsug名古屋
 
Azure Appservice WebAppsでWordPressサイトを構築すると 運用が劇的にラクになる話
Azure Appservice WebAppsでWordPressサイトを構築すると運用が劇的にラクになる話Azure Appservice WebAppsでWordPressサイトを構築すると運用が劇的にラクになる話
Azure Appservice WebAppsでWordPressサイトを構築すると 運用が劇的にラクになる話
 
Azure使いから見たAWSの良いところ
Azure使いから見たAWSの良いところAzure使いから見たAWSの良いところ
Azure使いから見たAWSの良いところ
 
案件規模で使い分けよう!Microsoft Azure×WordPressの話
案件規模で使い分けよう!Microsoft Azure×WordPressの話案件規模で使い分けよう!Microsoft Azure×WordPressの話
案件規模で使い分けよう!Microsoft Azure×WordPressの話
 
JAWS DAYS 2014 ACEに聞け! S3
JAWS DAYS 2014 ACEに聞け! S3JAWS DAYS 2014 ACEに聞け! S3
JAWS DAYS 2014 ACEに聞け! S3
 
お得に手軽に♪試してみよう!サーバーレスアーキテクチャ ~Azure Functions / Logic Apps~
お得に手軽に♪試してみよう!サーバーレスアーキテクチャ ~Azure Functions / Logic Apps~お得に手軽に♪試してみよう!サーバーレスアーキテクチャ ~Azure Functions / Logic Apps~
お得に手軽に♪試してみよう!サーバーレスアーキテクチャ ~Azure Functions / Logic Apps~
 
Azure appservice で作るwordpress-サイト
Azure appservice で作るwordpress-サイトAzure appservice で作るwordpress-サイト
Azure appservice で作るwordpress-サイト
 
20150207 サービス紹介編 Amazon Simple Queue Service (SQS)
20150207 サービス紹介編 Amazon Simple Queue Service (SQS)20150207 サービス紹介編 Amazon Simple Queue Service (SQS)
20150207 サービス紹介編 Amazon Simple Queue Service (SQS)
 
簡単・お手軽!ノンプログラミングで便利BOTを作ってみた話
簡単・お手軽!ノンプログラミングで便利BOTを作ってみた話簡単・お手軽!ノンプログラミングで便利BOTを作ってみた話
簡単・お手軽!ノンプログラミングで便利BOTを作ってみた話
 
エンプラはつらいよ~クラウド提案時に気を付けるポイント~
エンプラはつらいよ~クラウド提案時に気を付けるポイント~エンプラはつらいよ~クラウド提案時に気を付けるポイント~
エンプラはつらいよ~クラウド提案時に気を付けるポイント~
 
Web制作的に便利な機能満載!Microsoft Azureを使ってみよう
Web制作的に便利な機能満載!Microsoft Azureを使ってみようWeb制作的に便利な機能満載!Microsoft Azureを使ってみよう
Web制作的に便利な機能満載!Microsoft Azureを使ってみよう
 
Try micronaut
Try micronautTry micronaut
Try micronaut
 
Microsoft Azure WebAppsで ECサイトを構築してみた話 ~EC-CUBE3で試してみました~
Microsoft Azure WebAppsでECサイトを構築してみた話 ~EC-CUBE3で試してみました~Microsoft Azure WebAppsでECサイトを構築してみた話 ~EC-CUBE3で試してみました~
Microsoft Azure WebAppsで ECサイトを構築してみた話 ~EC-CUBE3で試してみました~
 
JAWSUG architecture-crowler
JAWSUG architecture-crowlerJAWSUG architecture-crowler
JAWSUG architecture-crowler
 

Similar to AzureとXamarin.Formsでプッシュ通知

第3回岡山PHP勉強会
第3回岡山PHP勉強会第3回岡山PHP勉強会
第3回岡山PHP勉強会
Masaki Takeda
 
20121221 AWS re:Invent 凱旋報告
20121221 AWS re:Invent 凱旋報告20121221 AWS re:Invent 凱旋報告
20121221 AWS re:Invent 凱旋報告
真吾 吉田
 
初心者がハマったWindows Azureの基礎の基礎
初心者がハマったWindows Azureの基礎の基礎初心者がハマったWindows Azureの基礎の基礎
初心者がハマったWindows Azureの基礎の基礎
Saori Ando
 

Similar to AzureとXamarin.Formsでプッシュ通知 (20)

DocumentDBクイックスタート(開発現場編)
DocumentDBクイックスタート(開発現場編)DocumentDBクイックスタート(開発現場編)
DocumentDBクイックスタート(開発現場編)
 
Azure Fundamental
Azure FundamentalAzure Fundamental
Azure Fundamental
 
Jazug福島 azure vm_20150404
Jazug福島 azure vm_20150404Jazug福島 azure vm_20150404
Jazug福島 azure vm_20150404
 
XamarinでAzure AD認証 (リフレッシュトークン対応)
XamarinでAzure AD認証 (リフレッシュトークン対応)XamarinでAzure AD認証 (リフレッシュトークン対応)
XamarinでAzure AD認証 (リフレッシュトークン対応)
 
Azure vmの建て方
Azure vmの建て方Azure vmの建て方
Azure vmの建て方
 
Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス
Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップスScraping withawsAWSを利用してスクレイピングの悩みを解決するチップス
Scraping withawsAWSを利用してスクレイピングの悩みを解決するチップス
 
2012年02月 CloudDays 上司を説得してAWS利用をOKさせる3つのポイント
2012年02月 CloudDays 上司を説得してAWS利用をOKさせる3つのポイント2012年02月 CloudDays 上司を説得してAWS利用をOKさせる3つのポイント
2012年02月 CloudDays 上司を説得してAWS利用をOKさせる3つのポイント
 
2011年11月 JAWS-UG「上司を説得してAWSを使わせる3つのポイント」
2011年11月 JAWS-UG「上司を説得してAWSを使わせる3つのポイント」2011年11月 JAWS-UG「上司を説得してAWSを使わせる3つのポイント」
2011年11月 JAWS-UG「上司を説得してAWSを使わせる3つのポイント」
 
[DO13] 楽天のクラウドストレージ使いこなし術 Azure と OSS で少しずつ進めるレガシー脱却
[DO13] 楽天のクラウドストレージ使いこなし術 Azure と OSS で少しずつ進めるレガシー脱却[DO13] 楽天のクラウドストレージ使いこなし術 Azure と OSS で少しずつ進めるレガシー脱却
[DO13] 楽天のクラウドストレージ使いこなし術 Azure と OSS で少しずつ進めるレガシー脱却
 
60分でわかった気になるMicrosoft Azure
60分でわかった気になるMicrosoft Azure60分でわかった気になるMicrosoft Azure
60分でわかった気になるMicrosoft Azure
 
2014年09月 上司説得メソッド2014年版
2014年09月 上司説得メソッド2014年版2014年09月 上司説得メソッド2014年版
2014年09月 上司説得メソッド2014年版
 
第3回岡山PHP勉強会
第3回岡山PHP勉強会第3回岡山PHP勉強会
第3回岡山PHP勉強会
 
20140829 山形でJAWS-UGをやって困った2つのこと
20140829 山形でJAWS-UGをやって困った2つのこと20140829 山形でJAWS-UGをやって困った2つのこと
20140829 山形でJAWS-UGをやって困った2つのこと
 
JAWS-UG Nagoya 20130406 物体認識システムを支えるAWS
JAWS-UG Nagoya 20130406 物体認識システムを支えるAWSJAWS-UG Nagoya 20130406 物体認識システムを支えるAWS
JAWS-UG Nagoya 20130406 物体認識システムを支えるAWS
 
20130316 JAWS DAYS 美人CDP+
20130316 JAWS DAYS 美人CDP+20130316 JAWS DAYS 美人CDP+
20130316 JAWS DAYS 美人CDP+
 
Chainer x Azure Machine Learning service - Hackathon
Chainer x Azure Machine Learning service - HackathonChainer x Azure Machine Learning service - Hackathon
Chainer x Azure Machine Learning service - Hackathon
 
20121221 AWS re:Invent 凱旋報告
20121221 AWS re:Invent 凱旋報告20121221 AWS re:Invent 凱旋報告
20121221 AWS re:Invent 凱旋報告
 
初心者がハマったWindows Azureの基礎の基礎
初心者がハマったWindows Azureの基礎の基礎初心者がハマったWindows Azureの基礎の基礎
初心者がハマったWindows Azureの基礎の基礎
 
[日本DCの本命、大阪でWindows Azureを愛でる会] Windows Azure 概要 & 最新情報
[日本DCの本命、大阪でWindows Azureを愛でる会] Windows Azure 概要 & 最新情報[日本DCの本命、大阪でWindows Azureを愛でる会] Windows Azure 概要 & 最新情報
[日本DCの本命、大阪でWindows Azureを愛でる会] Windows Azure 概要 & 最新情報
 
社内の遊休PCをAzurePipelinesでCICDに活用しよう
社内の遊休PCをAzurePipelinesでCICDに活用しよう社内の遊休PCをAzurePipelinesでCICDに活用しよう
社内の遊休PCをAzurePipelinesでCICDに活用しよう
 

More from Satoru Fujimori (6)

System.Drawing 周りの話
System.Drawing 周りの話System.Drawing 周りの話
System.Drawing 周りの話
 
Thinking the best practice of WebAPI with Azure AD For Xamarin.Forms
Thinking the best practice of WebAPI with Azure AD For Xamarin.FormsThinking the best practice of WebAPI with Azure AD For Xamarin.Forms
Thinking the best practice of WebAPI with Azure AD For Xamarin.Forms
 
Using App Center Auth & Data
Using App Center Auth & DataUsing App Center Auth & Data
Using App Center Auth & Data
 
AppCenter
AppCenterAppCenter
AppCenter
 
Xamarin.Formsで縦書きアプリ
Xamarin.Formsで縦書きアプリXamarin.Formsで縦書きアプリ
Xamarin.Formsで縦書きアプリ
 
Xmlrpcと品詞分解
Xmlrpcと品詞分解Xmlrpcと品詞分解
Xmlrpcと品詞分解
 

AzureとXamarin.Formsでプッシュ通知